筆者が自身の運営するサービス「SparMate」のローンチ当日に遭遇したインシデントの体験記です。Next.js 16.0.0(2025年10月リリース)でimages.minimumCacheTTLのデフォルト値が60秒から14,400秒(4時間)に変更されたことにより、/_next/image経由で配信されるOGP画像が4時間キャッシュされ、更新が反映されなくなる問題が起きました。デフォルト値変更の理由は、アップストリームがCache-Controlを返さない画像が多く、60秒では無駄な再バリデーションが多すぎるためとされています。
筆者はローンチ当日にOGP画像のテキストのタイポを発見し修正デプロイしたものの、表示が4時間更新されず、ローンチ時刻に間に合わせるため告知ツイートからOGPカード表示を一時的に外すという対応を取ったとのことです。対処法としては、next.config.tsでminimumCacheTTL: 60を明示的に指定してNext.js v15以前の挙動に戻す方法と、/api/ogで直接配信してこの設定の影響を受けないようにする方法が紹介されています。なお、images.domainsも同バージョンで非推奨化されています。
出典が伝えている要点
- Next.js 16.0.0(2025年10月リリース)で images.minimumCacheTTL のデフォルト値が60秒から14,400秒(4時間)に変更された
- /_next/image 経由で配信されるOGP画像はこの変更により4時間キャッシュされ、更新が反映されなくなる
- デフォルト値変更の理由は、アップストリームがCache-Controlを返さない画像が多く、60秒では無駄な再バリデーションが多すぎるためとされている(PR #84105に記載)
- next.config.tsでminimumCacheTTL: 60を明示的に指定すればNext.js v15以前の挙動に戻せる
- /api/ogで直接配信する場合はminimumCacheTTLの影響を受けない
- images.domainsも同バージョン(Next.js 16.0.0)で非推奨化された
- 筆者は自身が運営するSparMateというサービスのローンチ当日にOGP画像のテキストのタイポを発見し、修正デプロイ後も表示が4時間更新されないインシデントを経験した
- 筆者はローンチ時刻に間に合わせるため、告知ツイートからOGPカード表示を一時的に外すという対応を取った
原文より
v16.0.0 では『アップストリームに Cache-Control を返さない画像が多く、60s では無駄な再バリデーションが多すぎる』という理由でデフォルトが 14,400s に変更された
出典: zenn.dev