GoRouter.dev

Current field guide · 2026

One destination, several entry points

A working web route and a verified Android or iOS app link are separate parts of the same user journey.

Edition published 21 Oct 2026go_router 18.1.1 reference
On this page

Define the shared destination

Decide how an HTTPS location maps to your application route. Keep the same resource identity whether a user arrives from a browser, a message, or a platform app-link handler.

Configure the platform

Android App Links and iOS Universal Links require platform configuration and domain-association files. go_router handles navigation inside Flutter; it does not prove ownership of your domain or publish those platform files on your behalf.

Consider cold and warm entry

A link can start a stopped app or arrive while it is already running. Test both cases. Also test a signed-out user, an unavailable resource, and a link with an unexpected parameter.

Verify on a device

A desktop browser simulation cannot certify app-link association. Use the Flutter deep-linking guide and platform verification tools, then record the actual tested device and build. Avoid reporting a botched platform setup as a router matching bug.

dart / example
// The same route can receive a web or platform deep link.
GoRoute(
  path: '/books/:bookId',
  builder: (_, state) => BookScreen(
    id: state.pathParameters['bookId']!,
  ),
)

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.

Find your next route