バージョン13
バージョン12から13へのアップグレード
Next.js version 13に更新するには、お好みのパッケージマネージャーで次のコマンドを実行します:
補足: TypeScriptを使用している場合、
@types/react
と@types/react-dom
も最新版にアップグレードしてください。
v13 概要
- サポートブラウザが変更され、Internet Explorerのサポートが終了し、モダンブラウザを対象とします。
- Node.jsの最小バージョンが12.22.0から16.14.0に引き上げられました。12.xと14.xがライフサイクルの終了に達したためです。
- Reactの最小バージョンが17.0.2から18.2.0に引き上げられました。
swcMinify
の設定プロパティがfalse
からtrue
に変更されました。詳細はNext.js コンパイラを参照してください。next/image
のインポートがnext/legacy/image
に名称変更されました。next/future/image
のインポートがnext/image
に名称変更されました。インポートを安全かつ自動的に名称変更するためのコードモッドが利用可能です。next/link
の子要素は<a>
タグではなくなりました。レガシーの動作を使用するにはlegacyBehavior
プロパティを追加するか、アップグレードするために<a>
を削除してください。コードを自動的にアップグレードするコードモッドが利用可能です。target
設定プロパティが削除され、出力ファイルトレースに置き換えられました。
共有機能の移行
Next.js 13は新しいapp
ディレクトリと新機能、規約を導入しました。ただし、Next.js 13へのアップグレードは新しいapp
ディレクトリの使用を必須としません。
更新されたイメージコンポーネント、Linkコンポーネント、Scriptコンポーネント、フォント最適化など、両方のディレクトリで動作する新機能を使いながら、pages
ディレクトリを引き続き使用できます。
<Image/>
コンポーネント
Next.js 12では、next/future/image
の一時的なインポートにより、イメージコンポーネントに多くの改善が加えられました。これらの改善には、クライアントサイドJavaScriptの削減、画像の拡張とスタイリングの簡易化、アクセシビリティの向上、ネイティブブラウザの遅延読み込みが含まれます。
Next.js 13以降、この新しい動作がnext/image
のデフォルトになります。
新しいイメージコンポーネントへの移行を支援する2つのコードモッドがあります:
- next-image-to-legacy-image:このコードモッドは、Next.js 12と同じ動作を維持するために、
next/image
インポートをnext/legacy/image
に安全かつ自動的に名称変更します。Next.js 13に自動的に更新するために、このコードモッドの実行をお勧めします。 - next-image-experimental:前のコードモッドを実行した後、このexperimentalコードモッドを任意で実行して、
next/legacy/image
を新しいnext/image
にアップグレードできます。これにより、未使用のプロパティが削除され、インラインスタイルが追加されます。このコードモッドは実験的であり、静的な使用法(<Image src={img} layout="responsive" />
など)のみをカバーし、動的な使用法(<Image {...props} />
など)はカバーしないことに注意してください。
または、移行ガイドに従って手動で更新し、レガシー比較も参照してください。
<Link>
コンポーネント
<Link>
コンポーネントは、子要素として<a>
タグを手動で追加する必要がなくなりました。この動作はversion 12.2で実験的オプションとして追加され、現在はデフォルトになっています。Next.js 13では、<Link>
は常に<a>
をレンダリングし、基盤となるタグにプロパティを転送できます。
例:
リンクをNext.js 13にアップグレードするには、new-link
コードモッドを使用できます。
<Script>
コンポーネント
next/script
の動作が更新され、pages
とapp
の両方をサポートするようになりました。app
を段階的に採用する場合は、アップグレードガイドをお読みください。
フォント最適化
従来、Next.jsはフォントCSSをインライン化することでフォントを最適化していました。バージョン13では、新しいnext/font
モジュールを導入し、優れたパフォーマンスとプライバシーを確保しながら、フォントの読み込み体験をカスタマイズできるようになりました。
next/font
の使用方法については、フォントの最適化を参照してください。