demo · v132
PWA Link Capture Demo
Chrome 132 enables user navigation capturing on desktop PWAs. When a user clicks a link to your PWA's scope, Chrome can open it inside the installed app window instead of the browser tab. Configure the capture_links manifest field below to see exactly how each value changes the behaviour.
Checking PWA install state…
web app manifest — capture_links configurator
capture_links
display
launch_handler.client_mode
capture_links behaviour matrix
| Scenario | none | new-client | existing-client-navigate |
|---|---|---|---|
| User clicks link to PWA scope from browser tab | Opens in browser tab | Opens in new PWA window | Navigates existing PWA window |
| User clicks link to PWA scope from another app | Opens in browser tab | Opens in new PWA window | Navigates existing PWA window |
| User types URL directly into browser bar | Browser bar | Browser bar (user intent = browser) | Browser bar (user intent = browser) |
| Link clicked inside PWA window | Stays in PWA | Stays in PWA | Stays in PWA |
| PWA not installed | Browser tab | Browser tab (ignored) | Browser tab (ignored) |
How Chrome decides
1User clicks a link whose href is within the PWA's declared
scope.2Browser checks: is this PWA installed? If no → open in browser tab, done.
3Chrome 132 reads
capture_links from the installed manifest.4
none: browser tab as usual.
new-client: open a new PWA window / tab for this navigation.
existing-client-navigate: if a PWA window is open, navigate it; else open new.
new-client: open a new PWA window / tab for this navigation.
existing-client-navigate: if a PWA window is open, navigate it; else open new.
5The PWA window's
launch_handler.client_mode further refines which window is chosen when multiple PWA windows are open.// web app manifest
{
"name": "My PWA",
"start_url": "/",
"scope": "/app/",
"display": "standalone",
// Chrome 132+: capture links to this scope from outside the app
"capture_links": "new-client",
// ^^^^^^^^^^
// "none" — don't capture, open in browser
// "new-client" — open new PWA window
// "existing-client-navigate" — navigate existing PWA window
// Controls which window is targeted when multiple are open
"launch_handler": {
"client_mode": "navigate-new"
// "auto" | "navigate-new" | "navigate-existing" | "focus-existing"
}
}