Navigation and back form a hierarchy
Aliases: navigation stack · hierarchical navigation · push pop · modal presentation
What it is
On Apple platforms, navigation hierarchy treats screens as a parent–child tree rather than a flat list of destinations. Moving deeper pushes a child onto the stack; back pops to the parent. Back is not “undo the last tap” and not “dismiss whatever is on top.” It follows the parent edge toward the root. The chevron in the navigation bar and the leading-edge swipe are exits generated from that tree, not decorative buttons the app happens to draw.
Modal presentation is a different relation: a temporary root that covers the current tree and ends with a downward dismiss or a Cancel control, not with a pop. Pushing a flow that should have been modal, or presenting a detail that should have been a child, immediately misplaces the user’s sense of “which level am I on, and which way is out.”
Why it happens
The hierarchy is predictable because “where I am” is encoded in stack depth, not in the title string. While a parent exists, the navigation bar grows a back exit and the edge gesture binds to the same pop; when the stack is empty, both exits vanish together. Affordance and structure are two projections of one record, so the user does not have to read a label to guess the destination—the parent is the answer the structure already gave.
Modals stay off that stack because the task is an interruption, not a deeper node. An interruption needs an end gesture that is distinguishable from pop; otherwise a downward dismiss and an edge-back collapse into one action, and a half-filled sheet can throw the user out of the app or drop unsaved work. A custom back control that only restyles the chevron, without remaining wired to the system stack, drops the edge gesture and stops the title from becoming the parent’s name—the exit still looks present, the structure is already gone.
Where it stops holding
Split views, tab bars, and multiple windows each carry their own stack; back operates on the current branch and does not jump across columns. Full-screen immersive surfaces such as games or camera viewfinders often hide the navigation bar, so the hierarchy exit must become a system Close or a labeled Done—users will not hunt for a missing chevron. A WebView has its own history stack; when it is nested in a native stack, which one consumes back has to be decided in advance, or one swipe will pop both the page and the native screen. A screen opened from a notification or a universal link may have no parent; drawing a back chevron then dumps people onto an empty stack or the home screen. Offer Close or Done instead.
Applying it
- Express parent–child screens (list → detail → edit) with the system navigation stack; express interruptions (compose, filter, sign-in) as modals. Do not mix the two.
- Keep the system-generated back exit. If the leading item must be custom, confirm that the edge-swipe and the title still perform the same pop.
- On a deep-linked screen with no parent, use Close or Done rather than a chevron that points at an unknown destination.
- Verify by walking from home to the deepest child using only the edge gesture, checking that each step returns to the structural parent and that the title updates with it. Then dismiss modal sheets only by the downward gesture and confirm the underlying stack does not pop. Any “back landed on another branch” or “the gesture died but the button still works” means the exit has detached from the stack.
Related
- Same group: R4.01.2 System controls are deeply bound to Dynamic Type · R4.01.3 The system occupies gestures and the safe area
- Adjacent: K1.04 Platform differences in back behavior · R4.08 Core Apple Human Interface Guidelines · R4.14 The consistency cost of cross-platform frameworks
- Search terms:
navigation hierarchy·navigation stack·modal presentation·edge swipe back