← Chrome 147 reference

v147 · pwa · in developer trial

PWA origin migration

A mechanism for developers to seamlessly migrate an installed Progressive Web App from one origin to a new, same-site origin — preserving user trust, permissions, and the installed app icon — without requiring the user to manually uninstall and reinstall.

In developer trial PWA origin migration is behind a flag in Chrome 147. The spec is an incubation in WICG and may change. Enable chrome://flags/#enable-experimental-web-platform-features to test locally. Enterprise-managed installs (WebAppInstallForceList) will not be offered a migration.

at a glance

Status in Chrome 147In developer trial (behind a flag)
Flagchrome://flags/#enable-experimental-web-platform-features
ConstraintNew and old origins must be same-site (same eTLD+1). Cross-site migration is not supported.
EnterpriseMigration is blocked when the app is force-installed via WebAppInstallForceList. A banner informs the user.
Standards positionFirefox: No signal  ·  Safari: No signal
SpecWICG manifest-incubations PR #136
Chromium bugissues.chromium.org/396504527
Demo / samplegooglechrome.github.io/samples/pwa-migration
ChromeStatus5123349239955456 — PWA origin migration
Source: chromestatus.com feature 5123349239955456, May 2026.

why it exists

A PWA's identity is bound to its web origin. When a developer needs to move to a new domain — due to rebranding, domain restructuring, or technical re-architecture — there is currently no upgrade path. The installed app on the user's device simply stops working or points to the wrong place, and the user has to manually uninstall and reinstall. This destroys any stored permissions, shortcuts, and the perceived continuity of the app. PWA origin migration introduces a first-party handshake: the old origin declares where it is moving, the new origin confirms the migration is intentional, and Chrome offers the user a seamless upgrade rather than a replacement.

Source: chromestatus summary field, May 2026.

how the migration works

Migration requires cooperation from both the old origin and the new origin. Neither can unilaterally redirect an installed PWA to a different origin.

Step 1: Old origin declares migrationThe old origin's web app manifest includes a new migration_target field pointing to the new origin's manifest URL.
Step 2: New origin confirmsThe new origin's manifest includes a migration_source field referencing the old origin. This two-way declaration prevents hijacking.
Step 3: Chrome offers migrationWhen Chrome detects the paired declaration, it shows the user a migration prompt explaining the change. The user can accept or decline.
Step 4: On acceptanceThe installed app's identity is updated to the new origin. Permissions, shortcuts, and the icon are preserved where possible.
Enterprise blockIf the app was force-installed by an enterprise policy (WebAppInstallForceList), no migration prompt is shown. Instead, a banner informs the user that migration is unavailable.
Source: chromestatus summary and WICG manifest-incubations PR #136, May 2026.

manifest fields

migration_targetIn the old origin's manifest. Value: URL of the new origin's manifest. Signals that the app is moving to a new origin.
migration_sourceIn the new origin's manifest. Value: URL of the old origin's manifest. Confirms the migration is intentional and authorized.
Source: WICG manifest-incubations PR #136, May 2026. Field names are subject to change during incubation.

example

Old origin manifest (app.example.com)

{
  "name": "My App",
  "start_url": "https://app.example.com/",
  "migration_target": "https://app.newexample.com/manifest.json"
}

New origin manifest (app.newexample.com)

{
  "name": "My App",
  "start_url": "https://app.newexample.com/",
  "migration_source": "https://app.example.com/manifest.json"
}

Constraint check: same-site

// Valid: both origins share the same eTLD+1 (example.com)
// app.example.com  →  app.newexample.com  — VALID
// app.example.com  →  totally-different.com — BLOCKED (cross-site)
Source: WICG manifest-incubations PR #136 and chromestatus summary, May 2026.

browser support

BrowserSupport
Chrome 147In developer trial (behind flag)
Edge 147Tracking Chromium
FirefoxNo signal
SafariNo signal
Source: chromestatus browser views, May 2026.

see also