Next.js の Runtime config が deprecated になるまでを整理する

February 16, 2025

はじめに

フロントエンドエンジニアのryoです。今回は 既にdeprecatedとされているRuntime configについて、個人的になぜdeprecatedになったのか気になったので、 主にgithubのissueやPRを見てみて、その経緯をまとめようと思います。

v5.1.0: Runtime config のリリース

v5.1でリリースされた様です。こちらがその時のリリースノートのEnvironment configurationの項目です。 読むと、以下の様なことが書いてあります。

  • 一般的なNode.jsで動くアプリケーションは環境変数をどこでも扱えるがNext.jsでは一部参照が出来なかった
    • Next.jsはクライアント側でも動作するため
  • クライアント側でも環境情報を参照出来るように以下の4つの方法が提供された
    • publicRuntimeConfig
    • serverRuntimeConfig
    • next.config.js
    • next/config

現在多機能なnext.config.jsは、この機能のために実装された事が伺えます。

補足

v9.1.7: Next.jsの公式ドキュメントが刷新される

https://github.com/vercel/next.js/releases/tag/v9.1.7 でドキュメントが刷新されたようです。

v9.4.7: NEXT_PUBLIC_*のリリース

https://github.com/vercel/next.js/releases/tag/v9.4.0 では環境変数周りの変更が多く含まれており、そのうちの1つにNEXT_PUBLIC_ env varの追加がありました。 環境変数に関する変更はこの議論によってスタートしたようで、publicRuntimeConfigNEXT_PUBLIC_ env var についての議論も行われていました。 ざっくり以下のような雰囲気でした。

  • publicRuntimeConfigはもう不要ではないか、とこの時点で言っている方もいるが、半数以上はpublicRuntimeConfigはまだ用途があるというスタンスで好意的な意見を持っている印象
    • 具体的には、複雑なオブジェクトはNEXT_PUBLIC_* よりもpublicRuntimeConfigが良いという意見が見受けられた

私としては環境変数をクライアントでも利用できるようにと実装された機能が、ユースケースに応じて拡張されていたような印象を受けました。

v12.2.3 Output File Tracing のドキュメントに runtime configは legacyであると記載される

https://github.com/vercel/next.js/releases/tag/v12.2.3 でOutput File Tracingのドキュメントにruntime configがlegacyであると記載されました。 ドキュメントの更新PRはこちらです。 この更新がされたきっかけはこの standaloneモードruntimeConfigが機能しないというissueのようです。

補足

v13.0.6 runtime config のドキュメントに legacyが記載される

https://github.com/vercel/next.js/releases/tag/v13.0.6 でruntime configのドキュメントにもlegacyな機能である事が明記されました。 PRはこちらです。内容を見るとこのPR作成者もstandaloneモード利用時にruntimeConfigで困り、ドキュメントの更新PRを作成した様子でした。

v14.0.2: runtime config はdeprecatedであると明記される

https://github.com/vercel/next.js/releases/tag/v14.0.2This feature is deprecated と記載されました。RSCの機能とも相性が悪かった事も、背景の1つに見えます。

まとめ

今回はNext.jsのRuntime configが実装されてからdeprecatedになるまでをgithubのissueやPRを見て振り返りました。 リリースを追っているだけでは見えてこなかった背景が見えて、とても勉強になりました。また、Decision Recordが残っていたためとても調べやすかったです。 私自身普段からドキュメントは残すように心がけているのですが、改めてその重要性を感じました。ここまで読んでいただき、ありがとうございました。