| Hamburger menu as primary mobile nav | Hides destinations; engagement on hidden items drops sharply | Bottom tab bar for top 3–5; hamburger only for rare overflow |
| >5 tabs or a "More" tab | Buried tabs are effectively deleted features | Merge or re-rank destinations; overflow inside a tab |
| Icon-only nav without labels | Users can't decode icons beyond home/search/settings | Always pair icon + label in primary nav |
| Nav items that change per page | Users lose the map; every page feels like a new app | Identical top-level nav everywhere; mark active state |
| SPA navigation without URL updates | Back breaks, links unshareable, refresh loses state | Route every navigational state; pushState on view change |
| Modal-as-page without a history entry | Back skips past it or closes the whole flow | History entry for full-screen overlays only |
| Back closing a dropdown | Back becomes unpredictable; users stop trusting it | No history entries for transient UI |
| Hover-only dropdown menus | Fail on touch; flicker on diagonal mouse paths | Open on click/tap; close on Esc + outside click |
| Vague labels ("Solutions", "More", "Stuff") | Zero information scent; users click randomly | Concrete nouns users would say aloud |
| Command palette as the only path to a feature | Excludes pointer/touch users; undiscoverable | Palette duplicates nav, never replaces it |
| Current page as a breadcrumb link | Self-link confuses and wastes a click | Current crumb is plain text |
| Cross-linking between hub spokes | Users can't rebuild their location model | Return to hub between tasks |
| Badge counts on 3+ nav items at once | Alarm fatigue; users ignore all badges | Badge only actionable, user-specific counts |
| Custom back button disagreeing with history | Two back affordances point different ways | Mirror history, or name the target ("Back to results") |
| Login redirect dropping the deep link | User re-navigates manually; shared links feel broken | Preserve destination through auth, return after login |
| Four visible layers of nav chrome | Chrome outweighs content; layers indistinguishable | Cap at primary + secondary + tabs; split the object model |
| Nav label ≠ page title | Users think they mis-clicked and back out | Same words in the nav item and the page heading |
| Ungrouped sidebar past ~10 items | Wall of items; scanning collapses | Labeled section headers + inline filter |