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;