Page MenuHomePhabricator

[iOS] Onboarding: Interests Selection
Closed, ResolvedPublic1 Estimated Story Points

Description

Background

Once users have moved past the intro screens, they should be given the opportunity to select topics and articles they care about. This task covers the "Follow your curiosity" and "What are you interested in?" screens where users can browse categories, filter article cards, and select individual articles to personalize their feed.

User Story

As a new user, I want to select topics and articles I care about during onboarding, so that my explore feed is personalized to my interests from the start.

Requirements

  • When users proceed from the privacy screen, users should be introduced the concept of personalization with emphasis on collecting minimal data with the "Follow your curiosity" screen. Users can choose to skip personalization which lands them into the community feed. Alternatively users can move forward through the next step of onboarding which will be to personalize their feed.
  • Users should be presented with a set of topic/category chips and a masonry grid of article cards they can browse related to that category.
  • Before any selections are made, Article cards should be the same as what's shown in discover when someone selects "Let me choose based on my interests" (Confer with Android engineers for Logic)
  • It's acceptable to have a maximum of 25 articles that load.
  • Topic chips list should match Android, and all existing translations are available from the growth topics integration
  • Selecting a topic chip should show a random assortment of article cards relevant articles to that topic into the article section
  • Upon selection of a new or additional topic, articles related to that topic replace all previous articles on the screen. Any previously selected articles remain on screen with a highlighted state
  • Selecting a topic chip or article will allow them to see articles relate to that topic/article in the "For you" tab later on
  • Users should be able to tap individual article cards to select them. Selected articles should be visually indicated within their topic and a counter at the bottom should reflect the number of selections.
  • Users should be able to search for a specific article using the search bar to add to their selected articles list (they have multiple languages. They should be able to access their languages and search from this view)
  • Do not allow non-mainspace articles to be added: If a user attempts to add an interest article that is a non-Mainspace article, show a toast/error that says, "Only articles in the main namespace can be added as interests."
  • Users can skip this step entirely, which should land them in the community feed. Alternatively, they can proceed to the next onboarding step with or without selections.
  • If users fail to select interests and they have not read at least 5 articles, then they should see an "empty state" version of their For You tab. A separate ticket will be created to cover the Empty State version of the For You feed
  • If a user abandons the flow after having made selections but not completing onboarding, apply the selections to their feed upon next open of the app
  • [Moved to separate task] Sort articles chips by those with images at the top, article chips without images at bottom. (Android sorts by imageUrl)
  • [Moved to separate task] Filter out disambiguation pages from the article suggestions

Nice to have

Add a language drop-down selector to the onboarding screen so that users can easily change what language they're doing the Topic search within

  • Upon changing the drop down: topics stay consistent (keep existing topic selections)
  • Articles shown under topics update to selected language (keep existing article selections)

Design Link

• Follow your curiosity Figma link →
• Initial state of the screen: nothing selected Figma link →
• 1 category selected (example) Figma link →
• 1 individual article within a category selected (example) Figma link →
• Another category selected (example) Figma link →

Interaction video - personalization: https://drive.google.com/file/d/1P2t3Z7-8YDH_6y33NvH1LMja5VwA6eu0/view?usp=drive_link

Android task for reference

https://phabricator.wikimedia.org/T418770
https://phabricator.wikimedia.org/T427296

Toni Handoff Notes

Based on progress at PR https://github.com/wikimedia/wikipedia-ios/pull/5995

Just going to note the things that were not done as opposed to the things that were done. I build this screen to be pushed on from the Home Settings view, so it is NOT yet a part of any onboarding flow. Any reference to the onboarding flow in this task description still needs to be done.

Interests selections view is built in WMFHomeFeedInterestsSettingsView and can be reached through Home Settings. Note all UI is stub, it will need to be improved upon to match Figma, tested for dynamic type, theming, layout on iPad, rotation, etc. UI was generated so we should double-check that it matches our patterns (WMFFont, WMFLocalizedString, etc.). Voice Over should be tested and improved.

Topic chips list should match Android, and all existing translations are available from the growth topics integration

My understanding is topic display text are native translations, so we will need to find away to export the native topic translations from Android and import them into iOS.

Users should be able to search for a specific article using the search bar to add to their selected articles list (they have multiple languages. They should be able to access their languages and search from this view)

None of this was worked on, Search will need to be added to WMFHomeFeedInterestsSettingsView. It may be worth trying to bring in https://github.com/wikimedia/wikipedia-ios/pull/5636, since a rewritten Search in SwiftUI and WMFComponents would be easier to integrate on this view as it is now.

Do not allow non-mainspace articles to be added: If a user attempts to add an interest article that is a non-Mainspace article, show a toast/error that says, "Only articles in the main namespace can be added as interests."

This still needs to be done.

Event Timeline

HNordeenWMF triaged this task as Medium priority.
HNordeenWMF moved this task from Backlog to P1 (Next Sprint) on the Explore Feed Refresh iOS board.
Mazevedo renamed this task from Onboarding: Interests Selection to [L] Onboarding: Interests Selection.Jun 29 2026, 1:38 PM
Mazevedo updated the task description. (Show Details)
Mazevedo subscribed.

It could be a Medium if we have the Search screen in SwiftUI - that would be a separate task. The current Search view is hard to integrate into SwiftUI

Mazevedo renamed this task from [L] Onboarding: Interests Selection to Onboarding: Interests Selection.Jun 29 2026, 1:44 PM
Mazevedo set the point value for this task to 5.
Seddon renamed this task from Onboarding: Interests Selection to [iOS] Onboarding: Interests Selection.Jul 2 2026, 1:13 PM
HNordeenWMF raised the priority of this task from Medium to High.Jul 13 2026, 2:50 PM

Test notes

Available in 8.3.0 (6110) and newer builds

Fresh install the app.
In dev settings, enable Home Feed and Always Show New Onboarding.
Quit the app in the background and reopen - with the flag on, you can repeat this step
Make sure the requirements and UI match the tickets
Go to settings -> home -> community -> what's driving your feed. You should see the topics you selected.

Note:
With the "Always Show New Onboarding" flag, you can trigger the onboarding several times in one install. Going through the onboarding more than once in the same install will display interests you selected before. This is by design, as we need to save the interests and we are reusing this component in settings.

Seddon changed the point value for this task from 5 to 1.Wed, Jul 29, 4:46 PM
Seddon set Final Story Points to 5.
ABorbaWMF subscribed.

Tested on 6141-beta-2026-08-06
Tested on:
iPhone 16, iOS 26.6
iPhone XS, iOS 26.5
iPad Air 11 inch, iPadOS 26.5.2
iPhone SE, iOS 26.5

Requirement✅❓❌Notes
When users proceed from the privacy screen, users should be introduced the concept of personalization with emphasis on collecting minimal data with the "Follow your curiosity" screen. Users can choose to skip personalization which lands them into the community feed. Alternatively users can move forward through the next step of onboarding which will be to personalize their feed.Swiping is not supported T434325
Users should be presented with a set of topic/category chips and a masonry grid of article cards they can browse related to that category.Works as expected
Before any selections are made, Article cards should be the same as what's shown in discover when someone selects "Let me choose based on my interests" (Confer with Android engineers for Logic)Works as expected
It's acceptable to have a maximum of 25 articles that load.Works as expected
Topic chips list should match Android, and all existing translations are available from the growth topics integrationNo French translation, I only tried one non-English language. Assuming tranlations are still in process
Selecting a topic chip should show a random assortment of article cards relevant articles to that topic into the article sectionWorks as expected
Upon selection of a new or additional topic, articles related to that topic replace all previous articles on the screen. Any previously selected articles remain on screen with a highlighted stateWorks as expected
Selecting a topic chip or article will allow them to see articles relate to that topic/article in the "For you" tab later onWorks as expected
Users should be able to tap individual article cards to select them. Selected articles should be visually indicated within their topic and a counter at the bottom should reflect the number of selections.Counter is at the top of the screen
Users should be able to search for a specific article using the search bar to add to their selected articles list (they have multiple languages. They should be able to access their languages and search from this view)Works as expected
Do not allow non-mainspace articles to be added: If a user attempts to add an interest article that is a non-Mainspace article, show a toast/error that says, "Only articles in the main namespace can be added as interests."Crash T434324
Users can skip this step entirely, which should land them in the community feed. Alternatively, they can proceed to the next onboarding step with or without selections.Works as expected
If users fail to select interests and they have not read at least 5 articles, then they should see an "empty state" version of their For You tab. A separate ticket will be created to cover the Empty State version of the For You feedWorks as expected
If a user abandons the flow after having made selections but not completing onboarding, apply the selections to their feed upon next open of the appWorks as expected
[Moved to separate task] Sort articles chips by those with images at the top, article chips without images at bottom. (Android sorts by imageUrl)Articles wihtout images are appearing near the top
[Moved to separate task] Filter out disambiguation pages from the article suggestionsI don't see disambiguation articles in grid, but I can search for and add them
Nice to have✅❓❌Notes
Add a language drop-down selector to the onboarding screen so that users can easily change what language they're doing the Topic search withinNo language selector
Upon changing the drop down: topics stay consistent (keep existing topic selections)No language selector
Articles shown under topics update to selected language (keep existing article selections)No language selector

@Mazevedo this is the only blocker https://phabricator.wikimedia.org/T434325, so I'll move the parent task to Signoff since it's already a separate task