Page MenuHomePhabricator

[M][User story] Join the challenge: Logged-in
Closed, ResolvedPublic1 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
  • ✅ The announcement should be shown to users a maximum of 1 time
  • ✅ Displays the challenge name, rules summary, prize details, widget mention, a Join CTA, and a "Learn more" CTA
  • ✅ 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

Designs

Event Timeline

HNordeenWMF triaged this task as Medium priority.
WRai-WMF renamed this task from [User story] Join the challenge: Logged-in to [L][User story] Join the challenge: Logged-in.Mar 2 2026, 7:48 PM
WRai-WMF renamed this task from [L][User story] Join the challenge: Logged-in to [M][User story] Join the challenge: Logged-in.Mar 3 2026, 2:49 PM

Hi @HNordeenWMF

A full-page announcement is shown to all logged-in users starting May 1st

Just wanted to confirm, should the full-page announcement be open to all users and not only for logged-in users?

"Learn more" CTA

Do you have the link to the page?

[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?

There is a function for SDK 26 and above to pin a widget like below:

Screenshot_20260310_202014_One UI Home.jpg (2×1 px, 73 KB)

Our minimum SDK version is 23, do we want to proceed with this option? If so, would you be okay to provide a sentence for the unsupported version? For exampe: "Please go to the widget screen and find the Wikipedia app, then add the Reading Challenge widget to your home screen".

Thanks!

Seddon changed the point value for this task from 5 to 1.Mar 17 2026, 4:55 PM
Seddon set Final Story Points to 5.

@cooltey

Just wanted to confirm, should the full-page announcement be open to all users and not only for logged-in users?

WIth this task, it should only be visible to logged-in users. With this other task T418625, the announcement should now be seen by logged-out users too - I was trying to go iteratively in case we didn't get to everything

Here is the link (page content coming)
https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/25th_Birthday_Reading_Challenge

Our minimum SDK version is 23, do we want to proceed with this option? If so, would you be okay to provide a sentence for the unsupported version? For exampe: "Please go to the widget screen and find the Wikipedia app, then add the Reading Challenge widget to your home screen".

Yes that would be great to have at function to pin the widget. Are you imagining we show that after someone clicks "Add" on our Widget announcement? If so, I'd love if we just hid it for users where not supported.

Hi @SChekfa-WMF

The implementation is completed. Please download the APK to test. Thank you!
https://github.com/wikimedia/apps-android-wikipedia/pull/6367

Hi @SChekfa-WMF

The issues have been fixed. Please download the APK from here, and let me know if you have any questions. Thanks!
https://github.com/wikimedia/apps-android-wikipedia/pull/6367

@WRai-WMF i'm re-testing this on my phone and i have the right dates set up but tapping "join challenge" is still not working for me, is it working for you @HNordeenWMF ?

Testing Instructions
Steps to download the APK
Feature branch: https://github.com/wikimedia/apps-android-wikipedia/pull/6367
Click on "Checks" -> find "Android branch build" -> scroll down and find "Artifacts" -> Download the "app_alpha_release" file.

Seddon raised the priority of this task from Medium to High.Tue, Apr 21, 4:44 PM
ABorbaWMF subscribed.

Looks good on 50580-alpha-2026-04-21
Tested on:
Pixel 6 on Android 16
OnePlus 8 on Android 13

Testing Pre-requisites

  1. In developer settings navigate to Reading Challenge Widget Configurations
  2. Set readingChallengeStartDate to today’s date (or any date before today), and save the change to activate the challenge.
  3. Ensure the following toggles are turned off:
    • readingChallengeEnrolled
    • readingChallengeOnboardingShown
    • readingChallengeInstallPromptShown
  4. After applying the changes, restart the app to trigger and view the onboarding announcement flow.

Dev Settings Options (Explanation)

  1. readingChallengeStreak: Adjust this value to increase or decrease the streak displayed in the widget.
  2. readingChallengeEnrolled: Enable this if you want to enroll the user directly without going through the onboarding flow.
  3. readingChallengeOnboardingShown: Keep this turned off to ensure the onboarding announcement is shown.
  4. readingChallengeInstallPromptShown: Keep this turned off to display the widget installation prompt.
  5. readingChallengeLastReadDate: Modify this to simulate different reading scenarios, such as missed days or streak resets.
  6. readingChallengeStartDate: Defines the start date of the challenge. Set it to today or an earlier date and save the update.
  7. readingChallengeEndDate: Defines the end date of the challenge. Make sure to save after updating.

This would be the flow if anyone decided to join the challenge after ignoring the initial announcement, so it's a P0 Fix

Joining challenge from widget always doesn't work right away

  • Fresh install Beta (April 27)
  • Set start date to 4-11
  • Navigate around app until you see Announcement to Join
  • Close announcement
  • Install widget
  • Click "Join challenge" from Widget

What happens

  • No announcement visible on Article view
  • Annoucnement does trigger if I navigate back to Explore

Expected

  • Announcement triggers immediately anytime you press "Join challenge" on Widget

Looks good to me on 50583-r-2026-04-30
Tested on:
Pixel 6 on Android 16
OnePlus 8 on Android 13