Page MenuHomePhabricator

[XL] [Tech Debt] Replace custom navigation bar with system bar
Open, MediumPublic10 Estimated Story Points

Description

We have a legacy custom navigation bar component that provides title shrinking, fading, snapping and loading behavior across all of our features. This component is difficult to maintain, and often results in UI layout quirks that cause us to spend time investigating, then patching or ignoring. We also don’t benefit from new system navigation bar changes, causing us to either lose out on new free abilities or to put in extra effort to add the abilities in manually.

iOS 11+ navigation bar supports large titles and integrated search bars, so we may be able to recreate much (but likely not all) of this functionality out-of-the-box.

This work will pave the way for a smoother navigation restructuring that we plan to do later this year.

Engineering Notes

  • Spike: determine we should use system SwiftUI navigation behavior or UIKit. A big component of this is whether embedded UIKit scroll views communicate properly up to the SwiftUI navigation bar. If not, we will need to use UIKit, as we won't have time to rewrite all existing views with SwiftUI.
  • Deploy prototype of changes to get early feedback on design choices
  • Spike on prototype branch and answer design questions: 1. Is it possible to remove the "stickyness" of hidden navigation bars on Explore and Article? 2. Is it possible to fade out navigation bar as it hides on Explore, Article, and Saved? 3. Is it possible to add sort capability to reading lists tab? 4. Can we bring back the old horizontally scrolling languages bar on Search?

Once design is good with final prototype answers, go through each of these screens and confirm all is working as expected. Push updates / bug fixes to prototype/system-nav-bar branch.

Easiest

  • EditPreviewViewController - Remove custom navigation bar and ViewController superclass. Be sure preview still works in both the editor and image recommendations flow.
  • DescriptionHelpViewController - Remove custom navigation bar and ViewController superclass.
  • Notifications Center - Remove custom navigation bar and ViewController superclass from notifications center views (main list view and detail view). Ensure loading states and empty states look good. Navigation bar hiding upon scroll can be removed.
  • On This Day list view controller - Remove custom navigation bar and ViewController superclass from on this day list view (which is pushed on from Explore feed).
  • In the News list view controller - Remove custom navigation bar and ViewController superclass from on this day list view (which is pushed on from Explore feed).
  • SinglePageWebViewController - Remove custom navigation bar and ViewController superclass.
  • URL list view controller (ArticleURLListViewController) - Remove custom navigation bar and ViewController superclass from url list view (which is pushed on from Explore feed).
  • Location list view controller (ArticleLocationCollectionViewController) - Remove custom navigation bar and ViewController superclass from url list view (which is pushed on from Explore feed). Ensure loading and empty state look good.
  • Settings detail views - Remove custom navigation bar and ViewController superclass from settings detail views (e.g. Account, Explore feed settings, etc). Navigation bar hiding upon scroll can be removed.

Maybe difficult
Maybe difficult because this view navigates to our search view controller, which is in the final category and is one of our most reused view controllers.

  • EditLinkViewController - Remove custom navigation bar and ViewController superclass. Be sure screen still works in both talk page and editor flow.

Slightly more difficult
This is a bit harder because the navigation bar needs to hide upon scroll. This is already happening in the prototype, but we need to put in additional work to ensure it doesn't get "stuck" in a hidden state. We should listen to the scroll view content offset and ensure when it is scrolled to the top, the navigation bar is always displayed.

  • ArticleViewController - Remove custom navigation bar and ViewController superclass. Navigation bar will need to hide upon scroll.
  • RandomArticleViewController - Remove custom navigation bar and ViewController superclass. Navigation bar will need to hide upon scroll.

Harder
Harder because these screens currently lean on the custom navigation bar's underbar view and extended view. We need to break these views out of the custom navigation bar and instead insert them as normal collection view cells or collection view header cells.

  • AddArticlesToReadingListViewController - Remove custom navigation bar and ViewController superclass. Ensure empty state looks good.
  • Talk Pages - Remove custom navigation bar and ViewController superclass from talk pages classes (including coffee roll and archives screens). Ensure loading states and empty states look good.
  • Article History - Remove custom navigation bar and ViewController superclass from article history views. Ensure loading states and empty states look good.
  • Diff - Remove custom navigation bar and ViewController superclass from diff views. Ensure loading states and empty states look good.
  • Insert Media classes - Remove custom navigation bar and ViewController superclass from the Insert Media classes (flow after tapping editor > insert media button). Ensure loading states and empty states look good. Be sure screens still work in both the editor and image recommendations flows.
  • ReadingListDetailViewController - Remove custom navigation bar and ViewController superclass. Ensure empty state looks good.

Hardest
Hardest because of the design dependencies. These screens will experience the most design changes so we are saving it till the end.

Then wrap up views that need to use the large display title and search scopes:

  • History tab - Remove custom navigation bar and ViewController superclass. History will have system large title display type. Ensure empty states look good.
  • Saved tab - Remove custom navigation bar and ViewController superclass. Use UISearchController to display search bar. Use search scopes to add "All articles" and "Reading list" tabbed options. Both sets of data should now be searchable and sortable. Use system large title display type. Ensure empty states look good.
  • Places tab - Remove custom navigation bar and ViewController superclass Use UISearchController to display search bar. Use search scopes to add "Map" and "List" tabbed options. Ensure loading and and empty states look good.

These may need to be done in tandem because they heavily depend on each other:

  • Search tab - Remove custom navigation bar and ViewController superclass. Use UISearchController to display search bar. Try to add custom languages picker bar back in, if that fails lean on search scopes to display language search options. Confirm loading and empty states look good. Confirm searching from Article > search navigation button looks good. Confirm searching from Editor > Add or Edit link looks good.
  • Explore tab - Remove custom navigation bar and ViewController superclass. Use UISearchController to display search bar (note: this leans on SearchViewController from Search tab).

Background Information: Apps Debt

Known bugs

Add bugs here as we review, to be addressed during this work. If not addressed, create separate task

  • Mis-alignment of "Tap to go back" tooltip on "W" home icon
    • Check other Tooltips on custom nav items
  • Check empty states / error states alignment
  • Settings content goes underneath tab bar when Explore feed is disabled
  • Swiping back from Image Recommendations causes weird full modal state.
  • Can't swipe back from Notifications
  • Tapping cancel from Insert Link shows blank screen, should automatically dismiss and go back to editor
  • iPad article bounces (when TOC is closed) and causes swipe back to fail.
  • Sometimes "Edit" on Reading Lists causes assertion failure
  • Do an audit of all back buttons, confirm default handling for label exists, and some sort of title appears during long press.
  • Audit and fix any unlocalized strings (flagged as todo in code)
  • Opening username from Revision History crashes app
Design feedback Todo

Event Timeline

JTannerWMF moved this task from Needs Triage to Up next on the Wikipedia-iOS-App-Backlog board.
Tsevener renamed this task from [Tech Debt] Replace custom navigation bar with system bar to [XL] [Tech Debt] Replace custom navigation bar with system bar.May 9 2024, 7:44 PM
Tsevener claimed this task.

Spike results:

I made a few basic sample projects exploring different navigation options.

UIKit navigation, UIKit views
This option uses UINavigationControllers to navigate and pushes on UIViewControllers. This is how most of our app is already set up. Out-of-the-box the system supports hiding the navigation bar as you scroll, displaying an inline search bar, and displaying titles in large mode. It also supports a hidesBarsOnTap, in case we ever want to add a focused reading mode, however I found that it does interfere a bit with tapping an item to navigate. That could probably be smoothed over by manually calling setNavigationBarHidden and adding an additional tap gesture that activates on areas that shouldn't navigate you away.

I came across one layout bug where content would occasionally slip beneath a visible navigation bar, when slightly and slowly scrolling at the very top. I was able to catch it and reset it via the scrollViewDidScroll callback.

I also came across buggy navigation bar hiding upon scroll in iOS15. If needed we can disable this for iOS15-only.

SwiftUI navigation, SwiftUI views
This option uses NavigationView to navigate and pushes on SwiftUI views via NavigationLink. This almost worked, except I could not figure out a simple way to hide the navigation bar as you scroll. There are options to communicate up a scroll view offset using a preference key, where we could then try to manually hide it, but that doesn't work for List SwiftUI views. I would rather not go down the path of customizing this behavior too much, because then we will be right back where we started with something that will likely be kinda buggy in certain situations.

UIKit navigation, SwiftUI views
This option uses UINavigationControllers to navigate, and pushes on SwiftUI views embedded in UIHostingControllers. We already do this with some of our views. Interestingly, the embedded SwiftUI views I tested were either Lists, or LazyVStacks / LazyVGrids within ScrollViews. The UIKit navigation bar still showed and hid as expected, so the SwiftUI scrolling behavior automatically communicates that offset information up to it.

SwiftUI navigation, UIKit views
This option uses NavigationView to navigate and pushes on UIKit view controllers embedded via UIViewControllerRepresentables. Navigation feels a bit awkward, because in a didSelectItemAtIndexPath method, I have to set a boolean state flag. From there SwiftUI catches this change and pushes on a new view via NavigationLink's isActive flag. Once we can switch to NavigationStack with iOS16, this may feel less awkward. The same limitation of hiding a navigation bar in the all-SwiftUI demo exists here too.

I suggest we stick with UIKit navigation. This will (mostly) give us default navigation bar hiding, and it will be easier switch to a system navigation bar with our existing setup. Slowly we will be able to rewrite most of the internals with SwiftUI without issue.

For context, I last actively worked on this Tuesday May 28th, apologies for not moving this to the "Waiting" column at that point to reflect the pause. Moving to Waiting now, will pick it up when I'm back from OOO June 24th.

I'm still in the middle of working on a prototype branch for design feedback.

Something else we may be able to look into while we're touching launch flow for system navigation bar: T368448

@cmadeo @AlexHollender-WMF

I deployed a prototype of my work in TestFlight Experimental build 7.5.4 #132. I took some design liberties based on some limitations that I ran up against, so if you could leave feedback on how things feel so far that would be great!

Bugs that can be ignored at this stage:

  1. iPad - I haven't swept through it yet, but at the very least I noticed the article table of contents are messed up.
  2. Empty States - some of the empty state vertical centering is off due to old navigation bar height calculations. This will be fixed.
  3. Loading states - I haven't added in the old blue loading progress bar yet.
  4. Theming issues - I've only been testing in light theme but any color issues should not be a problem.

Things I'd like feedback on:

  1. How navigation bar hiding upon scroll feels. So far I'm only hiding it in Explore and the Article view so far, but let me know if you feel like it should be in other areas (previously it was also in Notifications Center and Settings). It felt a little slow and clunky by default so I sped the animations up slightly so if feels a little more like the old one. I can't really control exactly when or how it hides anymore - the system listens to the scroll view and decides itself.
  2. The segmented control view for "All articles" and "Reading lists" in the Saved tab. The system navigation bar has a feature called "search scopes" that embeds a segmented control. It looked close enough to our old custom tab view, so I'm using it here.
  3. The "Sort" button on the Saved tab and Reading List Details view. I can no longer put any UI next to the search bar, so I moved the Sort button up to the top right in the navigation bar.
  4. The "Map / List" toggle on Places. For toggling the map and list view, I leaned on the "search scopes" segmented control, since I can no longer put UI next to the search bar.
  5. When Settings > Search > Show languages on search is toggled ON: Let me know how you feel Explore search and the Search tab feel with the language selection. I'm leaning on the scope segmented control again. It unfortunately no longer horizontally scrolls, so I'm limiting it to 5 languages. I also added a More icon in the top right for the Search tab, where a user can adjust their languages. This is one area where I think I could add the old horizontally control back in if you feel strongly about it.
  6. No more snapping: Article Revision History, Diffs, and Talk Pages are an example of how the new headers act. Note they do not fade out or snap anymore. I could probably add fading if it's important, but I would recommend against trying to put snapping back in - in my experience snapping was a source of difficult bugs for us.

@Tsevener so sorry for my delay!
Feedback in-line below

  1. How navigation bar hiding upon scroll feels. So far I'm only hiding it in Explore and the Article view so far, but let me know if you feel like it should be in other areas (previously it was also in Notifications Center and Settings). It felt a little slow and clunky by default so I sped the animations up slightly so if feels a little more like the old one. I can't really control exactly when or how it hides anymore - the system listens to the scroll view and decides itself.

Right now it can feel a little quick, but I think that has more to do with the loss of a slight fade vs. the actual speed. Additionally sometimes the nav gets a little stuck and then 'flies away' and takes a little time to come back. YouTube video: https://youtube.com/shorts/2PbMciG-4Rw?feature=share
On the explore feed there is also a similar glitch where sometimes the nav gets a bit 'sticky' and then is hard to retrieve: https://youtu.be/Bqg1v2W04lc additionally, it'd be good to trim the header space a bit when collapsing the nav so that it's just the nav itself cutting into the content vs. the little bit of white padding below it. This is all really specific, so if the videos and this description feel a bit too far out, let me know and I can hop on a call!

  1. The segmented control view for "All articles" and "Reading lists" in the Saved tab. The system navigation bar has a feature called "search scopes" that embeds a segmented control. It looked close enough to our old custom tab view, so I'm using it here.

I like the use of this search scopes and it's nice to have search for reading lists now, too! Would it be possible at all to have a slight fade on the header title as it hides behind the smaller header?

  1. The "Sort" button on the Saved tab and Reading List Details view. I can no longer put any UI next to the search bar, so I moved the Sort button up to the top right in the navigation bar.

Is it possible to add the sort capability to the reading list view now?

  1. The "Map / List" toggle on Places. For toggling the map and list view, I leaned on the "search scopes" segmented control, since I can no longer put UI next to the search bar.

Looks good

  1. When Settings > Search > Show languages on search is toggled ON: Let me know how you feel Explore search and the Search tab feel with the language selection. I'm leaning on the scope segmented control again. It unfortunately no longer horizontally scrolls, so I'm limiting it to 5 languages. I also added a More icon in the top right for the Search tab, where a user can adjust their languages. This is one area where I think I could add the old horizontally control back in if you feel strongly about it.

While I'm guessing it's unlikely that many people have more than 5 languages (could we check with @SNowick_WMF about this?), the current system with the cap at five doesn't feel super intuitive to me.

Perhaps more important though is I think the i18n on the current version feels a bit off to me as using the iOS codes even when your device is set to another language shows the codes and variant names in English

IMG_F33380CCAF34-1.jpeg (2×1 px, 362 KB)

For this reason, I think it'd be preferred to go back to the old scroll.

  1. No more snapping: Article Revision History, Diffs, and Talk Pages are an example of how the new headers act. Note they do not fade out or snap anymore. I could probably add fading if it's important, but I would recommend against trying to put snapping back in - in my experience snapping was a source of difficult bugs for us.

While I personally feel like the fade is important for the article + explore navigation collapsing, the loss of the snapping and fade here feel more natural (eg. it reads as a part of the page that is being scrolled away).

New experimental build from the prototype branch: TestFlight Experimental 7.6.1 (175).

Nice updates, @Tsevener — I haven’t looked at iPad yet, but this is going in the right direction. Thanks for the initiative on this! Here’s some feedback in random order:

1) Can we remove this line (cleaner look)

CleanShot 2024-11-07 at 16.56.17.png (2×1 px, 1 MB)

2) I noticed some bugs in dark mode (it switched to dark theme during testing):

Explore
CleanShot 2024-11-07 at 19.17.31.png (2×1 px, 598 KB)
Saved
image.png (2×1 px, 941 KB)
Settings
image.png (2×1 px, 189 KB)

3) Agreeing with @cmadeo’s feedback:

Right now it can feel a little quick, but I think that has more to do with the loss of a slight fade vs. the actual speed. Additionally sometimes the nav gets a little stuck and then 'flies away' and takes a little time to come back. YouTube video: https://youtube.com/shorts/2PbMciG-4Rw?feature=share
On the explore feed there is also a similar glitch where sometimes the nav gets a bit 'sticky' and then is hard to retrieve: https://youtu.be/Bqg1v2W04lc additionally, it'd be good to trim the header space a bit when collapsing the nav so that it's just the nav itself cutting into the content vs. the little bit of white padding below it.

image.png (2×1 px, 1 MB)

https://share.icloud.com/photos/0c9U_YIUGVHuQCmbdJ42bYIpQ

4) As @cmadeo — I like the segmented search as well:

The segmented control view for "All articles" and "Reading lists" in the Saved tab. The system navigation bar has a feature called "search scopes" that embeds a segmented control. It looked close enough to our old custom tab view, so I'm using it here.

I like the use of this search scopes and it's nice to have search for reading lists now, too! Would it be possible at all to have a slight fade on the header title as it hides behind the smaller header?

The search doesn’t seem to work yet for "Reading lists" – right @Tsevener?

https://share.icloud.com/photos/0adjY1cSCwAm-vKJK9kVicNpw

5) Standardize the color for the labels at the top right:

Places
image.png (2×1 px, 1 MB)
Saved
image.png (2×1 px, 961 KB)
History
image.png (2×1 px, 242 KB)

Let’s go with the link color for all.

6) Can we use the same type style for "Sort" (the one from "Edit") ? And give them a bit more in-between? (increasing their tap target size to at least 44×44 pt).

CleanShot 2024-11-07 at 17.23.02.png (2×1 px, 1 MB)

The "Sort" button on the Saved tab and Reading List Details view. I can no longer put any UI next to the search bar, so I moved the Sort button up to the top right in the navigation bar.

7) +1 to @cmadeo’s question re: sorting in reading lists 👇

The "Sort" button on the Saved tab and Reading List Details view. I can no longer put any UI next to the search bar, so I moved the Sort button up to the top right in the navigation bar.

Is it possible to add the sort capability to the reading list view now?

8) It seems like the Places search bar has a different background color than, e.g., "Explore" and "Saved." Can we use the same color (from Explore) for all?

CleanShot 2024-11-07 at 17.25.28.png (2×1 px, 1 MB)

9)Cancel button is not shown anymore within Places, when selecting "List", then tap the search bar, then going to "Map"

image.png (2×1 px, 1 MB)

10) Update search field placeholder to "Search Wikipedia"

CleanShot 2024-11-07 at 19.20.55.png (2×1 px, 137 KB)

11) I like the segmented search, but agreeing with @cmadeo that the current solution with the cap of five languages doesn’t feel good. Also, that language selection is unavailable when, e.g., coming from the Explore feed is currently suboptimal. Long story short: We’ll need a separate design task to improve language selection and the language cap OR we keep the language scroll as it is currently.

  1. When Settings > Search > Show languages on search is toggled ON: Let me know how you feel Explore search and the Search tab feel with the language selection. I'm leaning on the scope segmented control again. It unfortunately no longer horizontally scrolls, so I'm limiting it to 5 languages. I also added a More icon in the top right for the Search tab, where a user can adjust their languages. This is one area where I think I could add the old horizontally control back in if you feel strongly about it.

While I'm guessing it's unlikely that many people have more than 5 languages (could we check with @SNowick_WMF about this?), the current system with the cap at five doesn't feel super intuitive to me.

Perhaps more important though is I think the i18n on the current version feels a bit off to me as using the iOS codes even when your device is set to another language shows the codes and variant names in English

IMG_F33380CCAF34-1.jpeg (2×1 px, 362 KB)

For this reason, I think it'd be preferred to go back to the old scroll.

  1. No more snapping: Article Revision History, Diffs, and Talk Pages are an example of how the new headers act. Note they do not fade out or snap anymore. I could probably add fading if it's important, but I would recommend against trying to put snapping back in - in my experience snapping was a source of difficult bugs for us.

While I personally feel like the fade is important for the article + explore navigation collapsing, the loss of the snapping and fade here feel more natural (eg. it reads as a part of the page that is being scrolled away).

@scblr @HNordeenWMF

I'm kicking off a new Experimental build (#195) with a few fixes. The system nav bar shadow is mostly removed, and it isn't as sticky on Explore and Article. It still works best on iPhone light theme. but none of the other bugs pointed out so far jump out to me as not being fixable. I just didn't want to spent too much time fixing at this early stage.

I also added the search bar to the top of Article, and removed the search icon. I'd like to get both of your early thoughts on this approach for Navigation V2 changes.

https://drive.google.com/file/d/1NHC5r3rKtNgWADJ0T7atxMFrMybvU979/view?usp=sharing

Thanks for showing us this so quickly, @Tsevener ! I really love the search bar on top of the article. It feels like less of a transition when searching, compared to the current experience when you click the search icon and the search slides in from the right.

It looks good @Tsevener. We must ensure users don't mistake the visible global search bar at the top for a "find in page" function. I'm thinking of some quick usability tests for this. Also to consider:

  • Consistent Wikipedia or W logo across all screens for a more cohesive experience
  • Explorations/setting to move the search bar to the bottom of the screen
    IMG_04FB3B073877-1.jpeg (2×1 px, 240 KB)

CC @HNordeenWMF

Adding the items from T347999#10354798 to remember:

2) While testing again, I noticed that the two screens are inconsistent:

Log inCreate a new account
2DA395F1-BE9B-4B6C-BF27-7DCFD7EF0C23_1_102_o.jpeg (2×1 px, 239 KB)
IMG_9658.PNG (2×1 px, 567 KB)

Could you update the Create a new account navigation bar to be like the one from Log in?

3) And I don’t think the separator line is needed for both screens:

IMG_9657.PNG (2×1 px, 332 KB)

HNordeenWMF raised the priority of this task from Low to Medium.Mon, Dec 9, 7:07 PM
Tsevener updated the task description. (Show Details)

Answers from Spike:

  1. Is it possible to remove the "stickyness" of hidden navigation bars on Explore and Article?

    A: Yes, this is improved in the latest.
  1. Is it possible to fade out navigation bar as it hides on Explore, Article, and Saved?

    A: Unfortunately no, I cannot find an easy way to do this. We do not have easy access to the large navigation bar title for fading out while the user is scrolling.
  1. Is it possible to add sort capability to reading lists tab?

    A: Yes, this is done in the latest.
  1. Can we bring back the old horizontally scrolling languages bar on Search?

    A: Yes, this is done in the latest. Note we plan to change the search tab further in Navigation Round 2 changes, so we may need to do a final spike on that to see how SwiftUI handles it. But based on my observations in https://phabricator.wikimedia.org/T363606#9786926, we should be able to embed a SwiftUI view here with round 2 changes. The system navigation bar will still respond to scroll events in SwiftUI and shrink the navigation title as-needed.

Latest Experimental build is 7.6.3 (205). This has iPad article fixes, search tab languages bar fixes, missing toast fixes, and fixed Saved tab sorting and searching.

Seddon set the point value for this task to 10.Tue, Dec 10, 2:55 PM

@scblr @HNordeenWMF

Just a heads up about some limits I'm coming across so far after investigations:

  1. I have not been able to find an easy, system way to either move the large navigation bar title up or move the navigation bar buttons down. We are limited to the buttons living up higher on their own line. The buttons will align with the title only once the content is scrolled down a little and the navigation bar switches to a compact state:


Screenshot 2024-12-10 at 3.02.19 PM.png (161×215 px, 9 KB)


Screenshot 2024-12-10 at 3.02.23 PM.png (131×217 px, 8 KB)


Screenshot 2024-12-10 at 3.02.31 PM.png (151×227 px, 9 KB)

  1. I have also not been able to find an easy, system way to hide the search bar upon scroll down, then bring it back upon scroll up. What we can do is hide it when the user scrolls down, then it is gone until the user scrolls all the way up. Our options:

    Hide search bar on scroll down, reveal again when scrolled to very top: https://drive.google.com/file/d/117ErK43za2h_6Se5eWjCCKQul-HuWotm/view?usp=sharing

    Hide entire navigation bar on scroll down, reveal again on scroll up: https://drive.google.com/file/d/1HmsFVl5470r-CglzX8y1oO5EAEZEonoB/view?usp=sharing

    Do not hide at all: https://drive.google.com/file/d/1oKMk2VatyRAv5CmVWGLDSkE2rfpx_Lsk/view?usp=sharing

I will switch to doing cleanup in other areas of this task, but wanted to give y'all a heads up in case it changes anything for you.

@Tsevener thanks for these explorations

  1. I'm fine to stick with the original design of icons above on their own line, I think the white space will look less large when viewed with the notch / camera cutout.
  1. My preference the article view is to match current behavior, which is:

Hide entire navigation bar on scroll down, reveal again on scroll up: https://drive.google.com/file/d/1HmsFVl5470r-CglzX8y1oO5EAEZEonoB/view?usp=sharing

I think we should match the scrolling behavior for other views to whatever we decide for article view.

Thoughts @scblr ?

Thanks @Tsevener for the update. I agree with @HNordeenWMF’s preferences/suggestions! 🎯

@HNordeenWMF @scblr New build incoming, Experimental #207

I have made progress standardizing the navigation bar buttons (close button, back button, profile button) and navigation bar titles. Note that for the root views, I am attempting to use a more compact approach per a suggestion from Robin, where the title is aligned to the left. This does cause some strangeness with iPadOS 18 floating tab bar. For those situations, I may be able to hide the navigation title entirely for Places, Saved, History, and Search, since it feels like duplicated info, being so close to the tab bar title. But I can't remove any extra spacing the floating tab bar causes above the search bars.

There are still some theming bugs and smaller screens where I haven't applied the new standard yet. I also intend to fix a bug where the "Back" label appears when coming from the Saved tab.

This bug is fixed: https://phabricator.wikimedia.org/T363606#10386302
I think all of these bugs are fixed: https://phabricator.wikimedia.org/T363606#10301172

Let me know what you think!

One more - #208 should fix the swipe back gesture to get back to the previous screen.

Wow, this is exciting, @Tsevener – the compact navigation bar with the big titles works well on iPhone! 🤩

This bug is fixed: https://phabricator.wikimedia.org/T363606#10386302
I think all of these bugs are fixed: https://phabricator.wikimedia.org/T363606#10301172

👍👍👍 — I left some more feedback below.


1) This is how I see Places (missing big titles, search bar, filter and tabs)

iPhone 15 Pro with iOS 18.1.1iPad Mini with iOS 18.2
image.png (2×1 px, 2 MB)
image.png (2×1 px, 2 MB)

2)

I may be able to hide the navigation title entirely for Places, Saved, History, and Search since it feels like duplicated info, being so close to the tab bar title. But I can't remove any extra spacing the floating tab bar causes above the search bars.

CleanShot 2024-12-16 at 13.27.03.png (2×1 px, 893 KB)

The additional space looks off even if the titles are removed next to the floating tab bar. And I guess the titles like that won’t work in more character-heavy languages.

If feasible, we show the titles at the original spot on iPad, as it looks more balanced and screen estate isn’t that limited:

ImplementationvsSuggestion
image.png (2×1 px, 775 KB)
image.png (2×1 px, 775 KB)

I still really LOVE the compact iPhone view:

image.png (2×1 px, 1 MB)

Can we combine the concepts with minimal hacking? 🫶

3) Examples of instances where < Back could indicate the user’s origin:

3.1. < History

image.png (2×1 px, 508 KB)
image.png (2×1 px, 1 MB)

3.2. < Saved`

Probably this:

I also intend to fix a bug where the "Back" label appears when coming from the Saved tab.

image.png (2×1 px, 1 MB)
image.png (2×1 px, 2 MB)

3.3. < Explore

Featured article

image.png (2×1 px, 1 MB)
image.png (2×1 px, 1 MB)

Top read

image.png (2×1 px, 519 KB)
image.png (2×1 px, 2 MB)

Places

image.png (2×1 px, 444 KB)
image.png (2×1 px, 286 KB)

In the news

image.png (2×1 px, 1005 KB)
image.png (2×1 px, 1 MB)

On this day

image.png (2×1 px, 297 KB)
image.png (2×1 px, 410 KB)

Random article

image.png (2×1 px, 1 MB)
image.png (2×1 px, 1 MB)

4) Replace X with Done in Settings. To be consistent, I favor replacing X with Done in all full sheets in the app.

Rules:

  1. If there’s no navigation bar title, show Done on the top left side of the screen (see example #1)
  2. If there’s a navigation bar title, show Done on the top right side of the screen (see example #2)
1.2.
image.png (2×1 px, 198 KB)
image.png (2×1 px, 201 KB)

5) In the floating tab bar, can we use the magnifying glass icon instead of the Search label?

CleanShot 2024-12-16 at 16.50.23.png (2×1 px, 1 MB)

@scblr New build, Experimental 209

1.

This is how I see Places (missing big titles, search bar, filter and tabs)

This is hopefully fixed now

2.

Modified iPadOS18 to use the large style, everything else still uses compact leading style. Let me know how it feels.

3.

Back buttons now use default system handling (shows a specific title when possible, and "Back" when there's not enough room for the title).

4.

Replace X with Done in Settings. To be consistent, I favor replacing X with Done in all full sheets in the app.

I have pushed a commit replacing the shared X buttons I have so far with "Done". I have not adjusted their alignment yet according to your rule.

5.

In the floating tab bar, can we use the magnifying glass icon instead of the Search label?

TBD - I made progress with the switch, but it broke our programmatic navigation from search results (tapping no longer did anything). For now I reverted it and will revisit if there's time at the end.

Great updates @Tsevener 👏 🥰👏

1.

This is how I see Places (missing big titles, search bar, filter, and tabs)

This is hopefully fixed now

It works well now! 👍

2.

Modified iPadOS18 to use the large style, everything else still uses compact leading style. Let me know how it feels.

Yeah, it feels good in general!

a) Can we only make the search bars sticky when scrolling (not the tabs) on iOS and iPadOS? It feels too heavy (the UI takes away too much space).

iPadOS:

BeforevsAfter
image.png (2×1 px, 1 MB)
image.png (2×1 px, 1019 KB)

iOS:

BeforevsAfter
image.png (1×786 px, 538 KB)
image.png (1×786 px, 529 KB)

Alternative thought if this is not an option: Should all main view headers be hidden entirely on scroll down (same as Explore currently)?

c) Decrease the tabs spacing in Saved and Places so it feels coherent with the dense spacing in the headers. The space is currently 17px, and I decreased it to 10px

Example from Saved

BeforevsAfter
image.png (1×786 px, 538 KB)
image.png (1×786 px, 538 KB)

c) Left align the Wikipedia logo on iPadOS:

IMG_EFF67FE13050-1.jpeg (2×1 px, 484 KB)

3.

Back buttons now use default system handling (shows a specific title when possible, and "Back" when there's not enough room for the title).

Perfect – yeah, let’s keep it that way!

4.

Replace X with Done in Settings. To be consistent, I favor replacing X with Done in all full sheets in the app.

I have pushed a commit replacing the shared X buttons I have so far with "Done". I have not adjusted their alignment yet according to your rule.

Ok, thanks — I can create an inventory of all instances later if that’s helpful.

5.

In the floating tab bar, can we use the magnifying glass icon instead of the Search label?

TBD - I made progress with the switch, but it broke our programmatic navigation from search results (tapping no longer did anything). For now, I reverted it and will revisit if there's time at the end.

Ok, that makes sense.

6) Can we use a white background (paper color) in the home bar area on iPadOS? I'm not sure if it’s related to the changes for nav.

Saved.jpeg (2×1 px, 412 KB)

7) Labels:

a) Align the Places search label with the other search labels:

image.png (3×393 px, 569 KB)

b) Update search label copy to use sentence case:

  • Explore: Search Wikipedia
  • Places Search places
  • Saved:
    • Search saved articles
    • Search reading lists
  • Search: Search Wikipedia

Hi @scblr:

Here's an audit so far of Done and how they're looking in the latest build. Please let me know if you need any changes. A couple of them are problematic. I haven't addressed your latest feedback yet, I will look at that tomorrow.

  1. Year in Review > Donate via Other Payment Method

Screenshot 2024-12-19 at 4.43.39 PM.png (1×559 px, 247 KB)

  1. Article > Editor

Screenshot 2024-12-19 at 4.44.17 PM.png (1×559 px, 311 KB)

  1. Article > Editor > Insert Media

Screenshot 2024-12-19 at 4.44.29 PM.png (1×559 px, 344 KB)

  1. Explore Feed > 3 dot button on a card > Customize Explore Feed

Screenshot 2024-12-19 at 4.46.41 PM.png (1×559 px, 308 KB)

  1. Settings > About the app > Libraries Used

Screenshot 2024-12-19 at 4.47.25 PM.png (1×559 px, 212 KB)

  1. Profile > Log in

Screenshot 2024-12-19 at 4.48.05 PM.png (1×559 px, 203 KB)

  1. Profile > Log in > Create account

Screenshot 2024-12-19 at 4.48.25 PM.png (1×559 px, 240 KB)

  1. Profile > Log in > Forgot Password

Screenshot 2024-12-19 at 4.48.49 PM.png (1×559 px, 204 KB)

  1. Profile > Log in > Two factor triggered upon login

Screenshot 2024-12-19 at 4.50.37 PM.png (1×559 px, 195 KB)

  1. Profile > Log in > Change temp password triggered upon login

Screenshot 2024-12-19 at 4.51.57 PM.png (1×559 px, 211 KB)

  1. Article > Article Description Edit

Screenshot 2024-12-19 at 4.52.41 PM.png (1×559 px, 229 KB)

  1. Article > Article Description Edit > Learn More

Screenshot 2024-12-19 at 4.53.14 PM.png (1×559 px, 276 KB)

  1. Article talk page > New topic button

Screenshot 2024-12-19 at 4.53.51 PM.png (1×559 px, 200 KB)

  1. Developer Settings

Screenshot 2024-12-19 at 4.54.27 PM.png (1×559 px, 219 KB)

  1. Year in Review > Donate > Donate with Apple Pay

Screenshot 2024-12-19 at 4.56.32 PM.png (1×559 px, 297 KB)

  1. Profile

Screenshot 2024-12-19 at 4.56.48 PM.png (1×559 px, 216 KB)

  1. Explore card > Save article > Add to Reading list > Pick reading list > Tap toast that says "Article added to {reading list name}":

Screenshot 2024-12-19 at 4.57.25 PM.png (1×559 px, 268 KB)

This one seems like a problem because you can tap "Edit", which then switches to edit mode and shows Cancel:

Screenshot 2024-12-19 at 4.58.33 PM.png (1×559 px, 272 KB)

But maybe it will be fine if we bury Sort and Edit in a More menu.

  1. Reading list detail > Edit > Pick articles > Move to... / Add to...

Screenshot 2024-12-19 at 4.58.53 PM.png (1×559 px, 190 KB)

Screenshot 2024-12-19 at 4.59.58 PM.png (1×559 px, 190 KB)

  1. Saved > Edit > Choose article > Add to list > Create new list

Screenshot 2024-12-19 at 5.01.07 PM.png (1×559 px, 193 KB)

  1. Article Editor > Link button in formatting toolbar > de-focus search bar:

Screenshot 2024-12-19 at 5.01.58 PM.png (1×559 px, 182 KB)

(This is probably a bug on my side, I don't think a user should be able to see this blank screen).

  1. Article Editor > put cursor in link > Link button in formatting toolbar:

Screenshot 2024-12-19 at 5.03.08 PM.png (1×559 px, 195 KB)

This is an issue - One "Done" will essentially cancel the edit link operation, the other "Done" will update the link.

  1. Article > Page issues:

Screenshot 2024-12-19 at 5.05.10 PM.png (1×559 px, 197 KB)

  1. Settings:

Screenshot 2024-12-19 at 5.05.46 PM.png (1×559 px, 260 KB)

  1. Settings > My Languages:

Screenshot 2024-12-19 at 5.06.08 PM.png (1×559 px, 217 KB)

  1. Settings > My Languages > Add another language:

Screenshot 2024-12-19 at 5.06.40 PM.png (1×559 px, 229 KB)

I still kept some X's, some I tweaked to use an SFSymbol, others I left as-is:

Screenshot 2024-12-19 at 5.08.10 PM.png (1×559 px, 298 KB)

Screenshot 2024-12-19 at 5.08.15 PM.png (1×559 px, 243 KB)

Screenshot 2024-12-19 at 5.10.15 PM.png (1×559 px, 288 KB)

Screenshot 2024-12-19 at 5.08.55 PM.png (1×559 px, 264 KB)

This may not be entirely comprehensive 😅 let me know if there are any that I missed!

@scblr Here's a couple of more screenshots that I haven't changed but wanted to point them out to you. "Cancel" feels similar to "X" / "Done", so if they need a particular treatment let me know.

YiR survey:

Screenshot 2024-12-19 at 5.20.08 PM.png (1×559 px, 214 KB)

Article History > Compare:

Screenshot 2024-12-19 at 5.20.26 PM.png (1×559 px, 271 KB)

New experimental build #211 kicked off.

New experimental build #212 kicked off. Updated task description with "Known Bugs" and "Design feedback Todo" sections.