unrouter 0.8.0
unrouter: ^0.8.0 copied to clipboard
A URL-first typed router for Flutter with shell navigation and diagnostics.
Unreleased #
0.8.0 #
Added #
- Core typed router API with
Unrouter<R extends RouteData>,route<T>(), andRouteParserState. - Async routing hooks:
guards,redirect,routeWithLoader, and cooperative cancellation withRouteExecutionSignal. - Shell routing primitives (
shell()/branch()) with branch-local stacks and browser-history restoration. - Typed navigation results via
push<T>()+pop(result), includingcompletePendingResultoptions for replace/branch-switch flows. - Public machine API (
package:unrouter/machine.dart) with typed commands, actions, and action envelopes. - Public devtools API (
package:unrouter/devtools.dart) with inspector, bridge, panel adapter/widget, replay, persistence, and replay diff tooling. - Differential benchmark project under
bench/, includingunrouter/go_router/zenrouterparity checks and performance comparison.
Changed #
package:unrouter/unrouter.dartis the core default entrypoint.- Advanced APIs now require explicit imports:
package:unrouter/machine.dartandpackage:unrouter/devtools.dart. - Package moved to repository root and example app rebuilt around real
typed-routing, shell, redirect/guard/loader, and
/debugworkflows. - Benchmark workflow consolidated into
bench/main.dartwith environment-aware defaults, warmup controls, repeated performance runs, and terminal summary. - Internal source layout reorganized into domain folders:
lib/src/core,lib/src/runtime,lib/src/devtools,lib/src/platform.
Fixed #
- Redirect loop / max-hop diagnostics and safety handling.
- Shell branch-stack restoration correctness across router recreation and back/forward traversal.
- Deterministic machine/replay parity coverage for command/action streams and compatibility validation.