/** * Copyright (c) Meta Platforms, Inc. and 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 enableComponentStackLocations = true; // ----------------------------------------------------------------------------- // Killswitch // // Flags that exist solely to turn off a change in case it causes a regression // when it rolls out to prod. We should remove these as soon as possible. // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- // 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. // ----------------------------------------------------------------------------- // TODO: Finish rolling out in www export const favorSafetyOverHydrationPerf = true; export const enableAsyncActions = true; // Need to remove didTimeout argument from Scheduler before landing export const disableSchedulerTimeoutInWorkLoop = false; // This will break some internal tests at Meta so we need to gate this until // those can be fixed. export const enableDeferRootSchedulingToMicrotask = true; // TODO: Land at Meta before removing. export const disableDefaultPropsExceptForClasses = true; // ----------------------------------------------------------------------------- // 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; // 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 = true; export const enableLegacyCache = __EXPERIMENTAL__; export const enableBinaryFlight = __EXPERIMENTAL__; export const enableFlightReadableStream = __EXPERIMENTAL__; export const enableAsyncIterableChildren = __EXPERIMENTAL__; export const enableTaint = __EXPERIMENTAL__; export const enablePostpone = __EXPERIMENTAL__; export const enableTransitionTracing = false; // No known bugs, but needs performance testing export const enableLazyContextPropagation = false; // FB-only usage. The new API has different semantics. export const enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber export const enableSuspenseAvoidThisFallback = false; // Enables unstable_avoidThisFallback feature in Fizz export const enableSuspenseAvoidThisFallbackFizz = false; export const enableCPUSuspense = __EXPERIMENTAL__; // Enables useMemoCache hook, intended as a compilation target for // auto-memoization. export const enableUseMemoCacheHook = __EXPERIMENTAL__; // Test this at Meta before enabling. export const enableNoCloningMemoCache = false; export const enableUseEffectEventHook = __EXPERIMENTAL__; // Test in www before enabling in open source. // Enables DOM-server to stream its instruction set as data-attributes // (handled with an MutationObserver) instead of inline-scripts export const enableFizzExternalRuntime = __EXPERIMENTAL__; export const alwaysThrottleRetries = true; export const passChildrenWhenCloningPersistedNodes = false; export const enableServerComponentLogs = __EXPERIMENTAL__; export const enableEarlyReturnForPropDiffing = false; /** * Enables an expiration time for retry lanes to avoid starvation. */ export const enableRetryLaneExpiration = false; export const retryLaneExpirationMs = 5000; export const syncLaneExpirationMs = 250; export const transitionLaneExpirationMs = 5000; // ----------------------------------------------------------------------------- // Ready for next major. // // Alias __NEXT_MAJOR__ to __EXPERIMENTAL__ for easier skimming. // ----------------------------------------------------------------------------- // TODO: Anything that's set to `true` in this section should either be cleaned // up (if it's on everywhere, including Meta and RN builds) or moved to a // different section of this file. // const __NEXT_MAJOR__ = __EXPERIMENTAL__; // Renames the internal symbol for elements since they have changed signature/constructor export const renameElementSymbol = true; // Removes legacy style context export const disableLegacyContext = true; // Not ready to break experimental yet. // Modern behaviour aligns more with what components // components will encounter in production, especially when used With . // TODO: clean up legacy once tests pass WWW. export const useModernStrictMode = true; // Not ready to break experimental yet. // Remove IE and MsApp specific workarounds for innerHTML export const disableIEWorkarounds = true; // 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 = true; // Disabled caching behavior of `react/cache` in client runtimes. export const disableClientCache = true; // Changes Server Components Reconciliation when they have keys export const enableServerComponentKeys = true; /** * Enables a new error detection for infinite render loops from updates caused * by setState or similar outside of the component owning the state. */ export const enableInfiniteRenderLoopDetection = true; // Subtle breaking changes to JSX runtime to make it faster, like passing `ref` // as a normal prop instead of stripping it from the props object. // Passes `ref` as a normal prop instead of stripping it from the props object // during element creation. export const enableRefAsProp = true; export const disableStringRefs = true; // Warn on any usage of ReactTestRenderer export const enableReactTestRendererWarning = true; // Disables legacy mode // This allows us to land breaking changes to remove legacy mode APIs in experimental builds // before removing them in stable in the next Major export const disableLegacyMode = true; export const disableDOMTestUtils = true; // Make equivalent to instead of export const enableRenderableContext = true; // Enables the `initialValue` option for `useDeferredValue` export const enableUseDeferredValueInitialArg = true; // ----------------------------------------------------------------------------- // Chopping Block // // Planned feature deprecations and breaking changes. Sorted roughly in order of // when we plan to enable them. // ----------------------------------------------------------------------------- // Enables time slicing for updates that aren't wrapped in startTransition. export const forceConcurrentByDefaultForTesting = false; export const enableUnifiedSyncLane = true; // Adds an opt-in to time slicing for updates that aren't wrapped in startTransition. export const allowConcurrentByDefault = 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; export const enableTrustedTypesIntegration = false; // Prevent the value and checked attributes from syncing with their related // DOM properties export const disableInputAttributeSyncing = false; // Disables children for