NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #171 most downloaded on pub.dev
A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more
Last release 3 days ago
28 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
6 versions withdrawn
withdrawn after publishing
5 years old
254 releases · first in 2021
One column per quarter.
Adds GoRouteData and TypedGoRoute to support package:go_router_builder.
GoRouteData and TypedGoRoute to support package:go_router_builder.Refactors runtime checks to assertions.
Exports inherited_go_router.dart file.
Add dispatchNotification method to DummyBuildContext in tests. (This should be revisited when Flutter 2.11.0 becomes stable.)
dispatchNotification method to DummyBuildContext in tests. (This
should be revisited when Flutter 2.11.0 becomes stable.)GoRoute now warns about requiring either pageBuilder, builder or redirect at instantiation.Updates code for stricter analysis options.
Fixes a bug where params disappear when pushing a nested route.
Moves source to flutter/packages.
pass along the error to the navigatorBuilder to allow for different implementations based on the presence of an error
navigatorBuilder to allow for different
implementations based on the presence of an errorbreaking change: added GoRouterState to navigatorBuilder function
GoRouterState to navigatorBuilder functionBuildContext from GoRouter.pop() to remove the
need to use context parameter when calling the GoRouter API; this changes
the behavior of GoRouter.pop() to only pop what's on the GoRouter page
stack and no longer calls Navigator.pop()navigatorBuilder function to build a custom
shared scaffold outside of the animations provided by go_routerPR 262: add support for Router.neglect; thanks to nullrocket!
Router.neglect; thanks to nullrocket!from query parameter to be completely
self-contained in the redirect function, simplifying usageWillPopScope for go_router appsPR 259: remove a hack for notifying the router of a route change that was no longer needed; thanks to nullrocket!
mounted property of the screenupdated implementation to use logging package for debug diagnostics; thanks to johnpryan
fixed up the GoRouterRefreshStream implementation with an export, an example and some docs
GoRouterRefreshStream implementation with an export, an example
and some docsadded GoRouterRefreshStream from jopmiddelkamp to easily map from a Stream to a Listenable for use with refreshListenable; very useful when combined w
GoRouterRefreshStream from
jopmiddelkamp to easily map from a
Stream to a Listenable for use with refreshListenable; very useful when
combined with stream-based state management like
flutter_blocpass additional information to the NavigatorObserver via default args to MaterialPage, etc.
NavigatorObserver via default args to
MaterialPage, etc.fix 205: hack around a failed assertion in Flutter when using Duration.zero in the NoTransitionPage
Duration.zero in the
NoTransitionPageprovide default implementation of GoRoute.pageBuilder to provide a simpler way to build pages via the GoRouter.build method
GoRoute.pageBuilder to provide a simpler
way to build pages via the GoRouter.build methodGoRouter.errorPageBuilder to provide a
simpler way to build error pages via the GoRouter.errorBuilder methodGoRouter.errorBuilder to provide an error
page without the need to implement a custom error page builderbuilder and default error
page builderlaunch.json as VSCode-centric and unnecessary for discovery or easy
launchingNoTransitionPage classextra paramfix 191: handle several kinds of trailing / in the location, e.g. /foo/ should be the same as /foo
/foo/ should be the same as /foofix a misleading error message when using redirect functions with sub-routes
fix 182: fixes a regression in the nested navigation caused by the fix for #163; thanks to lulupointu for the fix!
reformatted CHANGELOG file; lets see if pub.dev is still ok with it...
fix 163: avoids unnecessary page rebuilds
Navigator.pop() via GoRouter.pop() to make it easy to findfix 127: updated the docs to add a video overview of the project for people that prefer that media style over long-form text when approaching a new to
fix 120 again: found the bug in my tests that was masking the real bug; changed two characters to implement the actual fix (sigh)
fix 116: work-around for auto-import of the context.go family of extension methods
context.go family of extension methodsfix 132: route names are stored as case insensitive and are now matched in a case insensitive manner
fix 120: encoding and decoding of params and query params
fix 114: give a better error message when the GoRouter isn't found in the widget tree via GoRouter.of(context); thanks aoatmon for the excellent bug r
GoRouter isn't found in the widget tree via
GoRouter.of(context); thanks aoatmon for the
excellent bug report!added a new `navigatorBuilder` argument to the GoRouter constructor; thanks to andyduke!
navigatorBuilder argument to the
GoRouter constructor; thanks to andyduke!fix 61 again: enable images and file links to work on pub.dev/documentation
errorPageBuilderpush@visibleForTestingfix 86: add name to GoRouterState to complete support for URI-free navigation knowledge in your code
fix 80: adding a redirect limit to catch too many redirects error
add badges to the README and codecov to the GitHub commit action; thanks to rydmike for both
BREAKING CHANGE and fix #50: split params into params and queryParams; see the Migrating to 2.0 section of the docs for instructions on how to migrate…
params into params and queryParams; see the Migrating to 2.0
section of the docs
for instructions on how to migrate your code from 1.x to 2.0AppBar Back button; thanks to
SunlightBro for the one-line fix that I had
no idea about until he pointed it outAutomaticKeepAliveClientMixin with nested navigation to keep widget state
between navigations; thanks to rydmike for this
updateenable case-insensitive path matching while still preserving path and query parameter cases
/none to make pushing the 'fade
transition' button on the first run through more funalso shoutout to https://github.com/Salakar for the CI action on GitHub
now showing routing exceptions in the debug log
nulladded support NavigatorObserver objects to receive change notifications
NavigatorObserver objects to receive change notificationsdocs updates based on user feedback for clarity
main()push() disables AppBar Back buttonupdated version for initial release
GoRoute.builder => GoRoute.pageBuilderGoRoute.error => GoRoute.errorPageBuilderpush and pushNamedadded support for push as well as go
push as well as goadded support for custom transitions between routes
- updated API docs - updated docs for GoRouterState
GoRouterState- updated API docs
updated named route lookup to O(1)
updated diagnostics output to show named route lookup
- added support for named routes
fix to make GoRouter notify on pop
GoRouter notify on popmade GoRouter a ChangeNotifier so you can listen for location changes
GoRouter a ChangeNotifier so you can listen for location changes- books sample bug fix
added example of async data lookup
- added state restoration sample
changed debugOutputFullPaths to debugLogDiagnostics and added add'l debugging logging
debugOutputFullPaths to debugLogDiagnostics and added add'l
debugging loggingupdated docs for Link widget support
Link widget supportadded Books sample; fixed some issues it revealed
breaking build to refactor the API for simplicity and capability
refresh method and refreshListener.builder ctor from GoRouter (not reasonable to implement)update to pageKey to take sub-routes into account
BREAK: rename pattern to path for consistency w/ other routers in the world
pattern to path for consistency w/ other routers in the
worldGoRouterLoginGuard for the common redirect-to-login-page patternfixed issue showing home page for a second before redirecting (if needed)
removed cupertino_icons from main pubspec.yaml
GoRouterState.pageKeycupertino_icons from main pubspec.yamlYour coding agent can read these notes before it upgrades. Set up the MCP server →