200stack ロゴ

$ open /docs/nextjs-build-cache/

Next.js 16.0〜16.2 のビルドを速くする

Next.js 16.0〜16.2 を使って 200stack でサイトをビルドしている方向けのご案内です。16.3 系へ上げると、2 回目以降の next build が速くなります。

ドキュメントへ戻る

どんなことが起きますか

200stack は、前回のビルドで作られたキャッシュ(.next/cache)を保存し、次のビルドの前に復元しています。変更のない部分の処理を省いて、ビルドを速くするためです。

ところが Next.js 16.0〜16.2 では、Turbopack(Next.js 16 の標準のビルドツール)が next build の途中結果をキャッシュへ書き込む機能が初期設定でオフになっています。そのため、キャッシュを復元しても中身がほとんど空で、next build は毎回最初からのビルドになり、時間が短くなりません。

サイトの表示や公開される内容に問題が出るわけではありません。ビルドにかかる時間だけの話です。

おすすめの対応:Next.js 16.3 系へ上げる

Next.js 16.3 からは、next build のキャッシュ機能が初期設定でオンになりました。設定を足さなくても、200stack が復元したキャッシュがそのまま使われます。

アップデートの例です(お使いのパッケージマネージャーに合わせてください)。

# npm
npm install next@~16.3 eslint-config-next@~16.3

# pnpm
pnpm add next@~16.3
pnpm add -D eslint-config-next@~16.3
  • @next/mdx など @next/ で始まるパッケージを使っている場合は、同じ版にそろえてください。
  • package.json に ^16.3.x と書くと、将来 16.4 などの新しい版が入ることがあります。16.3 系に留めたい場合は ~16.3.x と書いてください。

すぐ上げられない場合:設定で有効にする(16.1・16.2)

すぐに 16.3 系へ上げられない場合の代わりとして、16.1・16.2 では next.config に次の設定を足すと、next build のキャッシュが使われるようになります。

// next.config.ts
import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  experimental: {
    turbopackFileSystemCacheForBuild: true,
  },
}

export default nextConfig

この設定は実験的な機能です

experimental の設定のため、動作は保証されていません。できるだけ早めに 16.3 系へ上げることをおすすめします。また、16.0 系の安定版ではこの設定を使えません(足すと next build も next dev もエラーで止まります)。16.0 系をお使いの場合は 16.3 系へ上げてください。

版ごとの扱い

16.0.x 初期設定でオフ。安定版ではこの設定を使えません(足すと next build も next dev もエラーで止まります) 16.3 系へ上げてください
16.1.x・16.2.x 初期設定でオフ。experimental.turbopackFileSystemCacheForBuild: true で有効にできます(実験的な機能) 16.3 系へ上げるか、設定を足してください
16.3.x 以降 初期設定でオン 対応は不要です

いずれも Turbopack でビルドしている場合(Next.js 16 の初期設定)の扱いです。

どのくらい速くなりますか(目安)

当社のサイト(Next.js の静的書き出し、約 60 ページ)を 16.0 系から 16.3 系へ上げて 200stack でビルドしたところ、キャッシュがある状態の 2 回目以降の next build は、約 25〜27 秒から約 8〜10 秒になりました(約 64% 短縮)。

効果はサイトの規模や構成によって変わります。また、短くなるのは next build の部分です。依存パッケージのインストールや配信の処理などを含めた、公開までの全体の時間がそのぶん縮むとは限りません。初回のビルド(キャッシュがまだない状態)や依存パッケージを更新した直後は、これまでどおりの時間がかかります。

上げるときの注意

上げる前に、お手元でビルドを確かめてください

npm run build(または next build)が成功すること、できればテストやリントも通ることを確かめてから 200stack へ反映してください。

型チェックでエラーが出ることがあります

当社のサイトでは、16.3 で型定義が変わったことにより、テストコード内の process.env の書き方が next build の型チェックで落ちました。エラーが出た場合はメッセージに沿ってコードを直してください。

出力されるファイル名が変わることがあります

当社のサイトでは、画像などのファイル名に付く識別子(ハッシュ)の形式が変わり、_next/ 以下のファイル数が減りました。ページの本文・リンク・画像の表示に違いはありませんでした。ファイル名を直接参照している仕組みがあれば確認してください。

キャッシュが原因と思われるときは無効にできます

変更が反映されないなど、キャッシュが原因と思われる問題が起きたときは、next.config で experimental.turbopackFileSystemCacheForBuild: false を設定すると、キャッシュを使わずに毎回最初からビルドします。

そのほかの 16.3 の変更点は、Next.js の公式リリースノートをご確認ください。

参考(Next.js 公式)