Background
As part of the ongoing Navigation refresh, we plan to move the History functionality into the Search tab, and remove the "history" view from our main views (tabs).
Requirements
- Show history below search within the Search Tab
- Remove History from bottom tab bar
- History's empty state should show within Search tab if user has no history
- User must be able to clear History
- Adjust spacing of remaining elements to match Figma Do not update icons to use SF icons yet
- Must function on both iPhone and iPad
- Must function in Landscape mode
- At least the last 100 articles must be brought over for the user to see
- Entire history should be retained/cleared as before for future Year in Reviews
- Articles opened from "History" section of Search tab should be logged with an article source of History, not Search
- Recently searched should display on tap into Search
- Ensure existing instrumentation for History is transferred, and correct instrumentation is in place for sources for pageviews
- Pageviews coming from History within search should be identifiable as History (not Search)
- Pageviews coming from Search bar should be identifiable as Search
- Pageviews coming from Activity timeline should be identifiable as Activity
Nice-to-have:
- Upgrade History to Swift UI (Done in T396409)
Designs
Engineering Notes
Update: We have made initial progress on this with SwiftUI, please build off of branch feature/history-to-search. Old notes below.
We will be updating SearchViewController.swift, which is displayed in the search tab. Note that this same view controller is re-used in these places:
- Explore > search bar search,
- Editor > Insert Link search
- Editor > Edit Link search
- Article > Magnifying glass button
- Article > search bar search (in A/B test)
- In-app web view. Magnifying glass button (Profile > User Page for example)
Extra care must be taken to ensure regressions don't happen in those areas (History is embedded in search ONLY when in search tab).
Would be ideal if we can rebuild the history view in SwiftUI, then embed it's hosting controller within SearchViewController. If this proves too difficult, we can try embedded the existing HistoryViewController in SearchViewController.

