diff --git a/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js b/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js index f8dbcfd17e8c7..5bb90c24e657f 100644 --- a/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js +++ b/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js @@ -287,7 +287,6 @@ describe('ReactFabric', () => { expect(nativeFabricUIManager.completeRoot).toBeCalled(); }); - // @gate enablePersistedModeClonedFlag it('should not clone nodes when layout effects are used', async () => { const View = createReactNativeComponentClass('RCTView', () => ({ validAttributes: {foo: true}, @@ -305,6 +304,8 @@ describe('ReactFabric', () => { , 11, + null, + true, ), ); expect(nativeFabricUIManager.completeRoot).toBeCalled(); @@ -316,6 +317,8 @@ describe('ReactFabric', () => { , 11, + null, + true, ), ); expect(nativeFabricUIManager.cloneNode).not.toBeCalled(); @@ -327,7 +330,6 @@ describe('ReactFabric', () => { expect(nativeFabricUIManager.completeRoot).not.toBeCalled(); }); - // @gate enablePersistedModeClonedFlag it('should not clone nodes when insertion effects are used', async () => { const View = createReactNativeComponentClass('RCTView', () => ({ validAttributes: {foo: true}, @@ -345,6 +347,8 @@ describe('ReactFabric', () => { , 11, + null, + true, ), ); expect(nativeFabricUIManager.completeRoot).toBeCalled(); @@ -356,6 +360,8 @@ describe('ReactFabric', () => { , 11, + null, + true, ), ); expect(nativeFabricUIManager.cloneNode).not.toBeCalled(); @@ -367,7 +373,6 @@ describe('ReactFabric', () => { expect(nativeFabricUIManager.completeRoot).not.toBeCalled(); }); - // @gate enablePersistedModeClonedFlag it('should not clone nodes when useImperativeHandle is used', async () => { const View = createReactNativeComponentClass('RCTView', () => ({ validAttributes: {foo: true}, @@ -387,6 +392,8 @@ describe('ReactFabric', () => { , 11, + null, + true, ), ); expect(nativeFabricUIManager.completeRoot).toBeCalled(); @@ -399,6 +406,8 @@ describe('ReactFabric', () => { , 11, + null, + true, ), ); expect(nativeFabricUIManager.cloneNode).not.toBeCalled(); diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js index 124d17f943db4..6be3300a70ca0 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.js @@ -48,7 +48,6 @@ import { alwaysThrottleRetries, enableCreateEventHandleAPI, enableHiddenSubtreeInsertionEffectCleanup, - enablePersistedModeClonedFlag, enableProfilerTimer, enableProfilerCommitHooks, enableSuspenseCallback, @@ -1969,10 +1968,7 @@ function recursivelyTraverseMutationEffects( } } - if ( - parentFiber.subtreeFlags & - (enablePersistedModeClonedFlag ? MutationMask | Cloned : MutationMask) - ) { + if (parentFiber.subtreeFlags & (MutationMask | Cloned)) { let child = parentFiber.child; while (child !== null) { commitMutationEffectsOnFiber(child, root, lanes); diff --git a/packages/react-reconciler/src/ReactFiberCompleteWork.js b/packages/react-reconciler/src/ReactFiberCompleteWork.js index 404fd86c9df54..d3abcb466e585 100644 --- a/packages/react-reconciler/src/ReactFiberCompleteWork.js +++ b/packages/react-reconciler/src/ReactFiberCompleteWork.js @@ -35,7 +35,6 @@ import { enableLegacyHidden, enableSuspenseCallback, enableScopeAPI, - enablePersistedModeClonedFlag, enableProfilerTimer, enableTransitionTracing, passChildrenWhenCloningPersistedNodes, @@ -92,7 +91,6 @@ import { Snapshot, ChildDeletion, StaticMask, - MutationMask, Passive, ForceClientRender, MaySuspendCommit, @@ -205,7 +203,7 @@ function markUpdate(workInProgress: Fiber) { * it received an update that requires a clone of the tree above. */ function markCloned(workInProgress: Fiber) { - if (supportsPersistence && enablePersistedModeClonedFlag) { + if (supportsPersistence) { workInProgress.flags |= Cloned; } } @@ -227,9 +225,7 @@ function doesRequireClone(current: null | Fiber, completedWork: Fiber) { // then we only have to check the `completedWork.subtreeFlags`. let child = completedWork.child; while (child !== null) { - const checkedFlags = enablePersistedModeClonedFlag - ? Cloned | Visibility | Placement | ChildDeletion - : MutationMask; + const checkedFlags = Cloned | Visibility | Placement | ChildDeletion; if ( (child.flags & checkedFlags) !== NoFlags || (child.subtreeFlags & checkedFlags) !== NoFlags @@ -526,16 +522,9 @@ function updateHostComponent( markUpdate(workInProgress); } workInProgress.stateNode = newInstance; - if (!requiresClone) { - if (!enablePersistedModeClonedFlag) { - // If there are no other effects in this tree, we need to flag this node as having one. - // Even though we're not going to use it for anything. - // Otherwise parents won't know that there are new children to propagate upwards. - markUpdate(workInProgress); - } - } else if ( - !passChildrenWhenCloningPersistedNodes || - hasOffscreenComponentChild + if ( + requiresClone && + (!passChildrenWhenCloningPersistedNodes || hasOffscreenComponentChild) ) { // If children have changed, we have to add them all to the set. appendAllChildren( @@ -693,11 +682,6 @@ function updateHostText( currentHostContext, workInProgress, ); - if (!enablePersistedModeClonedFlag) { - // We'll have to mark it as having an effect, even though we won't use the effect for anything. - // This lets the parents know that at least one of their children has changed. - markUpdate(workInProgress); - } } else { workInProgress.stateNode = current.stateNode; } diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js index f29ee68d7411b..a352ca8dee05b 100644 --- a/packages/shared/ReactFeatureFlags.js +++ b/packages/shared/ReactFeatureFlags.js @@ -129,12 +129,6 @@ export const alwaysThrottleRetries: boolean = true; export const passChildrenWhenCloningPersistedNodes: boolean = false; -/** - * Enables a new Fiber flag used in persisted mode to reduce the number - * of cloned host components. - */ -export const enablePersistedModeClonedFlag: boolean = false; - export const enableEagerAlternateStateNodeCleanup: boolean = true; /** diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js b/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js index 0b59327b3493a..0cbcd61a8763d 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js @@ -20,7 +20,6 @@ export const alwaysThrottleRetries = __VARIANT__; export const enableObjectFiber = __VARIANT__; export const enableHiddenSubtreeInsertionEffectCleanup = __VARIANT__; -export const enablePersistedModeClonedFlag = __VARIANT__; export const enableEagerAlternateStateNodeCleanup = __VARIANT__; export const passChildrenWhenCloningPersistedNodes = __VARIANT__; export const renameElementSymbol = __VARIANT__; diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb.js b/packages/shared/forks/ReactFeatureFlags.native-fb.js index 409b10d0b2db7..b6cadd1d2e5d7 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js @@ -22,7 +22,6 @@ export const { alwaysThrottleRetries, enableHiddenSubtreeInsertionEffectCleanup, enableObjectFiber, - enablePersistedModeClonedFlag, enableEagerAlternateStateNodeCleanup, passChildrenWhenCloningPersistedNodes, renameElementSymbol, diff --git a/packages/shared/forks/ReactFeatureFlags.native-oss.js b/packages/shared/forks/ReactFeatureFlags.native-oss.js index fbef31b026e6f..7d8456cffb61f 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-oss.js +++ b/packages/shared/forks/ReactFeatureFlags.native-oss.js @@ -38,7 +38,6 @@ export const enableLegacyFBSupport: boolean = false; export const enableLegacyHidden: boolean = false; export const enableNoCloningMemoCache: boolean = false; export const enableObjectFiber: boolean = false; -export const enablePersistedModeClonedFlag: boolean = false; export const enablePostpone: boolean = false; export const enableReactTestRendererWarning: boolean = false; export const enableRetryLaneExpiration: boolean = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.js index eb02b6a1807a1..260cde9361a91 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.js @@ -53,7 +53,6 @@ export const enableFizzExternalRuntime: boolean = true; export const alwaysThrottleRetries: boolean = true; export const passChildrenWhenCloningPersistedNodes: boolean = false; -export const enablePersistedModeClonedFlag: boolean = false; export const disableClientCache: boolean = true; export const enableInfiniteRenderLoopDetection: boolean = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js index 768ab592d2c50..1a46f0d038d53 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js @@ -33,7 +33,6 @@ export const enableLegacyFBSupport = false; export const enableLegacyHidden = false; export const enableNoCloningMemoCache = false; export const enableObjectFiber = false; -export const enablePersistedModeClonedFlag = false; export const enablePostpone = false; export const enableProfilerCommitHooks = __PROFILE__; export const enableProfilerNestedUpdatePhase = __PROFILE__; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js index c0c788db52652..ecb165af6bb1f 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js @@ -54,7 +54,6 @@ export const enableFizzExternalRuntime: boolean = false; export const alwaysThrottleRetries: boolean = true; export const passChildrenWhenCloningPersistedNodes: boolean = false; -export const enablePersistedModeClonedFlag: boolean = false; export const disableClientCache: boolean = true; export const enableInfiniteRenderLoopDetection: boolean = false; diff --git a/packages/shared/forks/ReactFeatureFlags.www.js b/packages/shared/forks/ReactFeatureFlags.www.js index 408fc0b62f667..732e4e143e55c 100644 --- a/packages/shared/forks/ReactFeatureFlags.www.js +++ b/packages/shared/forks/ReactFeatureFlags.www.js @@ -93,8 +93,6 @@ export const enableFizzExternalRuntime: boolean = true; export const passChildrenWhenCloningPersistedNodes: boolean = false; -export const enablePersistedModeClonedFlag: boolean = false; - export const disableClientCache: boolean = true; export const enableReactTestRendererWarning: boolean = false;