mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
25bfa287f6
* Add feature flag: enableStrongMemoryCleanup Add a feature flag that will test doing a recursive clean of an unmount node. This will disconnect the fiber graph making leaks less severe. * Detach sibling pointers in old child list When a fiber is deleted, it's still part of the previous (alternate) parent fiber's list of children. Because children are a linked list, an earlier sibling that's still alive will be connected to the deleted fiber via its alternate: live fiber --alternate--> previous live fiber --sibling--> deleted fiber We can't disconnect `alternate` on nodes that haven't been deleted yet, but we can disconnect the `sibling` and `child` pointers. Will use this feature flag to test the memory impact. * Combine into single enum flag I combined `enableStrongMemoryCleanup` and `enableDetachOldChildList` into a single enum flag. The flag has three possible values. Each level is a superset of the previous one and performs more aggressive clean up. We will use this to compare the memory impact of each level. * Add Flow type to new host config method * Re-use existing recursive clean up path We already have a recursive loop that visits every deleted fiber. We can re-use that one for clean up instead of adding another one. Co-authored-by: Andrew Clark <git@andrewclark.io>
67 lines
2.8 KiB
JavaScript
67 lines
2.8 KiB
JavaScript
/**
|
|
* 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
|
|
*/
|
|
|
|
import typeof * as FeatureFlagsType from 'shared/ReactFeatureFlags';
|
|
import typeof * as ExportsType from './ReactFeatureFlags.testing';
|
|
|
|
export const debugRenderPhaseSideEffectsForStrictMode = false;
|
|
export const enableDebugTracing = false;
|
|
export const enableSchedulingProfiler = false;
|
|
export const warnAboutDeprecatedLifecycles = true;
|
|
export const replayFailedUnitOfWorkWithInvokeGuardedCallback = false;
|
|
export const enableProfilerTimer = __PROFILE__;
|
|
export const enableProfilerCommitHooks = false;
|
|
export const enableProfilerNestedUpdatePhase = false;
|
|
export const enableProfilerNestedUpdateScheduledHook = false;
|
|
export const enableSchedulerTracing = __PROFILE__;
|
|
export const enableSuspenseServerRenderer = false;
|
|
export const enableSelectiveHydration = false;
|
|
export const enableLazyElements = false;
|
|
export const enableCache = false;
|
|
export const disableJavaScriptURLs = false;
|
|
export const disableInputAttributeSyncing = false;
|
|
export const enableSchedulerDebugging = false;
|
|
export const enableScopeAPI = false;
|
|
export const enableCreateEventHandleAPI = false;
|
|
export const warnAboutUnmockedScheduler = false;
|
|
export const enableSuspenseCallback = false;
|
|
export const warnAboutDefaultPropsOnFunctionComponents = false;
|
|
export const warnAboutStringRefs = false;
|
|
export const disableLegacyContext = false;
|
|
export const disableSchedulerTimeoutBasedOnReactExpirationTime = false;
|
|
export const enableTrustedTypesIntegration = false;
|
|
export const disableTextareaChildren = false;
|
|
export const disableModulePatternComponents = false;
|
|
export const warnUnstableRenderSubtreeIntoContainer = false;
|
|
export const warnAboutSpreadingKeyToJSX = false;
|
|
export const enableComponentStackLocations = true;
|
|
export const enableLegacyFBSupport = false;
|
|
export const enableFilterEmptyStringAttributesDOM = false;
|
|
export const disableNativeComponentFrames = false;
|
|
export const skipUnmountedBoundaries = false;
|
|
export const deletedTreeCleanUpLevel = 1;
|
|
|
|
export const enableNewReconciler = false;
|
|
export const deferRenderPhaseUpdateToNextBatch = true;
|
|
export const enableDiscreteEventFlushingChange = false;
|
|
|
|
export const enableStrictEffects = false;
|
|
export const createRootStrictEffectsByDefault = false;
|
|
export const enableUseRefAccessWarning = false;
|
|
|
|
export const enableRecursiveCommitTraversal = false;
|
|
export const disableSchedulerTimeoutInWorkLoop = false;
|
|
export const enableLazyContextPropagation = false;
|
|
|
|
// Flow magic to verify the exports of this file match the original version.
|
|
// eslint-disable-next-line no-unused-vars
|
|
type Check<_X, Y: _X, X: Y = _X> = null;
|
|
// eslint-disable-next-line no-unused-expressions
|
|
(null: Check<ExportsType, FeatureFlagsType>);
|