Source: React Compiler v1.0 · Lauren Tan, Joe Savona, Mofei Zhang · October 7, 2025
The React team shipped React Compiler 1.0. It optimizes components and hooks through automatic memoization on React and React Native—without rewrites. Battle-tested at Meta; the culmination of nearly a decade of compiler work from Prepack through Hooks design to CFG-based HIR rewrites.

How it works
A build-time Babel plugin (largely decoupled from Babel long-term). It lowers AST to HIR, analyzes data flow and mutability, and memoizes render values granularly—including after conditional returns where manual useMemo cannot help.
Validation passes encode the Rules of React; diagnostics surface primarily via eslint-plugin-react-hooks.
Install
npm install --save-dev --save-exact babel-plugin-react-compiler@latest
Compatible with React 17+; pre-19 apps need react-compiler-runtime and minimum target config.
Production results
Meta Quest Store: ~12% faster initial loads and navigations; some interactions 2.5x+ faster; neutral memory.
ESLint integration
Upgrade to eslint-plugin-react-hooks@latest with the recommended preset. Remove legacy eslint-plugin-react-compiler. Rules cover set-state-in-render, set-state-in-effect, refs, and more.
What about useMemo / useCallback?
The compiler often matches or beats manual memoization. Keep them as escape hatches for precise effect dependencies. Don't remove existing memoization without testing.
New apps
Enabled by default in Expo SDK 54+. Opt-in templates in create-vite and create-next-app.
Existing apps: follow the incremental adoption guide.
swc (experimental)
Faster Next.js 15.3.1+ builds with the compiler enabled. Vite users enable via vite-plugin-react; oxc support incoming.
Upgrading
Memoization strategy may evolve between compiler versions—pin exact versions if Rules of React violations hide under weak tests.
For React-heavy frontends, Compiler 1.0 is the clearest step to reduce manual memoization burden.
