NavigationStack presents a root and a stack of pushed destinations. Value-based NavigationLink stores a Hashable value representing where the user wants to go. navigationDestination maps that value type to a destination view, separating navigation intent from destination construction.
A bound path makes the stack programmatically controllable. It can support deep links, restoration, multi-step flows, and returning to a known root. Prefer a typed array when one route enum represents all destinations; NavigationPath is useful when the path contains multiple unrelated Hashable types.
Navigation state needs an owner. A feature root may own a route array and pass action closures into children. Child rows should express user intent instead of reaching into a global router unnecessarily. Keep modal presentation separate from pushed path state unless the flow model deliberately unifies them.