logo by @sawaratsuki1004
React
v19.2
Learn
Reference
Community
Blog

Is this page useful?

On this page

  • Overview
  • Compilation Control
  • Version Compatibility
  • Error Handling
  • Debugging
  • Feature Flags
  • Common Configuration Patterns
  • Default configuration
  • React 17/18 projects
  • Incremental adoption

    react@19.2

  • Overview
  • Hooks
    • useActionState
    • useCallback
    • useContext
    • useDebugValue
    • useDeferredValue
    • useEffect
    • useEffectEvent
    • useId
    • useImperativeHandle
    • useInsertionEffect
    • useLayoutEffect
    • useMemo
    • useOptimistic
    • useReducer
    • useRef
    • useState
    • useSyncExternalStore
    • useTransition
  • Components
    • <Fragment> (<>)
    • <Profiler>
    • <StrictMode>
    • <Suspense>
    • <Activity>
    • <ViewTransition> - This feature is available in the latest Canary version of React
  • APIs
    • act
    • addTransitionType - This feature is available in the latest Canary version of React
    • cache
    • cacheSignal
    • captureOwnerStack
    • createContext
    • lazy
    • memo
    • startTransition
    • use
    • experimental_taintObjectReference - This feature is available in the latest Experimental version of React
    • experimental_taintUniqueValue - This feature is available in the latest Experimental version of React
  • react-dom@19.2

  • Hooks
    • useFormStatus
  • Components
    • Common (e.g. <div>)
    • <form>
    • <input>
    • <option>
    • <progress>
    • <select>
    • <textarea>
    • <link>
    • <meta>
    • <script>
    • <style>
    • <title>
  • APIs
    • createPortal
    • flushSync
    • preconnect
    • prefetchDNS
    • preinit
    • preinitModule
    • preload
    • preloadModule
  • Client APIs
    • createRoot
    • hydrateRoot
  • Server APIs
    • renderToPipeableStream
    • renderToReadableStream
    • renderToStaticMarkup
    • renderToString
    • resume
    • resumeToPipeableStream
  • Static APIs
    • prerender
    • prerenderToNodeStream
    • resumeAndPrerender
    • resumeAndPrerenderToNodeStream
  • React Compiler

  • Configuration
    • compilationMode
    • gating
    • logger
    • panicThreshold
    • target
  • Directives
    • "use memo"
    • "use no memo"
  • Compiling Libraries
  • React DevTools

  • React Performance tracks
  • eslint-plugin-react-hooks

  • Lints
    • exhaustive-deps
    • rules-of-hooks
    • component-hook-factories
    • config
    • error-boundaries
    • gating
    • globals
    • immutability
    • incompatible-library
    • preserve-manual-memoization
    • purity
    • refs
    • set-state-in-effect
    • set-state-in-render
    • static-components
    • unsupported-syntax
    • use-memo
  • Rules of React

  • Overview
    • Components and Hooks must be pure
    • React calls Components and Hooks
    • Rules of Hooks
  • React Server Components

  • Server Components
  • Server Functions
  • Directives
    • 'use client'
    • 'use server'
  • Legacy APIs

  • Legacy React APIs
    • Children
    • cloneElement
    • Component
    • createElement
    • createRef
    • forwardRef
    • isValidElement
    • PureComponent
API Reference

Configuration

This page lists all configuration options available in React Compiler.

Note

For most apps, the default options should work out of the box. If you have a special need, you can use these advanced options.

// babel.config.js module.exports = { plugins: [ [ 'babel-plugin-react-compiler', { // compiler options } ] ] };


Compilation Control

These options control what the compiler optimizes and how it selects components and hooks to compile.

  • compilationMode controls the strategy for selecting functions to compile (e.g., all functions, only annotated ones, or intelligent detection).

{ compilationMode: 'annotation' // Only compile "use memo" functions }


Version Compatibility

React version configuration ensures the compiler generates code compatible with your React version.

target specifies which React version you’re using (17, 18, or 19).

// For React 18 projects { target: '18' // Also requires react-compiler-runtime package }


Error Handling

These options control how the compiler responds to code that doesn’t follow the Rules of React.

panicThreshold determines whether to fail the build or skip problematic components.

// Recommended for production { panicThreshold: 'none' // Skip components with errors instead of failing the build }


Debugging

Logging and analysis options help you understand what the compiler is doing.

logger provides custom logging for compilation events.

{ logger: { logEvent(filename, event) { if (event.kind === 'CompileSuccess') { console.log('Compiled:', filename); } } } }


Feature Flags

Conditional compilation lets you control when optimized code is used.

gating enables runtime feature flags for A/B testing or gradual rollouts.

{ gating: { source: 'my-feature-flags', importSpecifierName: 'isCompilerEnabled' } }


Common Configuration Patterns

Default configuration

For most React 19 applications, the compiler works without configuration:

// babel.config.js module.exports = { plugins: [ 'babel-plugin-react-compiler' ] };

React 17/18 projects

Older React versions need the runtime package and target configuration:

npm install react-compiler-runtime@latest

{ target: '18' // or '17' }

Incremental adoption

Start with specific directories and expand gradually:

{ compilationMode: 'annotation' // Only compile "use memo" functions }


Copyright © Meta Platforms, Inc
no uwu plz
uwu?
Logo by@sawaratsuki1004
Learn React
Quick Start
Installation
Describing the UI
Adding Interactivity
Managing State
Escape Hatches
API Reference
React APIs
React DOM APIs
Community
Code of Conduct
Meet the Team
Docs Contributors
Acknowledgements
More
Blog
React Native
Privacy
Terms
// babel.config.js
module.exports = {
plugins: [
[
'babel-plugin-react-compiler', {
// compiler options
}
]
]
};
{
compilationMode: 'annotation' // Only compile "use memo" functions
}
// For React 18 projects
{
target: '18' // Also requires react-compiler-runtime package
}
// Recommended for production
{
panicThreshold: 'none' // Skip components with errors instead of failing the build
}
{
logger: {
logEvent(filename, event) {
if (event.kind === 'CompileSuccess') {
console.log('Compiled:', filename);
}
}
}
}
{
gating: {
source: 'my-feature-flags',
importSpecifierName: 'isCompilerEnabled'
}
}
// babel.config.js
module.exports = {
plugins: [
'babel-plugin-react-compiler'
]
};
npm install react-compiler-runtime@latest
{
target: '18' // or '17'
}
{
compilationMode: 'annotation' // Only compile "use memo" functions
}