GoRouter.dev

Current field guide · 2026

See how a route becomes a screen

Explore a location here, then run real Flutter examples in your own environment.

Use the Route Atlas to change one part of a destination at a time, then read the parameter guide to explain what belongs in the URL. Compare a normal entry with a deep-link entry before deciding whether the destination still carries the state you intended. The atlas is a browser model, not a Flutter build test.

Edition published 21 Oct 2026go_router 18.1.1 reference
On this page

Start with a small, inspectable app

The complete starter download now includes the Dart entry point, pinned pubspec and lockfile, Web host, tests and a README. It demonstrates /, /books/:bookId and /settings without a backend or authentication service. The verified SDK and package versions are listed below.

Run it in your own Flutter environment

Extract the complete source project, enter its folder and follow its README, starting with flutter pub get --enforce-lockfile. There is no need to generate and overwrite another host project. The website route explorer remains a separate JavaScript teaching model; it does not compile Dart.

More complete upstream examples

The current Flutter package repository includes shell routes, stateful nested navigation, asynchronous redirection, and other focused examples. Use those examples with their matching package revision. The original example source is also available in the full recovered source download.

Keep the distinction visible

Original animated recordings are historical demonstrations. They are preserved below without being presented as current runtime tests. After adopting a pattern, exercise deep links and Back on each platform you actually support.

THE ROUTE EXPLORER● INTERACTIVE

/ HomeScreen

/books BookListScreen

:bookId BookScreen

/settings SettingsScreen

/sign-in SignInScreen

02 / ResultMatched03 / DestinationBookScreenPath parameters{"bookId":"42"}Query parameters{"tab":"notes"}

An illustrative JavaScript URL matcher. No Dart is executed. Your entries stay in this browser.

Original nested navigation demonstrationOpen original recording: Original nested navigation demonstration
Original nested navigation demonstration · historical recording, 2022
Original state-retention demonstrationOpen original recording: Original state-retention demonstration
Original state-retention demonstration · historical recording, 2022
Original transition demonstrationOpen original recording: Original transition demonstration
Original transition demonstration · historical recording, 2022
Original asynchronous data demonstrationOpen original recording: Original asynchronous data demonstration
Original asynchronous data demonstration · historical recording, 2022
Original navigator builder demonstrationOpen original recording: Original navigator builder demonstration
Original navigator builder demonstration · historical recording, 2022
Additional historical edition: Wayback snapshot, 2021-12-29.

Sources & version context

GoRouter.dev documentation edition. Examples illustrate the APIs described in the linked primary documentation. Adapt application-owned widgets and services to your project. They are not an executed Flutter session in this browser.

A starter with an actual build record

Verified on 24 October 2026: Flutter 3.47.8, Dart 3.13.7 and go_router 18.1.1. The package version is pinned, the resolved dependencies are in pubspec.lock, and the download contains a complete Web host, Dart entry point and tests.

  1. Extract the source project into a working folder. Use the exact SDK above to reproduce this record; a newer or older SDK is a different verification environment.
  2. Run flutter pub get --enforce-lockfile, then the commands below. Keep the lockfile and read any dependency or SDK mismatch rather than silently upgrading.
  3. Read test/routing_test.dart alongside lib/main.dart. The routes are /, /books/:bookId with optional ?tab=notes, and /settings. An unknown route has a return-home action.
flutter analyze --no-pub
No issues found! / exit 0

flutter test --no-pub --reporter expanded
+4: All tests passed! / exit 0

flutter build web --release --csp --no-web-resources-cdn --no-wasm-dry-run
✓ Built build/web / exit 0

The tests cover a Home → book → Home journey, a direct book route with a default query value, settings push/pop, and unknown-route recovery. These are widget tests using the real Flutter test engine. They do not establish browser address-bar history, deep-link refresh on a particular server, or Android/iOS compatibility.

URL /books/42?tab=notes → route match → widget assertion → release output
Original editorial verification map. URL input, route and query values, widget assertions, and the separate build result are distinct evidence.

Complete tested source project ↓

Compiled Web release archive ↓

Machine-readable verification record

The compiled archive is provided as a build artifact. No live Flutter demo is claimed here: CanvasKit requires a compatible WebAssembly policy, and the documentation site’s existing CSP has not been weakened. The source README explains the local HTTP-host boundary. No separate Chrome process was used for these checks.

Find your next route