2026-07-01
Salesforce モバイルアプリの LWC キャッシュは 10 分では消えない
LWC の登録画面をリリースした後、Salesforce モバイルアプリ上で一部ユーザーが旧バージョンの画面を操作し続けるという事象が発生しました。公式ドキュメントを調べ、Salesforce サポートにも確認した結果をまとめます。
Lightning Experience のキャッシュ(ブラウザ)
公式ドキュメント HTTP Caching for Custom Components には、LWC のコード変更は HTTP キャッシュにより最大 10 分程度反映が遅れる可能性があると記載されています。
Cache-Control: max-age=300, stale-while-revalidate=300
max-age=300 はキャッシュの有効期間(5 分)、stale-while-revalidate=300 はその後さらに 5 分間、古いキャッシュを返しながらバックグラウンドで更新を試みる期間です。合計で最大 10 分の遅延が発生しえます。
モバイルアプリのキャッシュは別物
この 10 分という数字は Lightning Experience(ブラウザ)向けの話です。
Salesforce サポートへの確認で、以下の回答を得ました。
Salesforce モバイルアプリケーションには端末に依存する固有の強いキャッシュがありますため、LWC のリリース後 10 分を超えて古い LWC が表示される可能性がございます。
つまり、モバイルアプリはブラウザの HTTP キャッシュとは異なる端末レベルのキャッシュを持っており、TTL が保証されていません。
ブラウザとモバイルの違いをまとめると以下の通りです。
| Lightning Experience(ブラウザ) | Salesforce モバイルアプリ | |
|---|---|---|
| キャッシュの種類 | HTTP キャッシュ | 端末依存の固有キャッシュ |
| TTL | max-age=300(最大 10 分) | 不定(10 分超えの可能性あり) |
| キャッシュバスティング | — | 効かない |
URL パラメータ等のキャッシュバスティングについても、次の回答を得ています。
LWC は端末が保持するキャッシュを元に動作しますため、最新の LWC を強制的に読み込むには端末毎にキャッシュクリア手順を行うことが必要になってしまいます。
現状の対処法
ユーザーによる手動キャッシュクリア
サポートから案内された公式手順です。
- Salesforce アプリでユーザープロファイルのアバター(左上)をタップし、[設定] を選択
- [詳細] をタップ
- [キャッシュされたデータをクリア] をタップ
- アプリを強制終了して再起動し、ページを更新
リリース時にはユーザーへのアナウンスとしてこの手順を案内する必要があります。
Apex でキャッシュクリアの要否を通知する(ワークアラウンド)
サポートから提案として挙げられたのが、LWC から Apex を呼び出してサーバー側でキャッシュクリアの要否を判定し、アプリ画面上でユーザーに通知するというカスタマイズです。
あくまでキャッシュクリアの必要性を通知する手段とはなり、また構成も考え得る一例ではございますが、ご検討時の一つのご参考としていただけますと幸いでございます。
キャッシュを強制クリアする手段ではなく、「手動でキャッシュをクリアしてください」という案内をアプリ内で出す仕組みです。リリースフラグのようなものをサーバー側で管理し、LWC 初期化時に Apex で照合する構成が考えられます。
おわりに
現時点では、Salesforce モバイルアプリの LWC キャッシュをプログラムから強制クリアする手段はサポートされていないようです。ユーザーへの手動対応の案内か、Apex を使ったキャッシュクリア通知のカスタマイズが現実的な選択肢になっています。
同様の問題に当たった方で、より良いアプローチをご存知の方がいれば教えていただけると助かります。