iOSでホーム画面に追加したURLが勝手に変わる?原因と対策(PWA・manifestの罠)

iOSでホーム画面に追加したURLが勝手に変わる原因と対策(PWA・manifestの罠)

最終更新:2026/04/23

Webアプリをホーム画面に追加したとき、「開いているURLと違うURLが保存される」という現象に遭遇したことはありませんか?

実際に、/petal/{token} を開いているのに、ホーム画面には /petal/@username が保存されてしまう問題が発生しました。

結論から言うと、原因は manifest.json の設定 です。完全に私のミスですが。

原因:maskableアイコン + start_url

問題のあるmanifestはこんな感じです。

{
  "name": "名刺アプリ",
  "short_name": "Petal",
  "display": "standalone",
  "start_url": "/petal/@ojapp",
  "icons": [
    {
      "src": "/icon.png",
      "sizes": "192x192",
      "type": "image/png",
      "purpose": "maskable"
    }
  ]
}

一見問題なさそうですが、これが原因で以下のような挙動になります。

  • iOSが「これはPWA」と認識する
  • start_urlを優先する
  • ホーム画面に追加するURLが上書きされる

つまり、今開いているURLではなく、start_urlが保存されるという状態になります。

なぜiOSで起きるのか

iOS Safariは通常、manifestをほとんど無視します。

しかし以下の条件が揃うと挙動が変わります。

  • display: standalone
  • maskableアイコン
  • PWAっぽい構成

この状態になると、start_urlが有効化されることがあります。

これが今回のバグの正体です。

解決方法

① purposeを修正する

{
  "purpose": "any maskable"
}

これでAndroidではmaskableが使われ、iOSでは無視されやすくなります。このanyが入るだけで挙動が変わります。
Android用に”purpose”: “maskable”だけを設定すると、今のiOSはPWAの動きに変わりstart_urlを使い始めます。

② start_urlを削除 or “.” にする

{
  "start_url": "."
}

“.” は「現在開いているURLを使う」という意味です。

これにより、ホーム画面追加時にURLが上書きされなくなります。

設計的に重要なポイント

ホーム画面に追加されるURLは以下で決まります。

  • アドレスバーのURL
  • manifestのstart_url(条件付き)

特にiOSは仕様が不安定で、突然挙動が変わることがあります。

そのため、

  • URLを勝手に書き換えない
  • manifestで固定URLを指定しない

これが重要です。
私は単純にURLを間違って指定していたがPWAが発動してなかったのでミスになってなかったのに、”purpose”: “maskable”を記入したことでstart_urlまで発動して違うURLに飛んでしまっていたんですね。(笑)

まとめ

  • maskable単体は危険
  • start_urlはiOSで効く場合がある
  • URLが勝手に変わる原因になる
  • 対策は「any maskable」と「start_url: “.”」

iOSのPWAはまだ発展途上です。

「急に動かなくなった」ときは、まずmanifestを疑うのが正解かもしれません。

OJappのWebアプリをまとめてチェック

PWA(Progressive Web App)技術をベースに、ホーム画面追加・オフライン動作・軽量UXを実現したツールをまとめています。

PetalやOJapp、オフライン対応のOJ-Passなど、日常の使い方を少しだけ変えるWebアプリを一覧で確認できます。

👉 OJapp Tools 一覧を見る

https://ojapp.app/top

>OJapp / Petal

OJapp / Petal

OJappは、Webページをそのままホーム画面に置ける仕組みを提供しています。
Petalは、その仕組みを使って “人のページを名刺のように持つ”ためのサービスです。
QRからすぐ開けて、ログインなしでも見れる。 でも、必要なときだけつながれる。
そんな「弱いつながり」を残すために作られています。

CTR IMG