77 * @flow  strict 
88 */ 
99
10- // Filter certain DOM attributes (e.g. src, href) if their values are empty strings. 
11- // This prevents e.g. <img src=""> from making an unnecessary HTTP request for certain browsers. 
12- export  const  enableFilterEmptyStringAttributesDOM  =  false ; 
13- 
14- // Adds verbose console logging for e.g. state updates, suspense, and work loop stuff. 
15- // Intended to enable React core members to more easily debug scheduling issues in DEV builds. 
16- export  const  enableDebugTracing  =  false ; 
17- 
18- // Adds user timing marks for e.g. state updates, suspense, and work loop stuff, 
19- // for an experimental timeline tool. 
20- export  const  enableSchedulingProfiler  =  __PROFILE__ ; 
21- 
22- // Helps identify side effects in render-phase lifecycle hooks and setState 
23- // reducers by double invoking them in StrictLegacyMode. 
24- export  const  debugRenderPhaseSideEffectsForStrictMode  =  __DEV__ ; 
25- 
26- // Helps identify code that is not safe for planned Offscreen API and Suspense semantics; 
27- // this feature flag only impacts StrictEffectsMode. 
28- export  const  enableStrictEffects  =  __DEV__ ; 
29- 
30- // If TRUE, trees rendered with createRoot will be StrictEffectsMode. 
31- // If FALSE, these trees will be StrictLegacyMode. 
32- export  const  createRootStrictEffectsByDefault  =  false ; 
33- 
34- // To preserve the "Pause on caught exceptions" behavior of the debugger, we 
35- // replay the begin phase of a failed component inside invokeGuardedCallback. 
36- export  const  replayFailedUnitOfWorkWithInvokeGuardedCallback  =  __DEV__ ; 
37- 
38- // Warn about deprecated, async-unsafe lifecycles; relates to RFC #6: 
39- export  const  warnAboutDeprecatedLifecycles  =  true ; 
40- 
41- // Gather advanced timing metrics for Profiler subtrees. 
42- export  const  enableProfilerTimer  =  __PROFILE__ ; 
43- 
44- // Record durations for commit and passive effects phases. 
45- export  const  enableProfilerCommitHooks  =  __PROFILE__ ; 
46- 
47- // Phase param passed to onRender callback differentiates between an "update" and a "cascading-update". 
48- export  const  enableProfilerNestedUpdatePhase  =  __PROFILE__ ; 
49- 
50- // Profiler API accepts a function to be called when a nested update is scheduled. 
51- // This callback accepts the component type (class instance or function) the update is scheduled for. 
52- export  const  enableProfilerNestedUpdateScheduledHook  =  false ; 
53- 
54- // Track which Fiber(s) schedule render work. 
55- export  const  enableUpdaterTracking  =  __PROFILE__ ; 
10+ // ----------------------------------------------------------------------------- 
11+ // Land or remove (zero effort) 
12+ // 
13+ // Flags that can likely be deleted or landed without consequences 
14+ // ----------------------------------------------------------------------------- 
5615
57- // SSR experiments 
16+ export   const   warnOnSubscriptionInsideStartTransition   =   false ; 
5817export  const  enableSuspenseServerRenderer  =  true ; 
5918export  const  enableSelectiveHydration  =  true ; 
60- 
61- // Flight experiments 
19+ export  const  warnAboutDeprecatedLifecycles  =  true ; 
6220export  const  enableLazyElements  =  true ; 
63- export  const  enableCache  =  __EXPERIMENTAL__ ; 
21+ export  const  enableComponentStackLocations  =  true ; 
22+ export  const  disableSchedulerTimeoutBasedOnReactExpirationTime  =  false ; 
23+ export  const  warnUnstableRenderSubtreeIntoContainer  =  false ; 
24+ export  const  enablePersistentOffscreenHostContainer  =  false ; 
6425
65- // Only used in www builds. 
66- export  const  enableSchedulerDebugging  =  false ; 
26+ // ----------------------------------------------------------------------------- 
27+ // Land or remove (moderate effort) 
28+ // 
29+ // Flags that can be probably deleted or landed, but might require extra effort 
30+ // like migrating internal callers or performance testing. 
31+ // ----------------------------------------------------------------------------- 
32+ 
33+ // Destroy layout effects for components that are hidden because something 
34+ // suspended in an update and recreate them when they are shown again (after the 
35+ // suspended boundary has resolved). Note that this should be an uncommon use 
36+ // case and can be avoided by using the transition API. 
37+ // 
38+ // TODO: Finish rolling out in www 
39+ export  const  enableSuspenseLayoutEffectSemantics  =  true ; 
6740
68- // Disable javascript: URL strings  in href for XSS protection.  
69- export  const  disableJavaScriptURLs  =  false ; 
41+ // TODO: Finish rolling out  in www  
42+ export  const  enableClientRenderFallbackOnHydrationMismatch  =  true ; 
7043
71- // Disable support for comment nodes as React DOM containers. Only supported 
72- // by www builds. 
73- export  const  disableCommentsAsDOMContainers  =  true ; 
44+ // TODO: Need to review this code one more time before landing 
45+ export  const  enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay  =  true ; 
7446
75- // Experimental Scope support.  
76- export  const  enableScopeAPI  =  false ; 
47+ // Recoil still uses useMutableSource in www, need to delete  
48+ export  const  enableUseMutableSource  =  false ; 
7749
78- // Experimental Create Event Handle API. 
79- export  const  enableCreateEventHandleAPI  =  false ; 
50+ // Not sure if www still uses this. We don't have a replacement but whatever we 
51+ // replace it with will likely be different than what's already there, so we 
52+ // probably should just delete it as long as nothing in www relies on it. 
53+ export  const  enableSchedulerDebugging  =  false ; 
8054
81- // New API for JSX transforms to target - https://github.com/reactjs/rfcs/pull/107 
55+ // Need to remove didTimeout argument from Scheduler before landing 
56+ export  const  disableSchedulerTimeoutInWorkLoop  =  false ; 
8257
83- // We will enforce mocking scheduler with scheduler/unstable_mock at some point. (v18?) 
84- // Till then, we warn about the missing mock, but still fallback to a legacy mode compatible version 
58+ // ----------------------------------------------------------------------------- 
59+ // Slated for removal in the future (significant effort) 
60+ // 
61+ // These are experiments that didn't work out, and never shipped, but we can't 
62+ // delete from the codebase until we migrate internal callers. 
63+ // ----------------------------------------------------------------------------- 
8564
8665// Add a callback property to suspense to notify which promises are currently 
8766// in the update queue. This allows reporting and tracing of what is causing 
8867// the user to see a loading state. 
68+ // 
8969// Also allows hydration callbacks to fire when a dehydrated boundary gets 
9070// hydrated or deleted. 
71+ // 
72+ // This will eventually be replaced by the Transition Tracing proposal. 
9173export  const  enableSuspenseCallback  =  false ; 
9274
93- // Part of the simplification of React.createElement so we can eventually move 
94- // from React.createElement to React.jsx 
95- // https://github.com/reactjs/rfcs/blob/createlement-rfc/text/0000-create-element-changes.md 
96- export  const  warnAboutDefaultPropsOnFunctionComponents  =  false ; 
97- 
98- export  const  disableSchedulerTimeoutBasedOnReactExpirationTime  =  false ; 
99- 
100- export  const  enableTrustedTypesIntegration  =  false ; 
101- 
102- // Enables a warning when trying to spread a 'key' to an element; 
103- // a deprecated pattern we want to get rid of in the future 
104- export  const  warnAboutSpreadingKeyToJSX  =  false ; 
75+ // Experimental Scope support. 
76+ export  const  enableScopeAPI  =  false ; 
10577
106- export  const  warnOnSubscriptionInsideStartTransition  =  false ; 
78+ // Experimental Create Event Handle API. 
79+ export  const  enableCreateEventHandleAPI  =  false ; 
10780
108- export  const  enableSuspenseAvoidThisFallback  =  false ; 
109- export  const  enableSuspenseAvoidThisFallbackFizz  =  false ; 
81+ // This controls whether you get the `.old` modules or the `.new` modules in 
82+ // the react-reconciler package. 
83+ export  const  enableNewReconciler  =  false ; 
11084
111- export  const  enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay  =  true ; 
85+ // Support legacy Primer support on internal FB www 
86+ export  const  enableLegacyFBSupport  =  false ; 
11287
113- export  const  enableClientRenderFallbackOnHydrationMismatch  =  true ; 
88+ // ----------------------------------------------------------------------------- 
89+ // Ongoing experiments 
90+ // 
91+ // These are features that we're either actively exploring or are reasonably 
92+ // likely to include in an upcoming release. 
93+ // ----------------------------------------------------------------------------- 
11494
115- export  const  enableComponentStackLocations  =  true ; 
95+ export  const  enableCache  =  __EXPERIMENTAL__ ; 
11696
117- export  const  enableNewReconciler  =  false ; 
97+ export  const  enableTransitionTracing  =  false ; 
11898
119- export  const  disableNativeComponentFrames  =  false ; 
99+ // No known bugs, but needs performance testing 
100+ export  const  enableLazyContextPropagation  =  false ; 
120101
121- // Internal only. 
122- export  const  enableGetInspectorDataForInstanceInProduction  =  false ; 
102+ // Enables unstable_avoidThisFallback feature in Fiber 
103+ export  const  enableSuspenseAvoidThisFallback  =  false ; 
104+ // Enables unstable_avoidThisFallback feature in Fizz 
105+ export  const  enableSuspenseAvoidThisFallbackFizz  =  false ; 
123106
124107// When a node is unmounted, recurse into the Fiber subtree and clean out 
125108// references. Each level cleans up more fiber fields than the previous level. 
@@ -134,62 +117,140 @@ export const enableGetInspectorDataForInstanceInProduction = false;
134117// aggressiveness. 
135118export  const  deletedTreeCleanUpLevel  =  3 ; 
136119
137- // Destroy layout effects for components that are hidden because something suspended in an update 
138- // and recreate them when they are shown again (after the suspended boundary has resolved). 
139- // Note that this should be an uncommon use case and can be avoided by using the transition API. 
140- export  const  enableSuspenseLayoutEffectSemantics  =  true ; 
120+ // ----------------------------------------------------------------------------- 
121+ // Chopping Block 
122+ // 
123+ // Planned feature deprecations and breaking changes. Sorted roughly in order of 
124+ // when we we plan to enable them. 
125+ // ----------------------------------------------------------------------------- 
126+ 
127+ // This flag enables Strict Effects by default. We're not turning this on until 
128+ // after 18 because it requires migration work. Recommendation is to use 
129+ // <StrictMode /> to gradually upgrade components. 
130+ // If TRUE, trees rendered with createRoot will be StrictEffectsMode. 
131+ // If FALSE, these trees will be StrictLegacyMode. 
132+ export  const  createRootStrictEffectsByDefault  =  false ; 
133+ 
134+ export  const  disableModulePatternComponents  =  false ; 
135+ 
136+ export  const  disableLegacyContext  =  false ; 
137+ 
138+ export  const  enableUseRefAccessWarning  =  false ; 
139+ 
140+ // Enables time slicing for updates that aren't wrapped in startTransition. 
141+ export  const  enableSyncDefaultUpdates  =  true ; 
142+ 
143+ // Adds an opt-in to time slicing for updates that aren't wrapped in 
144+ // startTransition. Only relevant when enableSyncDefaultUpdates is disabled. 
145+ export  const  allowConcurrentByDefault  =  false ; 
146+ 
147+ // Updates that occur in the render phase are not officially supported. But when 
148+ // they do occur, we defer them to a subsequent render by picking a lane that's 
149+ // not currently rendering. We treat them the same as if they came from an 
150+ // interleaved event. Remove this flag once we have migrated to the 
151+ // new behavior. 
152+ // NOTE: Not sure if we'll end up doing this or not. 
153+ export  const  deferRenderPhaseUpdateToNextBatch  =  false ; 
154+ 
155+ // ----------------------------------------------------------------------------- 
156+ // React DOM Chopping Block 
157+ // 
158+ // Similar to main Chopping Block but only flags related to React DOM. These are 
159+ // grouped because we will likely batch all of them into a single major release. 
160+ // ----------------------------------------------------------------------------- 
161+ 
162+ // Disable support for comment nodes as React DOM containers. Already disabled 
163+ // in open source, but www codebase still relies on it. Need to remove. 
164+ export  const  disableCommentsAsDOMContainers  =  true ; 
165+ 
166+ // Disable javascript: URL strings in href for XSS protection. 
167+ export  const  disableJavaScriptURLs  =  false ; 
168+ 
169+ export  const  enableTrustedTypesIntegration  =  false ; 
170+ 
171+ // Prevent the value and checked attributes from syncing with their related 
172+ // DOM properties 
173+ export  const  disableInputAttributeSyncing  =  false ; 
174+ 
175+ // Filter certain DOM attributes (e.g. src, href) if their values are empty 
176+ // strings. This prevents e.g. <img src=""> from making an unnecessary HTTP 
177+ // request for certain browsers. 
178+ export  const  enableFilterEmptyStringAttributesDOM  =  false ; 
141179
142180// Changes the behavior for rendering custom elements in both server rendering 
143181// and client rendering, mostly to allow JSX attributes to apply to the custom 
144182// element's object properties instead of only HTML attributes. 
145183// https://github.com/facebook/react/issues/11347 
146184export  const  enableCustomElementPropertySupport  =  __EXPERIMENTAL__ ; 
147185
148- // -------------------------- 
149- // Future APIs to be deprecated 
150- // -------------------------- 
186+ // Disables children for <textarea> elements 
187+ export  const  disableTextareaChildren  =  false ; 
151188
152- // Prevent the value and checked attributes from syncing 
153- // with their related DOM properties 
154- export  const  disableInputAttributeSyncing  =  false ; 
189+ // ----------------------------------------------------------------------------- 
190+ // JSX Chopping Block 
191+ // 
192+ // Similar to main Chopping Block but only flags related to JSX. These are 
193+ // grouped because we will likely batch all of them into a single major release. 
194+ // ----------------------------------------------------------------------------- 
155195
156- export   const   warnAboutStringRefs   =   false ; 
196+ // New API for JSX transforms to target - https://github.com/reactjs/rfcs/pull/107 
157197
158- export  const  disableLegacyContext  =  false ; 
198+ // Part of the simplification of React.createElement so we can eventually move 
199+ // from React.createElement to React.jsx 
200+ // https://github.com/reactjs/rfcs/blob/createlement-rfc/text/0000-create-element-changes.md 
201+ export  const  warnAboutDefaultPropsOnFunctionComponents  =  false ;  // deprecate later, not 18.0 
159202
160- // Disables children for <textarea> elements 
161- export  const  disableTextareaChildren  =  false ; 
203+ // Enables a warning when trying to spread a 'key' to an element; 
204+ // a deprecated pattern we want to get rid of in the future 
205+ export  const  warnAboutSpreadingKeyToJSX  =  false ; 
162206
163- export  const  disableModulePatternComponents  =  false ; 
207+ export  const  warnAboutStringRefs  =  false ; 
164208
165- // We should remove this flag once the above flag becomes enabled 
166- export  const  warnUnstableRenderSubtreeIntoContainer  =  false ; 
209+ // ----------------------------------------------------------------------------- 
210+ // Debugging and DevTools 
211+ // ----------------------------------------------------------------------------- 
167212
168- // Support legacy Primer support on internal FB www 
169- export  const  enableLegacyFBSupport  =  false ; 
213+ // Adds user timing marks for e.g. state updates, suspense, and work loop stuff, 
214+ // for an experimental timeline tool. 
215+ export  const  enableSchedulingProfiler  =  __PROFILE__ ; 
170216
171- // Updates that occur in the render phase are not officially supported. But when 
172- // they do occur, we defer them to a subsequent render by picking a lane that's 
173- // not currently rendering. We treat them the same as if they came from an 
174- // interleaved event. Remove this flag once we have migrated to the 
175- // new behavior. 
176- export  const  deferRenderPhaseUpdateToNextBatch  =  false ; 
217+ // Helps identify side effects in render-phase lifecycle hooks and setState 
218+ // reducers by double invoking them in StrictLegacyMode. 
219+ export  const  debugRenderPhaseSideEffectsForStrictMode  =  __DEV__ ; 
177220
178- export  const  enableUseRefAccessWarning  =  false ; 
221+ // Helps identify code that is not safe for planned Offscreen API and Suspense semantics; 
222+ // this feature flag only impacts StrictEffectsMode. 
223+ export  const  enableStrictEffects  =  __DEV__ ; 
179224
180- export  const  disableSchedulerTimeoutInWorkLoop  =  false ; 
225+ // To preserve the "Pause on caught exceptions" behavior of the debugger, we 
226+ // replay the begin phase of a failed component inside invokeGuardedCallback. 
227+ export  const  replayFailedUnitOfWorkWithInvokeGuardedCallback  =  __DEV__ ; 
181228
182- export  const  enableLazyContextPropagation  =  false ; 
229+ // Gather advanced timing metrics for Profiler subtrees. 
230+ export  const  enableProfilerTimer  =  __PROFILE__ ; 
183231
184- export  const  enableSyncDefaultUpdates  =  true ; 
232+ // Record durations for commit and passive effects phases. 
233+ export  const  enableProfilerCommitHooks  =  __PROFILE__ ; 
185234
186- export  const  allowConcurrentByDefault  =  false ; 
235+ // Phase param passed to onRender callback differentiates between an "update" and a "cascading-update". 
236+ export  const  enableProfilerNestedUpdatePhase  =  __PROFILE__ ; 
187237
188- export  const  enablePersistentOffscreenHostContainer  =  false ; 
238+ // Adds verbose console logging for e.g. state updates, suspense, and work loop 
239+ // stuff. Intended to enable React core members to more easily debug scheduling 
240+ // issues in DEV builds. 
241+ export  const  enableDebugTracing  =  false ; 
189242
190- export  const  consoleManagedByDevToolsDuringStrictMode  =  true ; 
243+ // Track which Fiber(s) schedule render work. 
244+ export  const  enableUpdaterTracking  =  __PROFILE__ ; 
191245
192- // Only enabled in www builds  
193- export  const  enableUseMutableSource  =  false ; 
246+ // Only enabled in RN, related to enableComponentStackLocations  
247+ export  const  disableNativeComponentFrames  =  false ; 
194248
195- export  const  enableTransitionTracing  =  false ; 
249+ // Internal only. 
250+ export  const  enableGetInspectorDataForInstanceInProduction  =  false ; 
251+ 
252+ // Profiler API accepts a function to be called when a nested update is scheduled. 
253+ // This callback accepts the component type (class instance or function) the update is scheduled for. 
254+ export  const  enableProfilerNestedUpdateScheduledHook  =  false ; 
255+ 
256+ export  const  consoleManagedByDevToolsDuringStrictMode  =  true ; 
0 commit comments