Closed
Description
This is our new design for the overall navigation of the app. It replaces the current placeholder home page. In this design:
-
There is a bottom tab bar (aka "navigation bar", in Material 3 terms). It has 6 buttons: Inbox, Combined feed, Mentions, Direct messages, Channels, Menu.
- All of those buttons except Menu go to screens we already have implemented. Menu is described below.
- The navigation bar appears only on the screens that it leads directly to. In particular it does not appear on message lists.
- Changes vs. RN legacy app: Search and Starred move from the top bar into the menu. There's no top tab bar; instead there's an app bar with the current page's title ("Inbox, "Channels", etc.).
- For detailed design of the navigation bar, see Figma: here, and further details here. Screenshot:
-
The screen with the bottom tab bar is the root of the navigation stack; there's no navigating "back" or "up" from there. For how the user reaches the choose-account page (which we currently put at the root of the navigation stack), see below and 4.
- We will add a button on the loading screen for the home page. When clicked, it brings the user to the choose-account page. This is necessary in case loading the account data takes a long time. This button should only appear after a few seconds of loading.
- As a follow-up, we need to support logging out an account without UI interacting with the choose-account page UI. This means that the account can be logged out at any navigation level, which is not possible as of now (until we implement Handle invalid API key on register-queue #737 to invalidate API keys). A current side-effect of logging out is that the routes relying on the
PerAccountStore
of the account will be removed from the navigator stack. We need to ensure that the user ends up on choose-account page when that happens.
-
The menu is a modal bottom sheet. It has the same options as the navigation bar (except Menu itself), plus "Starred messages".
- In the future the menu will gain more options as we implement them:
- Settings: Store some client settings #97
- Notifications screen: Set basic server-side notification settings #661
- "My profile"
- Search (but that's a post-launch feature): msglist: Offer search narrows #252
- and doubtless others.
- For now the menu will also have a "Switch account" option at the bottom, which just leads to the choose-account page.
- As a follow-up, we'll put the current organization's name and icon at the top of the menu, paired with an "Organizations" option that does the job of "Switch account": Show current organization's name and icon atop main menu #1037
- As a further, post-launch follow-up, we'll replace the choose-account page with a new modal menu: Account-switcher modal #1038
- As a follow-up, we will add the markers for menu buttons: Show counts in main menu and nav bar #1088. They are omitted for now.
- For detailed design of the menu, see Figma: here, and further details here.
- In the future the menu will gain more options as we implement them:
Rationale
This design balances two things we want:
- It's low-risk in terms of UX, staying fairly close to what the legacy app has. We don't want to get slowed down by having to iterate a bunch.
- Where possible consistent with point 1, it borrows straight from more-ambitious designs we've discussed. This means it won't require scrapping a bunch of work later on as we add more features, or if we implement something more fully like those more-ambitious designs.
Related links
- Discussion in chat thread.
- Previous issue, which this one supersedes: Overall app navigation for beta #311
- Previous issue in zulip-mobile: UI redesign: main navigation menu zulip-mobile#5513
Metadata
Metadata
Assignees
Type
Projects
Status
Done