logo by @sawaratsuki1004
React
v19.2
تعلم
مرجع
المجتمع
المدونة

هل هذه الصفحة مفيدة؟

في هذه الصفحة

  • Overview
  • Reference
  • gating
  • Usage
  • Basic feature flag setup
  • Troubleshooting
  • Feature flag not working
  • Import errors

    react@19.2

  • نظرة عامة
  • Hooks
    • useActionState
    • useCallback
    • useContext
    • useDebugValue
    • useDeferredValue
    • useEffect
    • useEffectEvent
    • useId
    • useImperativeHandle
    • useInsertionEffect
    • useLayoutEffect
    • useMemo
    • useOptimistic
    • useReducer
    • useRef
    • useState
    • useSyncExternalStore
    • useTransition
  • المكونات
    • <Fragment> (<>)
    • <Profiler>
    • <StrictMode>
    • <Suspense>
    • <Activity>
    • <ViewTransition> - هذه الميزة متاحة في أحدث إصدار Canary من React
  • APIs
    • act
    • addTransitionType - هذه الميزة متاحة في أحدث إصدار Canary من React
    • cache
    • cacheSignal
    • captureOwnerStack
    • createContext
    • lazy
    • memo
    • startTransition
    • use
    • experimental_taintObjectReference - هذه الميزة متاحة في أحدث إصدار تجريبي من React
    • experimental_taintUniqueValue - هذه الميزة متاحة في أحدث إصدار تجريبي من 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
  • قواعد React (Rules of React)

  • نظرة عامة (Overview)
    • Components و Hooks يجب أن تكون Pure
    • React تستدعي Components و Hooks
    • قواعد 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
الإعدادات (Configuration)

gating

The gating option enables conditional compilation, allowing you to control when optimized code is used at runtime.

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

  • Reference
    • gating
  • Usage
    • Basic feature flag setup
  • Troubleshooting
    • Feature flag not working
    • Import errors

Reference

gating

Configures runtime feature flag gating for compiled functions.

Type

{ source: string; importSpecifierName: string; } | null

Default value

null

Properties

  • source: Module path to import the feature flag from
  • importSpecifierName: Name of the exported function to import

Caveats

  • The gating function must return a boolean
  • Both compiled and original versions increase bundle size
  • The import is added to every file with compiled functions

Usage

Basic feature flag setup

  1. Create a feature flag module:

// src/utils/feature-flags.js export function shouldUseCompiler() { // your logic here return getFeatureFlag('react-compiler-enabled'); }

  1. Configure the compiler:

{ gating: { source: './src/utils/feature-flags', importSpecifierName: 'shouldUseCompiler' } }

  1. The compiler generates gated code:

// Input function Button(props) { return <button>{props.label}</button>; } // Output (simplified) import { shouldUseCompiler } from './src/utils/feature-flags'; const Button = shouldUseCompiler() ? function Button_optimized(props) { /* compiled version */ } : function Button_original(props) { /* original version */ };

Note that the gating function is evaluated once at module time, so once the JS bundle has been parsed and evaluated the choice of component stays static for the rest of the browser session.


Troubleshooting

Feature flag not working

Verify your flag module exports the correct function:

// ❌ Wrong: Default export export default function shouldUseCompiler() { return true; } // ✅ Correct: Named export matching importSpecifierName export function shouldUseCompiler() { return true; }

Import errors

Ensure the source path is correct:

// ❌ Wrong: Relative to babel.config.js { source: './src/flags', importSpecifierName: 'flag' } // ✅ Correct: Module resolution path { source: '@myapp/feature-flags', importSpecifierName: 'flag' } // ✅ Also correct: Absolute path from project root { source: './src/utils/flags', importSpecifierName: 'flag' }

السابقcompilationMode
التاليlogger

Copyright © Meta Platforms, Inc
no uwu plz
uwu?
Logo by@sawaratsuki1004
تعلم React
بداية سريعة
التثبيت
وصف واجهة المستخدم (UI)
إضافة التفاعلية
إدارة State
مخارج الطوارئ
مرجع API
React APIs
React DOM APIs
المجتمع
ميثاق السلوك
تعرف على الفريق
المساهمون في التوثيق
شكر وتقدير
المزيد
المدونة
React Native
الخصوصية
الشروط
{
gating: {
source: 'my-feature-flags',
importSpecifierName: 'shouldUseCompiler'
}
}
{
source: string;
importSpecifierName: string;
} | null
// src/utils/feature-flags.js
export function shouldUseCompiler() {
// your logic here
return getFeatureFlag('react-compiler-enabled');
}
{
gating: {
source: './src/utils/feature-flags',
importSpecifierName: 'shouldUseCompiler'
}
}
// Input
function Button(props) {
return <button>{props.label}</button>;
}

// Output (simplified)
import { shouldUseCompiler } from './src/utils/feature-flags';

const Button = shouldUseCompiler()
? function Button_optimized(props) { /* compiled version */ }
: function Button_original(props) { /* original version */ };
// ❌ Wrong: Default export
export default function shouldUseCompiler() {
return true;
}

// ✅ Correct: Named export matching importSpecifierName
export function shouldUseCompiler() {
return true;
}
// ❌ Wrong: Relative to babel.config.js
{
source: './src/flags',
importSpecifierName: 'flag'
}

// ✅ Correct: Module resolution path
{
source: '@myapp/feature-flags',
importSpecifierName: 'flag'
}

// ✅ Also correct: Absolute path from project root
{
source: './src/utils/flags',
importSpecifierName: 'flag'
}