NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3951 most downloaded on pub.dev
Easy-to-use Flutter router for web, mobile and desktop. URL-based routing, simple navigation of tabs and nested routes.
Last release 4 months ago
20 May 2026
Ships unpredictably
gaps range from 8 days to 3.7 years
Nearly every release is documented
notes for 25 of 26 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
35 releases · first in 2021
One column per quarter.
Fixed build error on Flutter 3.44+ where CupertinoPageTransitionsBuilder moved from package:flutter/material.dart to package:flutter/cupertino.dart .
CupertinoPageTransitionsBuilder moved from package:flutter/material.dart to package:flutter/cupertino.dart.Breaking: Minimum Dart SDK raised to 3.10, minimum Flutter raised to 3.38.1.
Fixes build warnings when using Flutter 3.0, thanks to @josephelliot-wk for the PR to fix this.
Important: this release has some major breaking changes with how Routemaster interacts with the system back button on Android and web from v0.9.
Important: this release has some major breaking changes with how Routemaster interacts with the system back button on Android and web from v0.9.
Minimum supported Flutter version is now 2.5.0.
Breaking change: by default, the Android system back button now navigates backwards chronologically, instead of just popping the navigation stack.
Breaking change: by default, tabs no longer add an entry to the web history
stack. This means the browser back button will not navigate between tabs.
To use the previous behavior, specify backBehavior: TabBackBehavior.history in
the tab page's constructor.
Added: history property on Routemaster for chronological history navigation,
for example Routemaster.of(context).history.back().
Added: popUntil to pop multiple times with a predicate.
Added: TransitionPage and TransitionBuilderPage to make it much easier to
customize page push and pop animations.
Added: private routes - route segments that start with an underscore are not
shown to the user. For example /sign-up/_stepTwo will be displayed as
/sign-up in the address bar, and the user can not navigate to it by URL.
Added: StackPage for navigation stacks without indexed pages
Added: navigatorKey property to RoutemasterDelegate and PageStackNavigator.
Using a GlobalKey<NavigatorState> can provide access to navigator
functionality and the current context.
Added: length property to PageStack to find out how many pages the stack will generate.
Added: PageStackNavigator.builder constructor for advanced scenarios
to filter which pages are shown in the navigator.
Fixed: an issue with getting RouteData.of(context) in some advanced
circumstances.
Fixed: when navigating to a relative route, uses the current context's path as the base, instead of the router's current path.
Breaking change: renamed and refactored some core Routemaster objects. Unlikely to affect anyone unless you're making custom stateful pages.
Added: length property to PageStack to find out how many pages the stack will generate.
Added: PageStackNavigator.builder constructor for advanced scenarios to filter which pages are shown in the navigator.
Fixed: an issue with getting RouteData.of(context) in some advanced circumstances.
Breaking change: renamed and refactored some core Routemaster objects. Unlikely to affect anyone unless you're making custom stateful pages.
Fixes a bug with forward history navigation.
Important: this release has some major breaking changes with how Routemaster interacts with the system back button on Android and web.
Important: this release has some major breaking changes with how Routemaster
interacts with the system back button on Android and web.
Minimum supported Flutter version is now 2.5.0.
Breaking change: by default, the Android system back button now navigates
backwards chronologically, instead of just popping the navigation stack.
Breaking change: by default, tabs no longer add an entry to the web history
stack. This means the browser back button will not navigate between tabs.
To use the previous behavior, specify backBehavior: TabBackBehavior.history in
the tab page's constructor.
Added: history property on Routemaster for chronological history navigation,
for example Routemaster.of(context).history.back().
Added: popUntil to pop multiple times with a predicate.
Fixed: when navigating to a relative route, use the current context's path as
the base, instead of the router's current path.
Added: TransitionPage and TransitionBuilderPage to make it much easier to customize page push and pop animations.
Added: TransitionPage and TransitionBuilderPage to make it much easier to customize page push and pop animations.
Added: private routes - route segments that start with an underscore are not shown to the user. For example /sign-up/_stepTwo will be displayed as /sign-up in the address bar, and the user can not navigate to it by URL.
Nothing published for this version
Fixed: an issue where pages would not receive query parameters
Fixed: an issue where pages were incorrectly rebuilding, causing state such as the active tab to reset
Nothing published for this version
Fixed: incorrect path reference in file (thanks to Thomas Frantz for PR)
Fixed: navigating to an unknown page on startup could throw an exception
Fixed: issue where routesBuilder could be called outside the build phase.
routesBuilder could be called outside the build phase.Breaking change: PageStackNavigator no longer automatically provides a HeroController - to use heroes, wrap the navigator in a HeroControllerScope
PageStackNavigator no longer automatically provides a HeroController - to use heroes, wrap the navigator in a HeroControllerScopePageWrapper and StatefulPage (this is unlikely to affect you)Routemaster.of(context).currentRouteRouteData.of(context) sometimes throwing when navigating away from a pageRoutemasterDelegate is recreatedRoutemasterDelegate is recreatedNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Breaking change: Guard properties have been renamed: validate is now canNavigate and onValidationFailed is now onNavigationFailed
Guard properties have been renamed: validate is now canNavigate and onValidationFailed is now onNavigationFailedRouteConfig class; to create custom routing maps, inherit from RouteMapStackNavigator has been renamed PageStackNavigatorNotFound return page typeRoutemasterDelegate.builderreplace() not working with hashes on webGuard is no longer recommended - use standard if statements and NotFound or RedirectFixed pathTemplate property on RouteData
pathTemplate property on RouteDataFixed paths using backslashes on Windows
Breaking change: RouteData.path no longer returns the full path with query string, to match Dart's Uri object. Use RouteData.toString() or RouteData.f…
RouteData.path no longer returns the full path with query string, to match Dart's Uri object. Use RouteData.toString() or RouteData.fullPath for the entire path including query string.Guard now takes a builder method instead of a child propertypop('Result')Route object when pushing a new pathSupport for absolute paths in tab child routes
Fixed building against Flutter master branch
Added SafeArea to default 404 page
SafeArea to default 404 pageFixed an issue where the root navigator would rebuild unnecessarily
RoutemasterObserver.didChangeRoute so you're not forced to override itAdded support for RoutemasterObserver in RoutemasterDelegate
RoutemasterObserver in RoutemasterDelegateNavigatorObserver in StackNavigatortabController to controllerBug fix for reusing stacks in multiple navigators
Added StackNavigator to simplify API
StackNavigator to simplify APIRoutemaster.setPathUrlStrategy()Re-work guards and redirects to make API simpler
More flexible and customisable router config
onUnknownRouteexample/book_store/Hugely improved and totally refactored API
* Initial first version
Your coding agent can read these notes before it upgrades. Set up the MCP server →