routemaster
Easy-to-use Flutter router for web, mobile and desktop. URL-based routing, simple navigation of tabs and nested routes.
1.1.1
5.6K downloads/mo
#3673 most downloaded on pub.dev
tomgilder/routemaster
What this package is like to depend on
Last release 3 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
5 years old
35 releases · first in 2021
2 releases in the last 12 months
see the full history below
Release timeline
35 releases · Mar 2021 to May 2026Releases
latest 35-
1.1.120 May 2026Release notes
Open source →- Fixed build error on Flutter 3.44+ where
CupertinoPageTransitionsBuildermoved frompackage:flutter/material.darttopackage:flutter/cupertino.dart.
Release notes
Open source →- Fixed build error on Flutter 3.44+ where
CupertinoPageTransitionsBuildermoved frompackage:flutter/material.darttopackage:flutter/cupertino.dart.
- Fixed build error on Flutter 3.44+ where
-
1.1.017 Feb 2026Release notes
Open source →- Breaking: Minimum Dart SDK raised to 3.10, minimum Flutter raised to 3.38.1.
- Fixed browser forward-button not working after pop/popUntil operations.
Release notes
Open source →- Breaking: Minimum Dart SDK raised to 3.10, minimum Flutter raised to 3.38.1.
- Fixed browser forward-button not working after pop/popUntil operations.
-
1.0.105 Jun 2022Release notes
Open source →- Fixes build warnings when using Flutter 3.0, thanks to @josephelliot-wk for the PR to fix this.
-
1.0.024 Apr 2022Release notes
Open source →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.historyin the tab page's constructor. -
Added:
historyproperty onRoutemasterfor chronological history navigation, for exampleRoutemaster.of(context).history.back(). -
Added:
popUntilto pop multiple times with a predicate. -
Added:
TransitionPageandTransitionBuilderPageto 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/_stepTwowill be displayed as/sign-upin the address bar, and the user can not navigate to it by URL. -
Added:
StackPagefor navigation stacks without indexed pages -
Added:
navigatorKeyproperty toRoutemasterDelegateandPageStackNavigator. Using aGlobalKey<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.builderconstructor 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.
-
-
0.10.0-dev514 Oct 2021 pre-releaseRelease notes
Open source →-
Added: length property to PageStack to find out how many pages the stack will generate.
-
Added:
PageStackNavigator.builderconstructor 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.
-
-
0.10.0-dev406 Oct 2021 pre-release -
0.10.0-dev306 Oct 2021 pre-releaseRelease notes
Open source →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, specifybackBehavior: TabBackBehavior.historyin
the tab page's constructor. -
Added:
historyproperty onRoutemasterfor chronological history navigation,
for exampleRoutemaster.of(context).history.back(). -
Added:
popUntilto 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.
-
-
0.10.0-dev201 Aug 2021 pre-releaseRelease notes
Open source →-
Added:
TransitionPageandTransitionBuilderPageto 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/_stepTwowill be displayed as/sign-upin the address bar, and the user can not navigate to it by URL.
-
-
0.10.0-dev121 Jun 2021 pre-releaseNothing published for this version
-
0.9.511 Jul 2021 -
0.9.417 Jun 2021Release notes
Open source →- Fixed: an issue where pages were incorrectly rebuilding, causing state such as the active tab to reset
- Fixed: you can now use the ternary operator in page builders without having to do extra casts
Release notes
Open source →- Fixed: an issue where pages were incorrectly rebuilding, causing state such as the active tab to reset
- Fixed: you can now use the ternary operator in page builders without having to do extra casts
-
0.9.4-dev114 Jun 2021 pre-releaseNothing published for this version
-
0.9.301 Jun 2021Release notes
Open source →- Fixed: incorrect path reference in file (thanks to Thomas Frantz for PR)
Release notes
Open source →- Fixed: incorrect path reference in file (thanks to Thomas Frantz for PR)
- Fixed: incorrect path reference in file (thanks to Thomas Frantz for PR)
-
0.9.231 May 2021Release notes
Open source →- Fixed: navigating to an unknown page on startup could throw an exception
Release notes
Open source →- Fixed: navigating to an unknown page on startup could throw an exception
-
0.9.131 May 2021Release notes
Open source →- Fixed: issue where
routesBuildercould be called outside the build phase.
- Fixed: issue where
-
0.9.027 May 2021Release notes
Open source →- Breaking change:
PageStackNavigatorno longer automatically provides aHeroController- to use heroes, wrap the navigator in aHeroControllerScope - Breaking change: refactored
PageWrapperandStatefulPage(this is unlikely to affect you) - Added a new property to get the current route:
Routemaster.of(context).currentRoute - Added documentation to all classes, properties and methods
- Fixed:
RouteData.of(context)sometimes throwing when navigating away from a page - Fixed: issue with rebuilding routes when
RoutemasterDelegateis recreated - Fixed: widgets rebuilding when
RoutemasterDelegateis recreated
- Breaking change:
-
0.9.0-dev326 May 2021 pre-releaseNothing published for this version
-
0.9.0-dev217 May 2021 pre-releaseNothing published for this version
-
0.9.0-dev117 May 2021 pre-releaseNothing published for this version
-
0.8.116 May 2021Nothing published for this version
-
0.8.015 May 2021Release notes
Open source →- Breaking change:
Guardproperties have been renamed:validateis nowcanNavigateandonValidationFailedis nowonNavigationFailed - Breaking change: removed abstract
RouteConfigclass; to create custom routing maps, inherit fromRouteMap - Deprecation:
StackNavigatorhas been renamedPageStackNavigator - Added
NotFoundreturn page type - Added ability to customise the top-level navigator with
RoutemasterDelegate.builder - Added ability to use tabs with a custom page type
- Fixed
replace()not working with hashes on web - Fixed path URL strategy not working when it's set outside Routemaster
- Fixed tabs creating a redirect loop on web
- Note: Use of
Guardis no longer recommended - use standardifstatements andNotFoundorRedirect
- Breaking change:
-
0.7.206 May 2021 -
0.7.104 May 2021 -
0.7.003 May 2021Release notes
Open source →- Breaking change:
RouteData.pathno longer returns the full path with query string, to match Dart'sUriobject. UseRouteData.toString()orRouteData.fullPathfor the entire path including query string. - Breaking change:
Guardnow takes abuildermethod instead of achildproperty - Added support for return values via
pop('Result') - Added support for getting the
Routeobject when pushing a new path - Fixed an issue where subpages wouldn't push on top of a tab page
- Fixed an issue where query string values were lost after using the back button
- Breaking change:
-
0.6.229 Apr 2021 -
0.6.129 Apr 2021 -
0.6.026 Apr 2021Release notes
Open source →- Added
SafeAreato default 404 page - Fixed an issue navigating with relative paths and query strings
- Fixed an issue where the controller didn't update when tab length changed
- Added
-
0.5.026 Apr 2021Release notes
Open source →- Fixed an issue where the root navigator would rebuild unnecessarily
- Added more useful assert errors
- Added default body for
RoutemasterObserver.didChangeRouteso you're not forced to override it
-
0.4.024 Apr 2021Release notes
Open source →- Added support for
RoutemasterObserverinRoutemasterDelegate - Added support for
NavigatorObserverinStackNavigator - Renamed
tabControllertocontroller
- Added support for
-
0.3.121 Apr 2021 -
0.3.020 Apr 2021Release notes
Open source →- Added
StackNavigatorto simplify API - Support for non-hash URLs on web -
Routemaster.setPathUrlStrategy() - Support for hero animations in nested navigators
- Added
-
0.2.004 Apr 2021 -
0.1.002 Apr 2021Release notes
Open source →- API hopefully becoming stable
- More flexible and customisable router config
- Support for "404" pages via
onUnknownRoute - Added Dashazon example, see
example/book_store/
-
0.0.212 Mar 2021 -
0.0.103 Mar 2021