Page MenuHomePhabricator

[L] Activity tab (user story): Timeline of articles viewed
Open, HighPublic

Description

User story

As a logged-in reader of Wikipedia, I want to see a timeline of my recent reading behavior so that I retain access to reading "history", and have the ability to see my entire article history with Wikipedia in one place.

NOTE: This is replacing "History" for users, please ensure no local data is lost when folks transfer over
Requirements
  • When a user taps their articles read insight at the top, navigate them to Timeline
  • At the bottom of the activity tab display a timeline of users reading history in order by day and time with the most recent day at the top
  • Show to logged-in and logged-out users. Prompt to log-in for logged-out users will be built on separate task (T407010)
  • Tapping on an article that you've viewed takes you to that article
  • There should be sections within the timeline by day
    • Show headers for Today and Yesterday with sub-headers of the Month, Day and Year in local format
    • For all dates previously, show the header with the Month, Day, and Year in local format
    • Sections on timeline do not need be pinned to stay in view
  • Timeline can load as user scrolls to optimize for performance
    • It's acceptable to only have the most recent 1000 entries represented in the timeline
    • Show a loading spinner if it takes more than .5 seconds to load the timeline
  • If someone navigates to one of the articles from the timeline and then "Back' to Activity, it should immediately be reflected in the timeline for that day (it does not get removed from the previous day)
    • Articles should only be listed once per day if there are repeat visits on the same day
    • Articles can appear repeated on multiple days if they were visited on multiple days
  • Similar to history, this timeline should never clear out automatically.
  • On the backend, we should continue to record their entire reading history locally on device (not limited to 1000 most recent items)
  • Users can swipe to delete an item from their viewing history.
  • Empty state is being built on a separate story: T409200

Boilerplate requirements

  • Should lay out well with long translations. Truncate, wrap text, or scroll where necessary.
  • Should change colors according to multiple themes
  • Should navigate easily and have understandable accessibility labels for Voice Over
  • Should lay out well on larger font sizes. Truncate, wrap text, or scroll where necessary.

Nice to have:

  • If they navigate back to Activity immediately (1 pageview) after opening an article from Timeline, remember their scroll position
  • Long-press preview on items in Timeline with Open, Save for later, and Share (same as current "History" longpress)
Designs

https://www.figma.com/design/2ShBsmgWuzsDAeTafyKzg6/App---%3E-Activity-Tab?node-id=355-1631&t=oLmEycZgBYD4WSQE-4

Reference

Android implementation: T399767

Engineering notes

(Moved into Eng subtasks)

Testing notes

Testable in latest TestFlight 7.8.6 (white icon) build.
Use developer settings "Show Activity Tab" toggle to activate

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

@HNordeenWMF

Can you specify the swiping and long press actions logic you want on this? Easiest would be none, of course, but I know we discussed only allowing swipe to delete on article view items in the Figma and calls.

@HNordeenWMF @SChekfa-WMF Note that we will need to fetch additional data when paging upon scroll to the bottom. We think this should go quickly, but if not we may need to add a little spinner or something as we fetch the next page. Do you have particular design preferences for that?

@HNordeenWMF

If they navigate back to Activity after opening an article from Timeline, remember their scroll position

This may be a little tricky. We will ensure they aren't starting from the top as a fresh start, but depending on how much the data changes (imagine 50+ article items added to the timeline since they last visited), their data might look different on screen even if they are in the same scroll percentage. We can discuss more in planning.

Tsevener updated the task description. (Show Details)

@HNordeenWMF Are we building the empty state as a part of this task?

Screenshot 2025-10-28 at 11.00.29 AM.png (361×407 px, 17 KB)

If they navigate back to Activity after opening an article from Timeline, remember their scroll position

This may be a little tricky. We will ensure they aren't starting from the top as a fresh start, but depending on how much the data changes (imagine 50+ article items added to the timeline since they last visited), their data might look different on screen even if they are in the same scroll percentage. We can discuss more in planning.

@Tsevener this can be broken out into a separate subtask if needed, and lower priority than the main timeline. I'll move it into "nice to have".

@HNordeenWMF Are we building the empty state as a part of this task?

Since we're treating this as a sub-epic anyways, I'm updating it to be a user story. (Decoupling it from the reading one). The empty state can happen as a subtask

HNordeenWMF renamed this task from Activity Tab: Timeline of Behavior to [Sub-Epic] Activity tab Timeline of Behavior user story.Tue, Oct 28, 8:11 PM
HNordeenWMF raised the priority of this task from Medium to High.Tue, Oct 28, 8:19 PM
HNordeenWMF moved this task from Backlog to P0 (Current Sprint) on the Activity Tab on iOS board.

@HNordeenWMF @SChekfa-WMF Note that we will need to fetch additional data when paging upon scroll to the bottom. We think this should go quickly, but if not we may need to add a little spinner or something as we fetch the next page. Do you have particular design preferences for that?

A simple spinner is fine for loading the next page.

HNordeenWMF renamed this task from [Sub-Epic] Activity tab Timeline of Behavior user story to Activity tab (user story): Timeline of Behavior.Tue, Oct 28, 10:15 PM
HNordeenWMF removed a project: Epic.

Hi @HNordeenWMF, a few things:

A simple spinner is fine for loading the next page.

Can you add that to the task requirements (with an "if needed" maybe, we may find it's fast enough to not merit one).

If someone navigates to one of the articles from the timeline and then "Back' to Activity, it should immediately be reflected in the timeline for that day

Can we clarify in the description if duplicate article views should be represented on the timeline? If I tap an article in the "Yesterday", does it disappear from Yesterday and appear in Today? Or does the article appear two times in each section?

Show reading history by day
Show articles saved by day

Can we clarify the title / subtitle section format? It looks like our current History tab shows Today, Yesterday (with no further details), then day-of-week ("Saturday, October 25"). Are we still showing the day-of-week anywhere? I don't see it in the mocks.

Users can swipe to delete an item from their viewing history. No swipe actions on saved or edited items

Sounds good. Can we also be explicit in the task description if articles have long press preview + actions, and which actions should show?

HNordeenWMF renamed this task from Activity tab (user story): Timeline of Behavior to [XL] Activity tab (user story): Timeline of Behavior.Wed, Oct 29, 7:48 PM

Can we clarify the title / subtitle section format? It looks like our current History tab shows Today, Yesterday (with no further details), then day-of-week ("Saturday, October 25"). Are we still showing the day-of-week anywhere? I don't see it in the mocks.

Android just shows the date (October 27, 2025) for dates after Yesterday. I updated Requirements to match Android, @SChekfa-WMF I'll leave you a comment in Figma

Sounds good. Can we also be explicit in the task description if articles have long press preview + actions, and which actions should show?

Yes. There are no requirements for long press preview (will add into task). It is fine to have it though, if removing it would cause a lift.

A simple spinner is fine for loading the next page.

Can you add that to the task requirements (with an "if needed" maybe, we may find it's fast enough to not merit one).

Updated in task

If someone navigates to one of the articles from the timeline and then "Back' to Activity, it should immediately be reflected in the timeline for that day

Can we clarify in the description if duplicate article views should be represented on the timeline? If I tap an article in the "Yesterday", does it disappear from Yesterday and appear in Today? Or does the article appear two times in each section?

Updated in task

HNordeenWMF updated the task description. (Show Details)
HNordeenWMF updated the task description. (Show Details)

@HNordeenWMF

Referenced edits and articles read in the timeline should be clickable and take you to the same destination one would go in their reading history or contributions history

We don't have a native contributions history, but I assume tapping an edit / view changes should take you to the revision diff screen?

There's no mention of saved here, just to be clear we should say tapping a saved item takes you to the article.

@HNordeenWMF FYI I just created the empty state subtask (I missed it earlier), I will work on getting that estimated now.

@Tsevener updated! That requirement was extra, I already had the edits requirements down in "Nice to have'. I clarified the clicking behavior for Articles viewed & Saved

Show editing history by day

  • Each edit includes a “View changes” leads to diff of your edit
  • Tapping on the article title should also lead you to the diff of your edit
HNordeenWMF renamed this task from [XL] Activity tab (user story): Timeline of Behavior to [XL] Activity tab (user story): Timeline of articles viewed.Fri, Nov 7, 10:14 PM
HNordeenWMF updated the task description. (Show Details)
Tsevener renamed this task from [XL] Activity tab (user story): Timeline of articles viewed to Activity tab (user story): Timeline of articles viewed.Mon, Nov 10, 2:15 PM
Tsevener updated the task description. (Show Details)

Since this task changed to a smaller user story, I am going to close the engineering subtasks and create new ones if needed.

Tsevener renamed this task from Activity tab (user story): Timeline of articles viewed to [L] Activity tab (user story): Timeline of articles viewed.Mon, Nov 10, 6:26 PM
Tsevener updated the task description. (Show Details)
Tsevener updated the task description. (Show Details)

(Post-eng-sync) Sorry, I now realize I want to keep most subtasks. I will update their descriptions and add the new point value from eng sync.

@Tsevener I added a new requirements so we don't forget to hook up "articles read" module to Timeline once Timeline is built

  • When a user taps their articles read insight at the top, navigate them to Timeline

Blocked while subtasks are completed. Move to Design signoff once all subtasks are done.