mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
The module pattern
```
function MyComponent() {
return {
render() {
return this.state.foo
}
}
}
```
has been deprecated for approximately 5 years now. This PR removes
support for this pattern. It also simplifies a number of code paths in
particular related to the concept of `IndeterminateComponent` types.
276 lines
11 KiB
JavaScript
276 lines
11 KiB
JavaScript
/**
|
|
* 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;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// 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 enableCacheElement = __EXPERIMENTAL__;
|
|
export const enableFetchInstrumentation = true;
|
|
|
|
export const enableBinaryFlight = __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 unstable_useMemoCache hook, intended as a compilation target for
|
|
// auto-memoization.
|
|
export const enableUseMemoCacheHook = __EXPERIMENTAL__;
|
|
|
|
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 = true;
|
|
|
|
export const alwaysThrottleRetries = true;
|
|
|
|
export const passChildrenWhenCloningPersistedNodes = false;
|
|
|
|
export const enableUseDeferredValueInitialArg = __EXPERIMENTAL__;
|
|
|
|
export const enableServerComponentLogs = __EXPERIMENTAL__;
|
|
|
|
/**
|
|
* 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.
|
|
// -----------------------------------------------------------------------------
|
|
const __NEXT_MAJOR__ = __EXPERIMENTAL__;
|
|
|
|
// Removes legacy style context
|
|
export const disableLegacyContext = __NEXT_MAJOR__;
|
|
|
|
// Not ready to break experimental yet.
|
|
// Modern <StrictMode /> behaviour aligns more with what components
|
|
// components will encounter in production, especially when used With <Offscreen />.
|
|
// TODO: clean up legacy <StrictMode /> once tests pass WWW.
|
|
export const useModernStrictMode = __NEXT_MAJOR__;
|
|
|
|
// Not ready to break experimental yet.
|
|
// Remove IE and MsApp specific workarounds for innerHTML
|
|
export const disableIEWorkarounds = __NEXT_MAJOR__;
|
|
|
|
// 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 = __NEXT_MAJOR__;
|
|
|
|
// Filter certain DOM attributes (e.g. src, href) if their values are empty
|
|
// strings. This prevents e.g. <img src=""> from making an unnecessary HTTP
|
|
// request for certain browsers.
|
|
export const enableFilterEmptyStringAttributesDOM = __NEXT_MAJOR__;
|
|
|
|
// Disabled caching behavior of `react/cache` in client runtimes.
|
|
export const disableClientCache = false;
|
|
|
|
// Changes Server Components Reconciliation when they have keys
|
|
export const enableServerComponentKeys = __NEXT_MAJOR__;
|
|
|
|
export const enableBigIntSupport = __NEXT_MAJOR__;
|
|
|
|
/**
|
|
* 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 = __NEXT_MAJOR__;
|
|
export const disableStringRefs = __NEXT_MAJOR__;
|
|
|
|
// Warn on any usage of ReactTestRenderer
|
|
export const enableReactTestRendererWarning = __NEXT_MAJOR__;
|
|
|
|
// 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 = __NEXT_MAJOR__;
|
|
|
|
export const disableDOMTestUtils = __NEXT_MAJOR__;
|
|
|
|
// HTML boolean attributes need a special PropertyInfoRecord.
|
|
// Between support of these attributes in browsers and React supporting them as
|
|
// boolean props library users can use them as `<div someBooleanAttribute="" />`.
|
|
// However, once React considers them as boolean props an empty string will
|
|
// result in false property i.e. break existing usage.
|
|
export const enableNewBooleanProps = __NEXT_MAJOR__;
|
|
|
|
// Make <Context> equivalent to <Context.Provider> instead of <Context.Consumer>
|
|
export const enableRenderableContext = __NEXT_MAJOR__;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Chopping Block
|
|
//
|
|
// Planned feature deprecations and breaking changes. Sorted roughly in order of
|
|
// when we plan to enable them.
|
|
// -----------------------------------------------------------------------------
|
|
|
|
export const enableUseRefAccessWarning = false;
|
|
|
|
// 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 <textarea> elements
|
|
export const disableTextareaChildren = false;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Debugging and DevTools
|
|
// -----------------------------------------------------------------------------
|
|
|
|
// Adds user timing marks for e.g. state updates, suspense, and work loop stuff,
|
|
// for an experimental timeline tool.
|
|
export const enableSchedulingProfiler = __PROFILE__;
|
|
|
|
// Helps identify side effects in render-phase lifecycle hooks and setState
|
|
// reducers by double invoking them in StrictLegacyMode.
|
|
export const debugRenderPhaseSideEffectsForStrictMode = __DEV__;
|
|
|
|
// Gather advanced timing metrics for Profiler subtrees.
|
|
export const enableProfilerTimer = __PROFILE__;
|
|
|
|
// Record durations for commit and passive effects phases.
|
|
export const enableProfilerCommitHooks = __PROFILE__;
|
|
|
|
// Phase param passed to onRender callback differentiates between an "update" and a "cascading-update".
|
|
export const enableProfilerNestedUpdatePhase = __PROFILE__;
|
|
|
|
// Adds verbose console logging for e.g. state updates, suspense, and work loop
|
|
// stuff. Intended to enable React core members to more easily debug scheduling
|
|
// issues in DEV builds.
|
|
export const enableDebugTracing = false;
|
|
|
|
export const enableAsyncDebugInfo = __EXPERIMENTAL__;
|
|
|
|
// Track which Fiber(s) schedule render work.
|
|
export const enableUpdaterTracking = __PROFILE__;
|
|
|
|
// Internal only.
|
|
export const enableGetInspectorDataForInstanceInProduction = false;
|
|
|
|
export const consoleManagedByDevToolsDuringStrictMode = true;
|
|
|
|
export const enableDO_NOT_USE_disableStrictPassiveEffect = false;
|