This task is to coordinate the implementation of the reading challenge on the iOS App. Please see EPIC for background and all user stories: T416648
Requirements
- T418955: [User story] Challenge Widget
- T418950: [User story] Join the challenge: Logged-in
- T418951: [User story] Logged-out behavior
- T418952: [User story] Daily reading
- T418954: [User story] Enrolled but not started / Streak lost and can restart
- T418956: [User story] Completing / Concluding the challenge / Streak lost and cannot restart
- T418958: [User story] Widget refreshes daily (copy/illustration/color)
- T420413: [User story] Challenge not live yet
- T419307: [iOS] Instrumentation / Measurement plan for Reading Challenge
- Update dates
Nice-to-have
- T420658: [User story] Challenge completed badge in Activity
- Streak freezes {Task TBA}
- Share {Task TBA}
- Additional widget states
Widget States
- State: Challenge not live yet
- Conditions: Device date is before May 1, 2026.
- Result: Widget indicates that the challenge is not yet live.
- State: Not enrolled
- Conditions: user has not yet joined + current date is between 1-31 May.
- Result: Widget shows Join CTA, eligible for Join the challenge announcement
- State: Enrolled but not started / Streak lost and can restart
- Conditions: joined the challenge + current date is between 1-31 May + no article opened since joining challenge
- Result: Widget shows Search / Random CTAs
- State: Streak ongoing: read today
- Conditions: joined + streak of 1+ days + article already opened today
- Result: Widget shows current streak count + today's read confirmed, no CTA
- State: Streak ongoing: not yet read today
- Conditions: joined + streak of 1+ days + no article opened today
- Result: Widget shows current streak count + Widget shows Search / Random CTAs
- State: Challenge complete successfully
- Conditions: joined + streak of 25 days reached + current date on or before July 10th
- Result: Widget shows completion celebration + CTA to claim prizes
- State: Challenge concluded: incomplete / Streak lost and cannot restart
- Conditions: joined + current date after May 31st + streak of 25 days not reached
- Result: Widget shows Challenge Concluded screen, progress acknowledged
- State: Challenge concluded: No streak
- Conditions: joined + current date after May 31st + no streak of 1+ days achieved
- Result: Widget shows Challenge Concluded screen
- State: Challenge removed
- Conditions: date is after July 10.
- Result: Widget is removed from app. Baby Globe badge remains for users who applied it.
Nice to Have states:
- State: Pre-enrollment with existing Streak
- Conditions:not yet joined + has a 2+ day streak going since May 1 + current date is between 1-31 May.
- Result: Widget shows Join CTA, shows current streak running since May 1
- State: Enrolled with existing streak, not read today
- Conditions: ongoing streak since May 1 + just joined today + current date is between 1-31 May + no article opened today.
- Result: Widget motivates them to stay on a roll + active CTA to read an article
- State: Streak freeze applied
- Conditions: joined + previous day missed
- Result: Widget shows streak count preserved + freeze spent warning