マキモノ
Web開発無料✅ 公式検証済みv1.0.0 / 更新

PWA デプロイ即反映 — Service Worker 自動 reload レシピ

PWA のスマホ側で新版が反映されない問題を、SW の VERSION+postMessage+updateViaCache=none+版タグ表示 の3点セットで「デプロイ即・全tab自動 reload」に変える完全レシピ。Next.js/Vite/Vanilla 共通

出品者: kim@orgiast.jp2 DL📖 読込 約1,495トークン (約2円)💰 コスパ 5
トークン節約メーター95%節約
ゼロからAIに作らせた場合8,000トークン
このMDを読ませた場合400トークン

7,600トークンの節約 (API料金換算で約11円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。

この巻物について

PWA デプロイ即反映 — Service Worker 自動 reload レシピ」は、Web開発カテゴリのAI指示書(MDファイル)です。PWA のスマホ側で新版が反映されない問題を、SW の VERSION+postMessage+updateViaCache=none+版タグ表示 の3点セットで「デプロイ即・全tab自動 reload」に変える完全レシピ。Next.js/Vite/Vanilla 共通この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約7,600トークン(API料金換算で約11円)・95%のトークンを節約できます。

カテゴリ
Web開発
対応AI
claude-code、cursor、codex-cli
ライセンス
商用利用可 (再販不可)
価格
無料
ゼロから開発時
約8,000トークン
この巻物使用時
約400トークン
節約量
約7,600トークン (約11円)
更新日
2026-08-20

使い方 (AIに渡す3つの方法)

いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。

⬇ .md をダウンロード
claude "https://makimono-md.vercel.app/api/v1/files/pwa-service-worker-reload/raw を読み込んで、この指示書どおりに実装して"
claude-codecursorcodex-cliライセンス: 商用利用可 (再販不可)

中身

PWA デプロイ即反映(Service Worker 自動 reload)— 完全再現指示書

Next.js / Vite / Vanilla の PWA で、コードを更新して server が新版を配信していても、 スマホ側は Service Worker と Chrome HTTP キャッシュで 古い bundle を掴んだまま になる問題を、 「デプロイ即・全 tab 自動 reload」に変える完全レシピ。

何が起きる問題か

  • server は新版を返している (HTML bundle 差し替え済み)
  • SW が古い bundle を cache から返している / Chrome の HTTP キャッシュが古い .js を返す
  • クライアントは 1 週間前の UI が表示されたまま
  • ユーザーに「PWA を削除して入れ直して」と言うのは苦しい

3 点セット(これで解決)

1. Service Worker に VERSION 定数 + activate で全 tab に postMessage

public/sw.js:

const VERSION = 'vN-YYYY-MM-DD'; // deploy ごとに bump

self.addEventListener('install', (e) => {
  self.skipWaiting();
});

self.addEventListener('activate', (e) => {
  e.waitUntil((async () => {
    await self.clients.claim();
    const tabs = await self.clients.matchAll({ type: 'window' });
    for (const t of tabs) {
      try { t.postMessage({ type: 'sw-updated', version: VERSION }); } catch {}
    }
  })());
});

// network-first passthrough — server が生きてる時は常に fresh を fetch
self.addEventListener('fetch', (event) => {
  event.respondWith(fetch(event.request).catch(() => new Response('offline', { status: 503 })));
});

2. クライアント側: SW register 時に updateViaCache='none' + message listener で自動 reload

React 例 (Vite / Next.js どちらでも同じ):

useEffect(() => {
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('/sw.js', {
      scope: '/',
      updateViaCache: 'none', // SW 自体のキャッシュを回避
    }).then((reg) => {
      reg.update().catch(() => {});
      navigator.serviceWorker.addEventListener('message', (e) => {
        if (e.data?.type === 'sw-updated') {
          window.location.reload();
        }
      });
    }).catch(() => {});
  }
}, []);

3. UI に版番号タグを表示(人間が新旧を目視判別)

タイトルバー / ヘッダに版番号を出す:

<h1>アプリ名 <span className="text-[9px] text-zinc-600 ml-1">v3-08-04</span></h1>

デプロイフロー

大きな UI 変更をした時:

  1. sw.jsVERSION 定数を bump ('v3-08-04''v4-08-05')
  2. UI 側のタグも合わせて更新
  3. デプロイ
  4. 開いてる全 PWA が SW update → activate → 全 tab に postMessage → 自動 reload

検証

デプロイ後、実機の PWA を開いて:

  • 版番号タグが新しくなっているか目視確認
  • なっていなければキャッシュクリア (最初の 1 回だけ、以後は自動)

Why これで解決するのか

  • updateViaCache: 'none' は SW 本体の fetch を必ずネットワークにする → 新 VERSION 検知が早い
  • skipWaiting() + clients.claim() で「次の tab close まで待たずに」新 SW が activate
  • postMessage → location.reload() で開いてる tab を強制更新
  • ネットワークファースト fetch で JS/HTML bundle も新版を掴む

やらないこと

  • caches.open() で pre-cache しない (キャッシュ管理コスト >>> 帯域節約)
  • Chrome の HTTP キャッシュヘッダ (Cache-Control) だけに頼らない (SW を挟む以上 SW 側の制御が必要)
  • サービス側で「更新あります」バナーを出す UX は 1 tap 追加になり離脱するので、自動 reload の方が良い

適用範囲

  • Next.js App Router / Pages Router いずれも
  • Vite + React / Vue
  • Vanilla HTML PWA
  • Cordova / Capacitor 系にも Web View 部分は同じ

よくある質問

「PWA デプロイ即反映 — Service Worker 自動 reload レシピ」とは何ですか?

PWA のスマホ側で新版が反映されない問題を、SW の VERSION+postMessage+updateViaCache=none+版タグ表示 の3点セットで「デプロイ即・全tab自動 reload」に変える完全レシピ。Next.js/Vite/Vanilla 共通

どれくらいトークン(費用)を節約できますか?

ゼロから開発すると約8,000トークンかかりますが、この巻物を使えば約400トークンで済みます。差し引き約7,600トークン(API料金換算で約11円)・95%の節約です。

どうやって使いますか?

無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。

どのAIツールに対応していますか?

claude-code、cursor、codex-cli に対応しています。

商用利用できますか?

ライセンスは「商用利用可 (再販不可)」です。

🤝 自分でAIを動かすのは、まだ不安…という方へ

この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。

AI代行堂を見る →

関連する巻物

この巻物、誰かのトークンも救えます

𝕏 で節約レシートをシェア