Navigation zones
Your app’s structure is the set of features you place and where you place them. There are five zones, and each one behaves differently on a phone.
The five zones
Section titled “The five zones”| Zone | Where it appears | Capacity |
|---|---|---|
| Bottom Nav | A tab bar fixed to the bottom of the screen | Up to 8 |
| Top Nav | A tab strip under the app header | No limit |
| Upper Nav | A header bar stacked above the top nav | Up to 3, none on Free |
| Side Nav | A drawer that slides in from the edge | No limit |
| Background | Not navigation — screens reached by tapping | One of each |
Bottom Nav
Section titled “Bottom Nav”The primary navigation, and the one your members will use most. Put the three to five things people open every day here.
Capacity is eight, on every plan. That is a layout limit rather than a commercial one: Flutter’s tab bar degrades past about eight destinations, and the cap stops you shipping something unusable.
Two styles: a standard bar, or floating glass, which lifts the bar off the bottom edge with a translucent ground. There is also a hide on scroll option that gets the bar out of the way while reading.
Top Nav
Section titled “Top Nav”A strip of tabs under the header, for switching between related views. It has no cap, because the strip scrolls horizontally.
Useful for a set of peers — Feed, Groups, Events — where bottom navigation is already full. It also supports hide-on-scroll.
Upper Nav
Section titled “Upper Nav”A second header bar stacked above the top nav, sharing its row with the menu button, the logo and the title.
Capacity is three, and that is a layout limit — there is only so much room beside a logo. Upper navigation is not included on Free; Pro and Unlimited both get all three slots.
Each feature can override whether it shows the upper bar, or inherit the app’s default.
Side Nav
Section titled “Side Nav”A drawer, opened by a Sidebar Trigger feature placed in another bar. Use it for everything that matters but is not daily: account settings, help, sign out, secondary sections.
Two things it does that no other zone does:
Parent menus. A Parent Menu is a group header holding up to five sub-items, so a long drawer stays readable.
More than one drawer. You can define several named drawers and have different Sidebar Trigger features open different ones.
Placing features across the five navigation zones
record → src/assets/media/navigation-zones.mp4
Background
Section titled “Background”Not navigation. These are screens your members reach by tapping something rather than by choosing a destination:
- Single Post — tapping a post in a list or a feed.
- Single Page — tapping a link to a WordPress page.
- Activity Thread — tapping a post’s comments.
- Verified Users and Online Users — badges and indicators shown in other screens.
Only one of each is allowed. Adding a second is refused.
Choosing a structure
Section titled “Choosing a structure”A structure that works for most communities:
- Bottom Nav: Feed, Directory, Chat, Profile — the daily four.
- Side Nav: Settings, Events, Groups, Notes, sign out.
- Background: Single Post, Single Page, Activity Thread.
- Top Nav: nothing, until you have a set of peers that needs it.
Start smaller than you think. Every screen you place is a screen your members have to understand, and an empty tab is worse than an absent one.
When it does not work
Section titled “When it does not work”| Symptom | Cause | Fix |
|---|---|---|
| A bar refuses another tab | Bottom is capped at 8, upper at 3 | Move something to the side drawer |
| Upper Nav will not accept anything | Upper navigation is not on Free | See Plans and limits |
| The drawer never opens | No Sidebar Trigger is placed in a visible bar | Place one in the bottom or top bar |
| Tapping a list item does nothing | The matching background feature is missing | Add it on the Background tab |
| A tab is missing for some members | A role restriction is set on it | Check the tab’s Restrictions |