React Compiler
React Compiler が OSS として公開されました。Babel plugin として現状提供されており、IR/SSR への変換などは Rust で実装されています。
react/compiler at 149b917c8a4022aeaa170c4fb826107dd2333c68 · facebook/react
どのような変換が行われるかは React Compiler Playground で試すことが出来ます。
合わせて React Compiler のドキュメントも公開されました。
次のような状況のようです。
- フィードバックを受けるために OSS 化された、まだ実験的な機能。
- Vite と Webpack つまり Remix や Next.js でも動く。
- Babel プラグインで提供されているので、Babel を使うように設定すれば使えるのは当たり前ではある。
- Next.js は、既に option での提供を準備しているようです。
- Babel で提供されたことに対してネガティヴな意見が見られるが、コアは Rust で分けて実装されているため、他の手段での提供も十分に考えられる。
react-compiler-healthcheckやeslint-plugin-react-compilerを利用することで、正常にコンポーネントやライブラリを最適化できるかを確認できる。- React のルールに従っている、
で問題なく動作することが条件のようです。
- React のルールに従っている、
- 段階的に利用するために、ディレクトリ毎や、オプトインモード(アノテーションモード)によるコンポーネント・フック毎の React Compiler の導入もできる。
compilationMode: "annotation"オプションを渡すことで、use clientのようにuse memoを付けたコンポーネントやフックのみに適用できる。ただし、これは早期採用者を支援するための機能とのこと。