Skip to content

0.5.0

Choose a tag to compare

@AndroidPoet AndroidPoet released this 06 Jul 11:42
· 3 commits to main since this release

Correctness release for everything back-button-adjacent, driven by an adversarial audit of 0.4.0.

Highlights:

  • System back routes innermost-first everywhere — tabs and nested displays now give dialogs, sheets, and a screen's PopScope/ConfirmPopScope first refusal before the stack pops (per-tab navigatorKeys + maybePop + live NavigationNotification tracking).
  • Browser back/forward restores the full typed stack — every history entry carries a full-stack snapshot (RouteInformation.state), so history hops restore in-app depth the URL can't express. Automatic with links/restoreWith.
  • AsyncRedirect: gates + hold + fail-closed — declare what's protected with gates:; gated navigation is held off screen while check runs (no flash of protected content), and a throwing check drops the navigation instead of allowing it.
  • Core: a redirect no longer breaks pushForResult — the redirect result now reconciles against the proposed entries, keeping the pushed entry's id and awaiter.
  • Tabs observers replaced with observersFor — a NavigatorObserver belongs to one Navigator; per-tab factories fix a guaranteed debug crash.
  • Memoized pages now rebuild on Theme/locale/media-query changes; unmapped runtime links keep the app where it is; restoration and web-history docs made accurate.

Type-level breaking change: the delegates' Router config type is now NavRouteInformation (uri + state) instead of Uri; BackStackApp/BackStackTabsApp users are unaffected.

Full details in the CHANGELOG.