/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict */ // ----------------------------------------------------------------------------- // Land or remove (zero effort) // // Flags that can likely be deleted or landed without consequences // ----------------------------------------------------------------------------- export const enableSuspenseServerRenderer = true; export const enableSelectiveHydration = true; export const warnAboutDeprecatedLifecycles = true; export const enableLazyElements = true; export const enableComponentStackLocations = true; export const disableSchedulerTimeoutBasedOnReactExpirationTime = false; export const warnUnstableRenderSubtreeIntoContainer = false; export const enablePersistentOffscreenHostContainer = false; // ----------------------------------------------------------------------------- // Land or remove (moderate effort) // // Flags that can be probably deleted or landed, but might require extra effort // like migrating internal callers or performance testing. // ----------------------------------------------------------------------------- // Destroy layout effects for components that are hidden because something // suspended in an update and recreate them when they are shown again (after the // suspended boundary has resolved). Note that this should be an uncommon use // case and can be avoided by using the transition API. // // TODO: Finish rolling out in www export const enableSuspenseLayoutEffectSemantics = true; // TODO: Finish rolling out in www export const enableClientRenderFallbackOnHydrationMismatch = true; // TODO: Need to review this code one more time before landing export const enableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay = true; // Recoil still uses useMutableSource in www, need to delete export const enableUseMutableSource = false; // Not sure if www still uses this. We don't have a replacement but whatever we // replace it with will likely be different than what's already there, so we // probably should just delete it as long as nothing in www relies on it. export const enableSchedulerDebugging = false; // Need to remove didTimeout argument from Scheduler before landing export const disableSchedulerTimeoutInWorkLoop = false; // ----------------------------------------------------------------------------- // Slated for removal in the future (significant effort) // // These are experiments that didn't work out, and never shipped, but we can't // delete from the codebase until we migrate internal callers. // ----------------------------------------------------------------------------- // Add a callback property to suspense to notify which promises are currently // in the update queue. This allows reporting and tracing of what is causing // the user to see a loading state. // // Also allows hydration callbacks to fire when a dehydrated boundary gets // hydrated or deleted. // // This will eventually be replaced by the Transition Tracing proposal. export const enableSuspenseCallback = false; // Experimental Scope support. export const enableScopeAPI = false; // Experimental Create Event Handle API. export const enableCreateEventHandleAPI = false; // This controls whether you get the `.old` modules or the `.new` modules in // the react-reconciler package. export const enableNewReconciler = false; // Support legacy Primer support on internal FB www export const enableLegacyFBSupport = false; // ----------------------------------------------------------------------------- // Ongoing experiments // // These are features that we're either actively exploring or are reasonably // likely to include in an upcoming release. // ----------------------------------------------------------------------------- export const enableCache = __EXPERIMENTAL__; export const enableTransitionTracing = false; // No known bugs, but needs performance testing export const enableLazyContextPropagation = false; // Enables unstable_avoidThisFallback feature in Fiber export const enableSuspenseAvoidThisFallback = false; // Enables unstable_avoidThisFallback feature in Fizz export const enableSuspenseAvoidThisFallbackFizz = false; // When a node is unmounted, recurse into the Fiber subtree and clean out // references. Each level cleans up more fiber fields than the previous level. // As far as we know, React itself doesn't leak, but because the Fiber contains // cycles, even a single leak in product code can cause us to retain large // amounts of memory. // // The long term plan is to remove the cycles, but in the meantime, we clear // additional fields to mitigate. // // It's an enum so that we can experiment with different levels of // aggressiveness. export const deletedTreeCleanUpLevel = 3; // ----------------------------------------------------------------------------- // Chopping Block // // Planned feature deprecations and breaking changes. Sorted roughly in order of // when we we plan to enable them. // ----------------------------------------------------------------------------- // This flag enables Strict Effects by default. We're not turning this on until // after 18 because it requires migration work. Recommendation is to use // to gradually upgrade components. // If TRUE, trees rendered with createRoot will be StrictEffectsMode. // If FALSE, these trees will be StrictLegacyMode. export const createRootStrictEffectsByDefault = false; export const disableModulePatternComponents = false; export const disableLegacyContext = false; export const enableUseRefAccessWarning = false; // Enables time slicing for updates that aren't wrapped in startTransition. export const enableSyncDefaultUpdates = true; // Adds an opt-in to time slicing for updates that aren't wrapped in // startTransition. Only relevant when enableSyncDefaultUpdates is disabled. export const allowConcurrentByDefault = false; // Updates that occur in the render phase are not officially supported. But when // they do occur, we defer them to a subsequent render by picking a lane that's // not currently rendering. We treat them the same as if they came from an // interleaved event. Remove this flag once we have migrated to the // new behavior. // NOTE: Not sure if we'll end up doing this or not. export const deferRenderPhaseUpdateToNextBatch = false; // ----------------------------------------------------------------------------- // React DOM Chopping Block // // Similar to main Chopping Block but only flags related to React DOM. These are // grouped because we will likely batch all of them into a single major release. // ----------------------------------------------------------------------------- // Disable support for comment nodes as React DOM containers. Already disabled // in open source, but www codebase still relies on it. Need to remove. export const disableCommentsAsDOMContainers = true; // Disable javascript: URL strings in href for XSS protection. export const disableJavaScriptURLs = false; export const enableTrustedTypesIntegration = false; // Prevent the value and checked attributes from syncing with their related // DOM properties export const disableInputAttributeSyncing = false; // Filter certain DOM attributes (e.g. src, href) if their values are empty // strings. This prevents e.g. from making an unnecessary HTTP // request for certain browsers. export const enableFilterEmptyStringAttributesDOM = false; // Changes the behavior for rendering custom elements in both server rendering // and client rendering, mostly to allow JSX attributes to apply to the custom // element's object properties instead of only HTML attributes. // https://github.com/facebook/react/issues/11347 export const enableCustomElementPropertySupport = __EXPERIMENTAL__; // Disables children for