ADR-0042: Navigation motion follows screen hierarchy
- Status: Accepted
- Date: 2026-10-15
Context
All destinations used full-width 320 ms slides, with incoming and outgoing screens moving in opposite directions. Switching peer tabs felt like opening another level, and crossing screens made navigation visually distracting.
Decision
Peer tabs and onboarding completion crossfade over 180 ms. Detail pushes combine a 32 dp slide toward logical start with a 240 ms fade. Both screens travel together; popping reverses the motion toward logical end. Logical directions support RTL, and Compose animations use the system duration scale. The same policy applies to the bottom bar and rail. Selecting the current tab is a no-op; existing tab save/restore behavior remains intact.
Month-scoped transaction navigation
Home View all and Reports View transactions push the existing separate transaction drill-down destination. Home supplies its selected month with no category restriction; Reports supplies its month and optional category. Back returns to the originating screen and month. The plain Activity tab keeps its independent month/filter state. This follows the same detail hierarchy and avoids replacing the tab’s saved state with a Home scope.
Consequences
Tab changes avoid a full-screen sweep, while detail motion still communicates forward/back navigation. Motion is bounded independently of screen width. Navigation chrome visibility and destination insets remain screen-dependent.
Verification
Compile the Compose navigation graph and run existing tab-navigation tests.
HomeViewAllNavTest exercises real Home → Activity → Back for current, prior
and year-boundary months plus independent Activity tab state;
TransactionsRouteNavTest covers Reports month/category route arguments.
Device review should cover tab changes, nested detail pushes, Back, RTL,
wide layouts, rapid taps, and disabled system animations.