Learn
Modules and nested navigation
Compose feature-owned Modules into application-owned Mounts and independent Navigator Scopes.
Modules and nested navigation
A feature exports a NavigationModule containing Route Definitions. The application decides where it appears by creating NavigationMount values. This allows the same catalog module to be mounted in authenticated and guest applications without subclassing generated routers.
Each NavigationScopeDefinition owns an independent Navigator stack. Parent-child relationships describe nested navigation structurally; NavigationOutlet renders a known child while NavigationActiveOutlet renders the active branch of a shell.
Switching branches preserves sibling stacks. Reset is explicit:
await navigation.activateBranch(const NavigationScopeId('catalog-tab'));
await navigation.resetBranch(const NavigationScopeId('profile-tab'));
If the same Destination type is reachable through several mounts, automatic placement would be ambiguous. The caller selects a NavigationMountId or complete NavigationTarget instead. Ark Navigation fails the operation rather than choosing the first matching route.
Navigator keys remain internal to the Session. Application identity uses typed Scope, Mount, Route, and Entry IDs, avoiding static-key collisions between structurally similar routes.