Page MenuHomePhabricator

[User story] Join the challenge: Logged-in
Closed, ResolvedPublic3 Estimated Story Points

Description

User Stories

  • As a casual Wikipedia reader, I want to discover the May Reading Challenge through a prompt, so that I can opt in without feeling pressured.
  • As a new participant joining anytime in May, I want to understand the rules upfront: open 1 article per day, for 25 days, so that I can make an informed decision to join.

Requirements:

  • ✅ A user may join the challenge at any point between May 1st and May 31st inclusive
  • Joining is a one-time action: there is no re-enrollment
  • Once joined, the user is enrolled for the remainder of the challenge period
  • ✅Only logged-in users can successfully join the challenge.
  • Enrollment may be tied to the user’s device, and does not need to be synced across devices at this point

Full-page announcement

  • ✅A full-page announcement is shown to all logged-in users starting May 1st
  • Announcement is shown on ✅ Article view, ✅ Activity, or ✅ Explore, on first open of the app on or after May 1
  • ✅ Users can only see the announcement a maximum of 1 time.
  • ✅ Displays the challenge name, rules summary, prize details, widget mention, a Join CTA, and a "Learn more" CTA
  • ✅ "Learn more" leads to mediawiki page https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/25th_Birthday_Reading_Challenge
  • ✅ Dismissible: the user is not forced to join.
  • ✅ Must include a brief, plain-language statement clarifying that the only data tracked for the challenge is local data on device.
  • ✅ Full page announcement should stop showing after May 31

Widget announcement

  • ✅ After someone joins the challenge, they should see the widget announcement: it can show immediately or on next app open if they navigate away before it displays
  • "Got it" dismisses announcement
  • [Spike] Is there any way we can take people directly to the native flow for adding a Widget, OR add the widget in the background for them automatically?

Joining from Widget (State: Not enrolled )

  • ✅ The widget also renders a Join CTA for logged-in users who have not yet joined
  • ✅ Tapping "Join challenge" on the Widget:
    • Opens app with full-page announcement on top of the activity tab (Any user who has not joined the challenge yet should be eligible to see the announcement when clicking "Join" from the Widget State. They can continue to see the announcement each time they click "Join" until they join the challenge.)
    • ✅ They must tap “Join challenge” on the announcement to enroll
    • They should not see the Widget announcement after the full-page announcement since they already have it installed
  • After joining, their Widget should update to State: Enrolled but not started or State: Streak ongoing: read today depending on their reading for the day
  • ✅ Tapping anywhere on the widget (other than the CTA) opens Explore

Designs

Event Timeline

HNordeenWMF triaged this task as Medium priority.

Engineering notes:

  • WMFFeatureAnnouncing for half sheet starting point
  • Preprocessor macro for flag for widget? Put FF on announcement/etc (could build in different branch, or if we're sure it's not going on longer than a sprint)

@HNordeenWMF
[Spike] Is there any way we can take people directly to the native flow for adding a Widget, OR add the widget in the background for them automatically? - unfortunately not an option

  • If there will be multiple modals (due to another. campaign?), which one will take precedence?
GOlson-WMF set the point value for this task to 5.Mar 5 2026, 4:08 PM

This can take the same precedence as we did for Year in Review announcement.

Seddon changed the point value for this task from 5 to 3.Mar 24 2026, 5:46 PM
Seddon set Final Story Points to 5.

Developer settings now merged in Experimental build will be 8.0.0 (326).

Test steps

  1. Navigate to developer settings
  2. All the way at the bottom, you can toggle use relative dates or reset. Use relative dates allows you to pretend it's May and the challenge is ongoing, and reset pretends you haven't enrolled in the challenge, but does not reset your reading counter.
  3. With a fresh reset, if you have the widget, you can join from that (make sure it shows proper state to join for both small and medium)
  4. You can also open the app and ensure you can get the popups for both the challenge and the widget, and enroll from that announcement
SChekfa-WMF subscribed.

the widget still isn't appearing, even though i toggled the relative date setting on, and have my device set to May 2. @GOlson-WMF

what i'm seeing: https://drive.google.com/file/d/1sGZkJseaJND-jP_cXhvbVz_JhZVSVGjP/view?usp=sharing

i'm not able to see the reading challenge announcement even though i have "use relative dates" turned on within build 330, do you know why that might be? i can see the widget, though, specifically just by adding it from the home screen. @GOlson-WMF

p0 to fix post punchlist sync:

  • announcement not triggering immediately
  • announcement not opening when tapping "join challenge" on widget
  • after joining challenge and adding widget, still stuck at "join challenge" variant
  • ipad widget announcement rendering incorrectly

https://docs.google.com/spreadsheets/d/12FFRe-O1lr1lJN8Ogq-nBnKqFcyeCd2_FElvI21biFM/edit?gid=1647509121#gid=1647509121

342 should be available now while we fix this!

still seeing these bugs:

  • announcement not triggering immediately
  • announcement not opening when tapping "join challenge" on widget

unable to review the following, as i'm stuck in the "challenge not live yet" variant even when i set the date to May 2:

  • after joining challenge and adding widget, still stuck at "join challenge" variant

unable to review, since the announcement won't trigger on ipad unless I tap into it from the widget, in which case the widget announcement doesn't show up, so i'm unable to see this screen:
[ ] ipad widget announcement rendering incorrectly

@SChekfa-WMF We have adjusted the start date to May 11 in the latest builds (https://phabricator.wikimedia.org/T422419), so that could be why you aren't seeing it. Can you try changing dev settings to May 11 and test again?

@SChekfa-WMF Also for good measure, restart your device. One time my widget wasn't refreshing, and a whole device reboot fixed it. From what I read the widget refreshing can get stuck if you are aggressively reinstalling the app often. So reboot & install app, try May 11 dev setting. If you need to trigger the announcement again, use the "Clear all widget persistence" button in dev settings instead of reinstalling.

Fixes will be in main (not Experimental) TestFlight 8.1.0 (6045).

ABorbaWMF subscribed.

Working for me on 8.1.0 (6045)
Tested on:
iPhone 16, iOS 26.4.2
iPhone SE, iOS 26.4.2
iPad Air 11 inch, iPadOS 26.3.1