サポート対象ブラウザ
Next.jsはモダンブラウザをゼロコンフィグでサポートしています。
- Chrome 64+
- Edge 79+
- Firefox 67+
- Opera 51+
- Safari 12+
Browserslist
特定のブラウザや機能をターゲットにしたい場合、Next.jsはpackage.json
ファイルでのBrowserslist設定をサポートしています。Next.jsはデフォルトで以下のBrowserslist設定を使用します:
{
"browserslist": [
"chrome 64",
"edge 79",
"firefox 67",
"opera 51",
"safari 12"
]
}
ポリフィル
Next.jsは以下の広く使われるポリフィルを自動的に注入します:
- fetch() — 代替:
whatwg-fetch
とunfetch
- URL — 代替:
url
パッケージ (Node.js API) - Object.assign() — 代替:
object-assign
,object.assign
,core-js/object/assign
依存関係にこれらのポリフィルが含まれている場合、重複を避けるためプロダクションビルドから自動的に削除されます。
さらに、バンドルサイズを削減するため、Next.jsはこれらのポリフィルを必要なブラウザに対してのみロードします。グローバルなウェブトラフィックの大部分ではこれらのポリフィルはダウンロードされません。
カスタムポリフィル
自身のコードや外部npm依存関係がターゲットブラウザ(IE 11など)でサポートされていない機能を必要とする場合、自分でポリフィルを追加する必要があります。
この場合、カスタム <App>
または個々のコンポーネントで、必要な特定のポリフィルをトップレベルでインポートしてください。
JavaScript言語機能
Next.jsでは最新のJavaScript機能をすぐに使用できます。ES6機能に加え、Next.jsは以下もサポートしています:
- Async/await (ES2017)
- オブジェクトのRest/Spreadプロパティ (ES2018)
- 動的
import()
(ES2020) - オプショナルチェイニング (ES2020)
- Null合体演算子 (ES2020)
- クラスフィールド と 静的プロパティ (stage 3提案の一部)
- その他多数!
サーバーサイドポリフィル
クライアントサイドのfetch()
に加え、Next.jsはNode.js環境でまだ利用できない場合にfetch()
をポリフィルします。Node.js自体が使用するのと同じ実装であるundici
を使用します。isomorphic-unfetch
やnode-fetch
などのポリフィルを使用せずに、サーバーコード(getStaticProps
/getServerSideProps
など)でfetch()
を使用できます。
TypeScript機能
Next.jsにはTypeScriptサポートが組み込まれています。詳細はこちら
Babel設定のカスタマイズ(上級者向け)
Babel設定をカスタマイズできます。詳細はこちら