A practical guide to picking the main navigation pattern for a mobile app, with a decision rule for tab bars, drawers and gestures, and the mistakes to avoid.
Most navigation problems in mobile apps are not caused by a bad pattern. They are caused by choosing a pattern before counting what the app actually contains. A tab bar fails when you have nine destinations. A drawer fails when your users need to reach three destinations every minute. Gestures fail when nothing on screen tells people they exist.
This post gives you a way to choose. It covers the three patterns you will meet most often, a decision rule, and the mistakes we see most in early designs.
A destination is a place a user goes on purpose and comes back to. "Home", "Orders", "Profile" are destinations. "Order detail" and "Edit address" are screens inside a destination.
Write the list on paper before you open a design tool. For each destination, add two notes:
The answers decide the pattern. Frequent and global destinations belong where the thumb can reach them without a second tap. Rare ones can hide.
A bottom tab bar shows your top-level destinations all the time, one tap away. Both Apple's Human Interface Guidelines and Google's Material guidance describe it as the default for apps with a small set of equally important destinations.
Use it when:
Watch out for:
A drawer slides in from the side and holds a longer list of destinations. It saves screen space and scales to many items. It also hides everything by default, and hidden things get used less.
Use it when:
Watch out for:
A common and sound combination: a tab bar for the three or four frequent destinations, and a drawer or a "Profile" screen for everything else. You get reach for the frequent items and room for the long tail.
Gestures include swipe back, swipe between tabs, pull to refresh, swipe on a list row to reveal actions, and long press for a menu. Modern iOS and Android both use system gestures for back and home, so your app already lives with them.
Gestures are good at speed and bad at discovery. Use them to accelerate something that already has a visible path, not to replace the path.
Good uses:
Bad uses:
The rule: every gesture needs a visible twin. If someone cannot swipe (motor impairment, a switch device, a screen reader), they must still reach the feature through a button or a menu item.
Run this in order and stop at the first match.
Mistake: choosing by screenshot. A team likes another app's navigation and copies it, but that app has different content and different frequency of use. Fix: build your destination list first and compare it to what the reference app actually contains.
Mistake: different navigation on iOS and Android with no reason. Platform conventions matter, such as the system back behavior on Android and the swipe-back on iOS, but your top-level structure should be the same on both. Fix: keep the same destinations, adapt only the platform-specific behavior.
Mistake: hiding the current location. Users should always be able to answer "where am I?" Fix: highlight the active tab or drawer item, and give every screen a clear title.
Mistake: forgetting the thumb. On a tall phone, the top corners are the least reachable zone. Fix: put frequent controls near the bottom, and treat the top-left hamburger as a secondary entry point.
Before you build, make a clickable prototype with only the navigation shell and placeholder screens. Give five people tasks such as "find your last order" or "change your notification settings". Do not explain the navigation. Watch for:
Three of five people hesitating at the same spot is a signal. Fix the labels or the grouping, then test again.
Can I use a tab bar and a drawer together? Yes. Keep the tab bar for the frequent destinations and use the drawer for settings, help and account items. Avoid putting the same item in both.
Should the tab bar hide when the user scrolls? It can, to give content more room, but it must come back on scroll up. If the app's whole job is moving between tabs, leave it fixed.
Do gestures work for accessibility? Only when a visible alternative exists. Test with a screen reader on and off before you ship.
If you are planning a mobile app and the navigation is still unsettled, we are happy to look at your destination list and sketches. Write to hello@risingstation.com or use risingstation.com/contact-us.
Md Kabir Hossain
Co-Founder & CTO