Chrome 150 で PWA Origin Migration が使える。インストール済み PWA の識別子はオリジンに強く結びつくため、これまで www.example.com/social から social.example.com のような同一サイト内の再配置では、利用者に旧アプリの手動アンインストールと新規インストールを強いていた。新旧オリジンが双方向で移行を宣言すると、アプリ更新に近い UI で旧アプリの削除と新アプリのインストール・起動を一続きに進められる。対象は同一サイト(同じ eTLD+1)に限られる。

手順の要点は次のとおり。

  • 新アプリのマニフェストに migrate_from を置き、旧オリジンを列挙する。移行先マニフェストには id が必須である。
  • 旧オリジンの /.well-known/web-app-origin-association で、移行先アプリに allow_migration: true を付ける。
  • 任意で旧マニフェストの migrate_to により、利用者が新サイトを訪れる前から更新を促せる。旧 URL をリダイレクトする場合は、migrate_from 内の install_url でリダイレクトされない旧マニフェスト取得先を残す。
  • behavior は既定の suggest(受動的な通知)と、起動時に更新かアンインストールを求める force がある。force では名前・アイコンの同時変更はできず、移行後の通常更新で提示される。
  • エンタープライズの WebAppInstallForceList で強制インストールされたアプリには移行 UI は出ず、ポリシーにより移行できない旨のバナーが出る。

新アプリ側の宣言例は次のとおり。

json
{
  "name": "File Manager",
  "id": "/files/",
  "start_url": "/files/index.html",
  "migrate_from": [
    "https://drive.google.com/"
  ]
}

旧オリジン側の承認例は次のとおり。

json
{
  "https://fileman.google.com/files/": {
    "allow_migration": true
  }
}

#参考文献