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.
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.
// 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.