サポート対象ブラウザと機能
サポート対象ブラウザ
デフォルトでは、生成されたプロジェクトはすべてのモダンブラウザをサポートしています。Internet Explorer 9、10、および11のサポートには、ポリフィルが必要です。古いブラウザをサポートするためのポリフィルセットを使用するには、react-app-polyfill を使用してください。
サポート対象の言語機能
このプロジェクトは、最新のJavaScript標準のスーパーセットをサポートしています。ES6構文機能に加えて、以下の機能もサポートしています。
- べき乗演算子 (ES2016)。
- Async/await (ES2017)。
- オブジェクトのRest/Spreadプロパティ (ES2018)。
- 動的import() (ステージ4提案)
- クラスフィールドと静的プロパティ (ステージ3提案の一部)。
- JSX、Flow、およびTypeScript。
さまざまな提案のステージについて詳しく学習してください。
実験的な提案の使用には注意が必要ですが、Facebookでは製品コードでこれらの機能を積極的に使用しているため、これらの提案が将来変更された場合にもcodemodsを提供する予定です。
デフォルトでは、このプロジェクトにはポリフィルは含まれていません。
Array.from()
やSymbol
など、**ランタイムサポート**が必要なその他のES6+機能を使用する場合は、適切なポリフィルを手動で含めるか、ターゲットとするブラウザが既にそれらをサポートしていることを確認してください。
サポート対象ブラウザの設定
デフォルトでは、生成されたプロジェクトには、グローバルな使用率に基づいて幅広いブラウザをターゲットとする(本番ビルドでは> 0.2%
、開発ビルドではモダンブラウザ)、browserslist
構成がpackage.json
ファイルに含まれています。これにより、特にasync/awaitなどの言語機能を使用する場合に優れた開発エクスペリエンスが得られ、同時に本番環境でも多くのブラウザとの高い互換性が確保されます。
browserslist
構成は、出力されるJavaScriptを制御し、生成されたコードが指定されたブラウザと互換性を持つようにします。build
スクリプトを実行して本番ビルドを作成する際にはproduction
リストが使用され、start
スクリプトを実行する際にはdevelopment
リストが使用されます。https://browserl.ist を使用して、設定されたbrowserslist
でサポートされているブラウザを確認できます。
package.json
に指定されているbrowserslist
の例を以下に示します。
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
これは自動的にポリフィルを含まないことに注意してください。サポートするブラウザに基づいて、必要に応じて言語機能のポリフィルを適用する必要があります(上記を参照)。
browserslist
の設定を編集すると、変更がすぐに反映されない場合があります。これは、babel-loaderのバグにより、package.json
の変更が検出されないためです。簡単な解決策としては、node_modules/.cache
フォルダを削除して、再試行してください。