バージョン11へのアップグレード方法
バージョン11にアップグレードするには、以下のコマンドを実行してください:
補足: TypeScriptを使用している場合、
@types/react
と@types/react-dom
も対応するバージョンにアップグレードしてください。
Webpack 5
Webpack 5がすべてのNext.jsアプリケーションのデフォルトになりました。カスタムwebpack設定がない場合、アプリケーションはすでにwebpack 5を使用しています。カスタム設定がある場合は、Next.js webpack 5ドキュメントを参照してアップグレードしてください。
distDir
のクリーンがデフォルトに
ビルド出力ディレクトリ(デフォルトは.next
)は、Next.jsキャッシュを除いてデフォルトでクリアされるようになりました。詳細はcleaning distDir
RFCを参照してください。
この動作に依存していた場合は、next.config.js
にcleanDistDir: false
フラグを追加して無効化できます。
next dev
とnext start
でPORT
がサポート
Next.js 11では、アプリケーションが実行されるポートを設定するPORT
環境変数がサポートされました。-p
/--port
の使用が推奨されますが、-p
が使用できない場合にPORT
を代替として使用できます:
例:
next.config.js
での画像インポートカスタマイズ
Next.js 11ではnext/image
による静的画像インポートがサポートされました。この新機能は画像インポートの処理に依存しています。以前next-images
やnext-optimized-images
パッケージを使用していた場合、next/image
の組み込みサポートに移行するか、機能を無効にできます:
pages/_app.js
からsuper.componentDidCatch()
を削除
next/app
コンポーネントのcomponentDidCatch
はNext.js 9で非推奨となり、無効化されていました。Next.js 11で完全に削除されました。
pages/_app.js
にカスタムcomponentDidCatch
メソッドがある場合、super.componentDidCatch
は不要なので削除できます。
pages/_app.js
からContainer
を削除
このエクスポートはNext.js 9で非推奨となり、開発時に警告が表示されていました。Next.js 11で削除されました。
pages/_app.js
でnext/app
からContainer
をインポートしている場合、削除してください。詳細はドキュメントを参照してください。
ページコンポーネントからprops.url
の使用を削除
このプロパティはNext.js 4で非推奨となり、開発時に警告が表示されていました。getStaticProps
/getServerSideProps
の導入により、これらのメソッドではすでにprops.url
の使用が禁止されていました。Next.js 11で完全に削除されました。
詳細はドキュメントを参照してください。
next/image
のunsized
プロパティを削除
next/image
のunsized
プロパティはNext.js 10.0.1で非推奨となりました。代わりにlayout="fill"
を使用できます。Next.js 11でunsized
は削除されました。
next/dynamic
のmodules
プロパティを削除
next/dynamic
のmodules
とrender
オプションはNext.js 9.5で非推奨となりました。これはnext/dynamic
APIをReact.lazy
に近づけるためです。Next.js 11でこれらのオプションは削除されました。
このオプションはNext.js 8以降ドキュメントに記載されていないため、使用している可能性は低いです。
使用している場合はドキュメントを参照してください。
Head.rewind
を削除
Head.rewind
はNext.js 9.5以降無効化されていました。Next.js 11で削除されました。安全に削除できます。
Moment.jsロケールがデフォルトで除外
Moment.jsには多くのロケールの翻訳が含まれています。Next.jsではバンドルサイズ最適化のため、デフォルトでこれらのロケールを除外するようになりました。
特定のロケールを読み込むには以下のコードを使用します:
この新しいデフォルト動作を無効にするには、next.config.js
にexcludeDefaultMomentLocales: false
を追加します。ただし、この最適化を無効にすることは推奨されません。
router.events
の使用法を更新
プリレンダリング中にrouter.events
にアクセスしている場合、Next.js 11ではrouter.events
はプリレンダリング中に提供されなくなりました。useEffect
内でアクセスするようにしてください:
非公開の内部プロパティであるrouter.router.events
を使用している場合は、router.events
を使用するようにしてください。
React 16から17への移行
React 17では新しいJSX Transformが導入され、Next.jsの長年の機能(JSX使用時にimport React from 'react'
が不要)がReactエコシステム全体に広がりました。React 17を使用すると、Next.jsは自動的に新しい変換を使用します。この変換はReact
変数をグローバルにしません(これは以前のNext.js実装の意図しない副作用でした)。React
をインポートせずに使用している場合、自動修正用のcodemodが利用可能です。
ほとんどのアプリケーションはすでに最新バージョンのReactを使用しています。Next.js 11では、Reactの最小バージョンが17.0.2に更新されました。
アップグレードするには以下のコマンドを実行します:
またはyarn
を使用する場合: