[RN] experiment to move Fabric completeWork to the commit phase (#30513)

There is currently a mismatch in how the persistent mode JS API and the
Fabric native code interpret `completeRoot`.

This is a short-lived experiment to see the effect of moving the Fabric
`completeRoot` call from `finalizeContainerChildren` to
`replaceContainerChildren` which in some cases does not get called.

DiffTrain build for commit https://github.com/facebook/react/commit/6b82f3c9048ff0dd7e6d628dc5770faf85d32a87.
This commit is contained in:
kassens
2024-07-29 16:00:27 -07:00
parent f98078e3fb
commit aaac27a414
14 changed files with 285 additions and 197 deletions
+1 -1
View File
@@ -1 +1 @@
19.0.0-native-fb-b9af819f-20240726
19.0.0-native-fb-6b82f3c9-20240729
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<e5dd85fa3b57ed14e21bfc6784b2b636>>
* @generated SignedSource<<45825b7fcc62c4e0270bf13c80f968b7>>
*/
"use strict";
@@ -15118,14 +15118,14 @@ __DEV__ &&
scheduleRoot: scheduleRoot,
setRefreshHandler: setRefreshHandler,
getCurrentFiber: getCurrentFiberForDevTools,
reconcilerVersion: "19.0.0-native-fb-b9af819f-20240726"
reconcilerVersion: "19.0.0-native-fb-6b82f3c9-20240729"
});
})({
findFiberByHostInstance: function () {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 1,
version: "19.0.0-native-fb-b9af819f-20240726",
version: "19.0.0-native-fb-6b82f3c9-20240729",
rendererPackageName: "react-test-renderer"
});
exports._Scheduler = Scheduler;
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<ff05c37b11dfc5becc9ea789a0fadb69>>
* @generated SignedSource<<2fc5c3e33cfc73fcc2c11ad232d302ed>>
*/
"use strict";
@@ -9328,7 +9328,7 @@ var devToolsConfig$jscomp$inline_1035 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "19.0.0-native-fb-b9af819f-20240726",
version: "19.0.0-native-fb-6b82f3c9-20240729",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1211 = {
@@ -9359,7 +9359,7 @@ var internals$jscomp$inline_1211 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-native-fb-b9af819f-20240726"
reconcilerVersion: "19.0.0-native-fb-6b82f3c9-20240729"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1212 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<74c90b925d8f128cb9032aa90bce37e1>>
* @generated SignedSource<<ebdb7058bb4b6e0370bac7651360c216>>
*/
"use strict";
@@ -9952,7 +9952,7 @@ var devToolsConfig$jscomp$inline_1119 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "19.0.0-native-fb-b9af819f-20240726",
version: "19.0.0-native-fb-6b82f3c9-20240729",
rendererPackageName: "react-test-renderer"
};
(function (internals) {
@@ -9996,7 +9996,7 @@ var devToolsConfig$jscomp$inline_1119 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-native-fb-b9af819f-20240726"
reconcilerVersion: "19.0.0-native-fb-6b82f3c9-20240729"
});
exports._Scheduler = Scheduler;
exports.act = act;
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<0335dbe121c5ca3a54c066fea68c8125>>
* @generated SignedSource<<b9e9e19d4032616fef667d0dd9eba802>>
*/
"use strict";
@@ -1704,7 +1704,7 @@ __DEV__ &&
exports.useTransition = function () {
return resolveDispatcher().useTransition();
};
exports.version = "19.0.0-native-fb-b9af819f-20240726";
exports.version = "19.0.0-native-fb-6b82f3c9-20240729";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<4227e609f214ae6858938a2969cb531b>>
* @generated SignedSource<<1b13935c9752f67504f31fedf1f97d68>>
*/
"use strict";
@@ -579,4 +579,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-native-fb-b9af819f-20240726";
exports.version = "19.0.0-native-fb-6b82f3c9-20240729";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<31888ddb41538e09f82e219e30709490>>
* @generated SignedSource<<51f1f5d0a03158aef8a5b651d1d06957>>
*/
"use strict";
@@ -583,7 +583,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-native-fb-b9af819f-20240726";
exports.version = "19.0.0-native-fb-6b82f3c9-20240729";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -1 +1 @@
b9af819f8b0e7f14200cfffe04da835b56f2f75d
6b82f3c9048ff0dd7e6d628dc5770faf85d32a87
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<aaf49563f86374430006d608a4140ad7>>
* @generated SignedSource<<21e82ca5963e783e2f6590a40ce8119e>>
*/
"use strict";
@@ -8996,7 +8996,8 @@ __DEV__ &&
appendAllChildrenToContainer(newChildSet, workInProgress, !1, !1);
current.pendingChildren = newChildSet;
workInProgress.flags |= 4;
completeRoot(container, newChildSet);
enableFabricCompleteRootInCommitPhase ||
completeRoot(container, newChildSet);
}
}
function scheduleRetryEffect(workInProgress, retryQueue) {
@@ -10291,7 +10292,12 @@ __DEV__ &&
case 18:
break;
case 4:
passChildrenWhenCloningPersistedNodes || createChildNodeSet();
var containerInfo = deletedFiber.stateNode.containerInfo,
emptyChildSet = passChildrenWhenCloningPersistedNodes
? []
: createChildNodeSet();
enableFabricCompleteRootInCommitPhase &&
completeRoot(containerInfo, emptyChildSet);
recursivelyTraverseDeletionEffects(
finishedRoot,
nearestMountedAncestor,
@@ -10302,46 +10308,46 @@ __DEV__ &&
case 11:
case 14:
case 15:
if (!offscreenSubtreeWasHidden) {
var updateQueue = deletedFiber.updateQueue;
if (
null !== updateQueue &&
((updateQueue = updateQueue.lastEffect), null !== updateQueue)
) {
var effect = (updateQueue = updateQueue.next);
do {
var tag = effect.tag,
inst = effect.inst,
destroy = inst.destroy;
void 0 !== destroy &&
((tag & Insertion) !== NoFlags
? ((inst.destroy = void 0),
callDestroyInDEV(
deletedFiber,
nearestMountedAncestor,
destroy
))
: (tag & Layout) !== NoFlags &&
(markComponentLayoutEffectUnmountStarted(deletedFiber),
shouldProfile(deletedFiber)
? (startLayoutEffectTimer(),
(inst.destroy = void 0),
callDestroyInDEV(
deletedFiber,
nearestMountedAncestor,
destroy
),
recordLayoutEffectDuration(deletedFiber))
: ((inst.destroy = void 0),
callDestroyInDEV(
deletedFiber,
nearestMountedAncestor,
destroy
)),
markComponentLayoutEffectUnmountStopped()));
effect = effect.next;
} while (effect !== updateQueue);
}
if (
!offscreenSubtreeWasHidden &&
((containerInfo = deletedFiber.updateQueue),
null !== containerInfo &&
((containerInfo = containerInfo.lastEffect),
null !== containerInfo))
) {
emptyChildSet = containerInfo = containerInfo.next;
do {
var tag = emptyChildSet.tag,
inst = emptyChildSet.inst,
destroy = inst.destroy;
void 0 !== destroy &&
((tag & Insertion) !== NoFlags
? ((inst.destroy = void 0),
callDestroyInDEV(
deletedFiber,
nearestMountedAncestor,
destroy
))
: (tag & Layout) !== NoFlags &&
(markComponentLayoutEffectUnmountStarted(deletedFiber),
shouldProfile(deletedFiber)
? (startLayoutEffectTimer(),
(inst.destroy = void 0),
callDestroyInDEV(
deletedFiber,
nearestMountedAncestor,
destroy
),
recordLayoutEffectDuration(deletedFiber))
: ((inst.destroy = void 0),
callDestroyInDEV(
deletedFiber,
nearestMountedAncestor,
destroy
)),
markComponentLayoutEffectUnmountStopped()));
emptyChildSet = emptyChildSet.next;
} while (emptyChildSet !== containerInfo);
}
recursivelyTraverseDeletionEffects(
finishedRoot,
@@ -10352,12 +10358,12 @@ __DEV__ &&
case 1:
offscreenSubtreeWasHidden ||
(safelyDetachRef(deletedFiber, nearestMountedAncestor),
(updateQueue = deletedFiber.stateNode),
"function" === typeof updateQueue.componentWillUnmount &&
(containerInfo = deletedFiber.stateNode),
"function" === typeof containerInfo.componentWillUnmount &&
safelyCallComponentWillUnmount(
deletedFiber,
nearestMountedAncestor,
updateQueue
containerInfo
));
recursivelyTraverseDeletionEffects(
finishedRoot,
@@ -10376,14 +10382,14 @@ __DEV__ &&
safelyDetachRef(deletedFiber, nearestMountedAncestor);
deletedFiber.mode & 1
? ((offscreenSubtreeWasHidden =
(updateQueue = offscreenSubtreeWasHidden) ||
(containerInfo = offscreenSubtreeWasHidden) ||
null !== deletedFiber.memoizedState),
recursivelyTraverseDeletionEffects(
finishedRoot,
nearestMountedAncestor,
deletedFiber
),
(offscreenSubtreeWasHidden = updateQueue))
(offscreenSubtreeWasHidden = containerInfo))
: recursivelyTraverseDeletionEffects(
finishedRoot,
nearestMountedAncestor,
@@ -10566,10 +10572,39 @@ __DEV__ &&
case 3:
recursivelyTraverseMutationEffects(root, finishedWork, lanes);
commitReconciliationEffects(finishedWork);
if (flags & 4) {
flags = root.containerInfo;
current = root.pendingChildren;
try {
enableFabricCompleteRootInCommitPhase &&
completeRoot(flags, current);
} catch (error$26) {
captureCommitPhaseError(
finishedWork,
finishedWork.return,
error$26
);
}
}
break;
case 4:
recursivelyTraverseMutationEffects(root, finishedWork, lanes);
commitReconciliationEffects(finishedWork);
if (flags & 4) {
current = finishedWork.stateNode;
flags = current.containerInfo;
current = current.pendingChildren;
try {
enableFabricCompleteRootInCommitPhase &&
completeRoot(flags, current);
} catch (error$27) {
captureCommitPhaseError(
finishedWork,
finishedWork.return,
error$27
);
}
}
break;
case 13:
recursivelyTraverseMutationEffects(root, finishedWork, lanes);
@@ -10617,11 +10652,10 @@ __DEV__ &&
? root._visibility & -2
: root._visibility | 1),
isHidden &&
((isHidden =
offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),
((root = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),
null === current ||
isShowingFallback ||
isHidden ||
root ||
(0 !== (finishedWork.mode & 1) &&
recursivelyTraverseDisappearLayoutEffects(finishedWork))));
flags & 4 &&
@@ -14050,6 +14084,8 @@ __DEV__ &&
alwaysThrottleRetries = dynamicFlagsUntyped.alwaysThrottleRetries,
enableAddPropertiesFastPath =
dynamicFlagsUntyped.enableAddPropertiesFastPath,
enableFabricCompleteRootInCommitPhase =
dynamicFlagsUntyped.enableFabricCompleteRootInCommitPhase,
enableObjectFiber = dynamicFlagsUntyped.enableObjectFiber,
enableShallowPropDiffing = dynamicFlagsUntyped.enableShallowPropDiffing,
passChildrenWhenCloningPersistedNodes =
@@ -16724,12 +16760,12 @@ __DEV__ &&
scheduleRoot: scheduleRoot,
setRefreshHandler: setRefreshHandler,
getCurrentFiber: getCurrentFiberForDevTools,
reconcilerVersion: "19.0.0-native-fb-b9af819f-20240726"
reconcilerVersion: "19.0.0-native-fb-6b82f3c9-20240729"
});
})({
findFiberByHostInstance: getInstanceFromNode,
bundleType: 1,
version: "19.0.0-native-fb-b9af819f-20240726",
version: "19.0.0-native-fb-6b82f3c9-20240729",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<0ffd35e0d9a21f7d70a706ba32a8b740>>
* @generated SignedSource<<51e1e1f2137d9e8f948aa81cc451048c>>
*/
"use strict";
@@ -19,6 +19,8 @@ var ReactNativePrivateInterface = require("react-native/Libraries/ReactPrivate/R
isArrayImpl = Array.isArray,
alwaysThrottleRetries = dynamicFlagsUntyped.alwaysThrottleRetries,
enableAddPropertiesFastPath = dynamicFlagsUntyped.enableAddPropertiesFastPath,
enableFabricCompleteRootInCommitPhase =
dynamicFlagsUntyped.enableFabricCompleteRootInCommitPhase,
enableObjectFiber = dynamicFlagsUntyped.enableObjectFiber,
enableShallowPropDiffing = dynamicFlagsUntyped.enableShallowPropDiffing,
passChildrenWhenCloningPersistedNodes =
@@ -7122,7 +7124,8 @@ function updateHostContainer(current, workInProgress) {
appendAllChildrenToContainer(newChildSet, workInProgress, !1, !1);
current.pendingChildren = newChildSet;
workInProgress.flags |= 4;
completeRoot(container, newChildSet);
enableFabricCompleteRootInCommitPhase ||
completeRoot(container, newChildSet);
}
}
function scheduleRetryEffect(workInProgress, retryQueue) {
@@ -8022,7 +8025,12 @@ function commitDeletionEffectsOnFiber(
case 18:
break;
case 4:
passChildrenWhenCloningPersistedNodes || createChildNodeSet();
var containerInfo = deletedFiber.stateNode.containerInfo,
emptyChildSet = passChildrenWhenCloningPersistedNodes
? []
: createChildNodeSet();
enableFabricCompleteRootInCommitPhase &&
completeRoot(containerInfo, emptyChildSet);
recursivelyTraverseDeletionEffects(
finishedRoot,
nearestMountedAncestor,
@@ -8033,35 +8041,34 @@ function commitDeletionEffectsOnFiber(
case 11:
case 14:
case 15:
if (!offscreenSubtreeWasHidden) {
var updateQueue = deletedFiber.updateQueue;
if (
null !== updateQueue &&
((updateQueue = updateQueue.lastEffect), null !== updateQueue)
) {
var effect = (updateQueue = updateQueue.next);
do {
var tag = effect.tag,
inst = effect.inst,
destroy = inst.destroy;
void 0 !== destroy &&
(0 !== (tag & 2)
? ((inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
))
: 0 !== (tag & 4) &&
((inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
)));
effect = effect.next;
} while (effect !== updateQueue);
}
if (
!offscreenSubtreeWasHidden &&
((containerInfo = deletedFiber.updateQueue),
null !== containerInfo &&
((containerInfo = containerInfo.lastEffect), null !== containerInfo))
) {
emptyChildSet = containerInfo = containerInfo.next;
do {
var tag = emptyChildSet.tag,
inst = emptyChildSet.inst,
destroy = inst.destroy;
void 0 !== destroy &&
(0 !== (tag & 2)
? ((inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
))
: 0 !== (tag & 4) &&
((inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
)));
emptyChildSet = emptyChildSet.next;
} while (emptyChildSet !== containerInfo);
}
recursivelyTraverseDeletionEffects(
finishedRoot,
@@ -8072,12 +8079,12 @@ function commitDeletionEffectsOnFiber(
case 1:
offscreenSubtreeWasHidden ||
(safelyDetachRef(deletedFiber, nearestMountedAncestor),
(updateQueue = deletedFiber.stateNode),
"function" === typeof updateQueue.componentWillUnmount &&
(containerInfo = deletedFiber.stateNode),
"function" === typeof containerInfo.componentWillUnmount &&
safelyCallComponentWillUnmount(
deletedFiber,
nearestMountedAncestor,
updateQueue
containerInfo
));
recursivelyTraverseDeletionEffects(
finishedRoot,
@@ -8096,14 +8103,14 @@ function commitDeletionEffectsOnFiber(
safelyDetachRef(deletedFiber, nearestMountedAncestor);
deletedFiber.mode & 1
? ((offscreenSubtreeWasHidden =
(updateQueue = offscreenSubtreeWasHidden) ||
(containerInfo = offscreenSubtreeWasHidden) ||
null !== deletedFiber.memoizedState),
recursivelyTraverseDeletionEffects(
finishedRoot,
nearestMountedAncestor,
deletedFiber
),
(offscreenSubtreeWasHidden = updateQueue))
(offscreenSubtreeWasHidden = containerInfo))
: recursivelyTraverseDeletionEffects(
finishedRoot,
nearestMountedAncestor,
@@ -8225,10 +8232,29 @@ function commitMutationEffectsOnFiber(finishedWork, root) {
case 3:
recursivelyTraverseMutationEffects(root, finishedWork);
commitReconciliationEffects(finishedWork);
if (flags & 4) {
flags = root.containerInfo;
current = root.pendingChildren;
try {
enableFabricCompleteRootInCommitPhase && completeRoot(flags, current);
} catch (error$119) {
captureCommitPhaseError(finishedWork, finishedWork.return, error$119);
}
}
break;
case 4:
recursivelyTraverseMutationEffects(root, finishedWork);
commitReconciliationEffects(finishedWork);
if (flags & 4) {
current = finishedWork.stateNode;
flags = current.containerInfo;
current = current.pendingChildren;
try {
enableFabricCompleteRootInCommitPhase && completeRoot(flags, current);
} catch (error$122) {
captureCommitPhaseError(finishedWork, finishedWork.return, error$122);
}
}
break;
case 13:
recursivelyTraverseMutationEffects(root, finishedWork);
@@ -8275,10 +8301,10 @@ function commitMutationEffectsOnFiber(finishedWork, root) {
? root._visibility & -2
: root._visibility | 1),
isHidden &&
((isHidden = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),
((root = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),
null === current ||
isShowingFallback ||
isHidden ||
root ||
(0 !== (finishedWork.mode & 1) &&
recursivelyTraverseDisappearLayoutEffects(finishedWork))));
flags & 4 &&
@@ -10547,10 +10573,10 @@ batchedUpdatesImpl = function (fn, a) {
}
};
var roots = new Map(),
devToolsConfig$jscomp$inline_1138 = {
devToolsConfig$jscomp$inline_1141 = {
findFiberByHostInstance: getInstanceFromNode,
bundleType: 0,
version: "19.0.0-native-fb-b9af819f-20240726",
version: "19.0.0-native-fb-6b82f3c9-20240729",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -10566,11 +10592,11 @@ var roots = new Map(),
}.bind(null, findNodeHandle)
}
};
var internals$jscomp$inline_1352 = {
bundleType: devToolsConfig$jscomp$inline_1138.bundleType,
version: devToolsConfig$jscomp$inline_1138.version,
rendererPackageName: devToolsConfig$jscomp$inline_1138.rendererPackageName,
rendererConfig: devToolsConfig$jscomp$inline_1138.rendererConfig,
var internals$jscomp$inline_1364 = {
bundleType: devToolsConfig$jscomp$inline_1141.bundleType,
version: devToolsConfig$jscomp$inline_1141.version,
rendererPackageName: devToolsConfig$jscomp$inline_1141.rendererPackageName,
rendererConfig: devToolsConfig$jscomp$inline_1141.rendererConfig,
overrideHookState: null,
overrideHookStateDeletePath: null,
overrideHookStateRenamePath: null,
@@ -10586,26 +10612,26 @@ var internals$jscomp$inline_1352 = {
return null === fiber ? null : fiber.stateNode;
},
findFiberByHostInstance:
devToolsConfig$jscomp$inline_1138.findFiberByHostInstance ||
devToolsConfig$jscomp$inline_1141.findFiberByHostInstance ||
emptyFindFiberByHostInstance,
findHostInstancesForRefresh: null,
scheduleRefresh: null,
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-native-fb-b9af819f-20240726"
reconcilerVersion: "19.0.0-native-fb-6b82f3c9-20240729"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1353 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
var hook$jscomp$inline_1365 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
if (
!hook$jscomp$inline_1353.isDisabled &&
hook$jscomp$inline_1353.supportsFiber
!hook$jscomp$inline_1365.isDisabled &&
hook$jscomp$inline_1365.supportsFiber
)
try {
(rendererID = hook$jscomp$inline_1353.inject(
internals$jscomp$inline_1352
(rendererID = hook$jscomp$inline_1365.inject(
internals$jscomp$inline_1364
)),
(injectedHook = hook$jscomp$inline_1353);
(injectedHook = hook$jscomp$inline_1365);
} catch (err) {}
}
exports.createPortal = function (children, containerTag) {
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<26de5a2a02f8ccaadfcc2fc66a21235a>>
* @generated SignedSource<<98d2398d407ec8c3a245d12211a967c4>>
*/
"use strict";
@@ -23,6 +23,8 @@ var ReactNativePrivateInterface = require("react-native/Libraries/ReactPrivate/R
isArrayImpl = Array.isArray,
alwaysThrottleRetries = dynamicFlagsUntyped.alwaysThrottleRetries,
enableAddPropertiesFastPath = dynamicFlagsUntyped.enableAddPropertiesFastPath,
enableFabricCompleteRootInCommitPhase =
dynamicFlagsUntyped.enableFabricCompleteRootInCommitPhase,
enableObjectFiber = dynamicFlagsUntyped.enableObjectFiber,
enableShallowPropDiffing = dynamicFlagsUntyped.enableShallowPropDiffing,
passChildrenWhenCloningPersistedNodes =
@@ -7352,7 +7354,8 @@ function updateHostContainer(current, workInProgress) {
appendAllChildrenToContainer(newChildSet, workInProgress, !1, !1);
current.pendingChildren = newChildSet;
workInProgress.flags |= 4;
completeRoot(container, newChildSet);
enableFabricCompleteRootInCommitPhase ||
completeRoot(container, newChildSet);
}
}
function scheduleRetryEffect(workInProgress, retryQueue) {
@@ -8466,7 +8469,12 @@ function commitDeletionEffectsOnFiber(
case 18:
break;
case 4:
passChildrenWhenCloningPersistedNodes || createChildNodeSet();
var containerInfo = deletedFiber.stateNode.containerInfo,
emptyChildSet = passChildrenWhenCloningPersistedNodes
? []
: createChildNodeSet();
enableFabricCompleteRootInCommitPhase &&
completeRoot(containerInfo, emptyChildSet);
recursivelyTraverseDeletionEffects(
finishedRoot,
nearestMountedAncestor,
@@ -8477,46 +8485,45 @@ function commitDeletionEffectsOnFiber(
case 11:
case 14:
case 15:
if (!offscreenSubtreeWasHidden) {
var updateQueue = deletedFiber.updateQueue;
if (
null !== updateQueue &&
((updateQueue = updateQueue.lastEffect), null !== updateQueue)
) {
var effect = (updateQueue = updateQueue.next);
do {
var tag = effect.tag,
inst = effect.inst,
destroy = inst.destroy;
void 0 !== destroy &&
(0 !== (tag & 2)
? ((inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
))
: 0 !== (tag & 4) &&
(markComponentLayoutEffectUnmountStarted(deletedFiber),
shouldProfile(deletedFiber)
? (startLayoutEffectTimer(),
(inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
),
recordLayoutEffectDuration(deletedFiber))
: ((inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
)),
markComponentLayoutEffectUnmountStopped()));
effect = effect.next;
} while (effect !== updateQueue);
}
if (
!offscreenSubtreeWasHidden &&
((containerInfo = deletedFiber.updateQueue),
null !== containerInfo &&
((containerInfo = containerInfo.lastEffect), null !== containerInfo))
) {
emptyChildSet = containerInfo = containerInfo.next;
do {
var tag = emptyChildSet.tag,
inst = emptyChildSet.inst,
destroy = inst.destroy;
void 0 !== destroy &&
(0 !== (tag & 2)
? ((inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
))
: 0 !== (tag & 4) &&
(markComponentLayoutEffectUnmountStarted(deletedFiber),
shouldProfile(deletedFiber)
? (startLayoutEffectTimer(),
(inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
),
recordLayoutEffectDuration(deletedFiber))
: ((inst.destroy = void 0),
safelyCallDestroy(
deletedFiber,
nearestMountedAncestor,
destroy
)),
markComponentLayoutEffectUnmountStopped()));
emptyChildSet = emptyChildSet.next;
} while (emptyChildSet !== containerInfo);
}
recursivelyTraverseDeletionEffects(
finishedRoot,
@@ -8527,12 +8534,12 @@ function commitDeletionEffectsOnFiber(
case 1:
offscreenSubtreeWasHidden ||
(safelyDetachRef(deletedFiber, nearestMountedAncestor),
(updateQueue = deletedFiber.stateNode),
"function" === typeof updateQueue.componentWillUnmount &&
(containerInfo = deletedFiber.stateNode),
"function" === typeof containerInfo.componentWillUnmount &&
safelyCallComponentWillUnmount(
deletedFiber,
nearestMountedAncestor,
updateQueue
containerInfo
));
recursivelyTraverseDeletionEffects(
finishedRoot,
@@ -8551,14 +8558,14 @@ function commitDeletionEffectsOnFiber(
safelyDetachRef(deletedFiber, nearestMountedAncestor);
deletedFiber.mode & 1
? ((offscreenSubtreeWasHidden =
(updateQueue = offscreenSubtreeWasHidden) ||
(containerInfo = offscreenSubtreeWasHidden) ||
null !== deletedFiber.memoizedState),
recursivelyTraverseDeletionEffects(
finishedRoot,
nearestMountedAncestor,
deletedFiber
),
(offscreenSubtreeWasHidden = updateQueue))
(offscreenSubtreeWasHidden = containerInfo))
: recursivelyTraverseDeletionEffects(
finishedRoot,
nearestMountedAncestor,
@@ -8712,10 +8719,29 @@ function commitMutationEffectsOnFiber(finishedWork, root) {
case 3:
recursivelyTraverseMutationEffects(root, finishedWork);
commitReconciliationEffects(finishedWork);
if (flags & 4) {
flags = root.containerInfo;
current = root.pendingChildren;
try {
enableFabricCompleteRootInCommitPhase && completeRoot(flags, current);
} catch (error$135) {
captureCommitPhaseError(finishedWork, finishedWork.return, error$135);
}
}
break;
case 4:
recursivelyTraverseMutationEffects(root, finishedWork);
commitReconciliationEffects(finishedWork);
if (flags & 4) {
current = finishedWork.stateNode;
flags = current.containerInfo;
current = current.pendingChildren;
try {
enableFabricCompleteRootInCommitPhase && completeRoot(flags, current);
} catch (error$138) {
captureCommitPhaseError(finishedWork, finishedWork.return, error$138);
}
}
break;
case 13:
recursivelyTraverseMutationEffects(root, finishedWork);
@@ -8762,10 +8788,10 @@ function commitMutationEffectsOnFiber(finishedWork, root) {
? root._visibility & -2
: root._visibility | 1),
isHidden &&
((isHidden = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),
((root = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),
null === current ||
isShowingFallback ||
isHidden ||
root ||
(0 !== (finishedWork.mode & 1) &&
recursivelyTraverseDisappearLayoutEffects(finishedWork))));
flags & 4 &&
@@ -11261,10 +11287,10 @@ batchedUpdatesImpl = function (fn, a) {
}
};
var roots = new Map(),
devToolsConfig$jscomp$inline_1220 = {
devToolsConfig$jscomp$inline_1223 = {
findFiberByHostInstance: getInstanceFromNode,
bundleType: 0,
version: "19.0.0-native-fb-b9af819f-20240726",
version: "19.0.0-native-fb-6b82f3c9-20240729",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -11294,10 +11320,10 @@ var roots = new Map(),
} catch (err) {}
return hook.checkDCE ? !0 : !1;
})({
bundleType: devToolsConfig$jscomp$inline_1220.bundleType,
version: devToolsConfig$jscomp$inline_1220.version,
rendererPackageName: devToolsConfig$jscomp$inline_1220.rendererPackageName,
rendererConfig: devToolsConfig$jscomp$inline_1220.rendererConfig,
bundleType: devToolsConfig$jscomp$inline_1223.bundleType,
version: devToolsConfig$jscomp$inline_1223.version,
rendererPackageName: devToolsConfig$jscomp$inline_1223.rendererPackageName,
rendererConfig: devToolsConfig$jscomp$inline_1223.rendererConfig,
overrideHookState: null,
overrideHookStateDeletePath: null,
overrideHookStateRenamePath: null,
@@ -11313,14 +11339,14 @@ var roots = new Map(),
return null === fiber ? null : fiber.stateNode;
},
findFiberByHostInstance:
devToolsConfig$jscomp$inline_1220.findFiberByHostInstance ||
devToolsConfig$jscomp$inline_1223.findFiberByHostInstance ||
emptyFindFiberByHostInstance,
findHostInstancesForRefresh: null,
scheduleRefresh: null,
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-native-fb-b9af819f-20240726"
reconcilerVersion: "19.0.0-native-fb-6b82f3c9-20240729"
});
exports.createPortal = function (children, containerTag) {
return createPortal$1(
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<21dbff21a4cf6efbb07c7af60c1c58ac>>
* @generated SignedSource<<774ba082873687e04f5ad7709de0d6e9>>
*/
"use strict";
@@ -16909,11 +16909,11 @@ __DEV__ &&
var emptyObject = {};
Object.freeze(emptyObject);
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-native-fb-b9af819f-20240726" !== isomorphicReactPackageVersion)
if ("19.0.0-native-fb-6b82f3c9-20240729" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.0.0-native-fb-b9af819f-20240726\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.0.0-native-fb-6b82f3c9-20240729\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -16961,12 +16961,12 @@ __DEV__ &&
scheduleRoot: scheduleRoot,
setRefreshHandler: setRefreshHandler,
getCurrentFiber: getCurrentFiberForDevTools,
reconcilerVersion: "19.0.0-native-fb-b9af819f-20240726"
reconcilerVersion: "19.0.0-native-fb-6b82f3c9-20240729"
});
})({
findFiberByHostInstance: getInstanceFromTag,
bundleType: 1,
version: "19.0.0-native-fb-b9af819f-20240726",
version: "19.0.0-native-fb-6b82f3c9-20240729",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<5223c1a4a8ca6cd4c24e2a55c3a736db>>
* @generated SignedSource<<317efd1b532b808be7ffb57ad213f22e>>
*/
"use strict";
@@ -10702,11 +10702,11 @@ function traverseOwnerTreeUp(hierarchy, instance) {
traverseOwnerTreeUp(hierarchy, instance);
}
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-native-fb-b9af819f-20240726" !== isomorphicReactPackageVersion)
if ("19.0.0-native-fb-6b82f3c9-20240729" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.0.0-native-fb-b9af819f-20240726\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.0.0-native-fb-6b82f3c9-20240729\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -10756,7 +10756,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1212 = {
findFiberByHostInstance: getInstanceFromTag,
bundleType: 0,
version: "19.0.0-native-fb-b9af819f-20240726",
version: "19.0.0-native-fb-6b82f3c9-20240729",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -10799,7 +10799,7 @@ var internals$jscomp$inline_1447 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-native-fb-b9af819f-20240726"
reconcilerVersion: "19.0.0-native-fb-6b82f3c9-20240729"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1448 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<bb7aaef0ada366c66d88f7a0115b1faa>>
* @generated SignedSource<<85397826fc6cad169d3e89f193fb4089>>
*/
"use strict";
@@ -11417,11 +11417,11 @@ function traverseOwnerTreeUp(hierarchy, instance) {
traverseOwnerTreeUp(hierarchy, instance);
}
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-native-fb-b9af819f-20240726" !== isomorphicReactPackageVersion)
if ("19.0.0-native-fb-6b82f3c9-20240729" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.0.0-native-fb-b9af819f-20240726\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.0.0-native-fb-6b82f3c9-20240729\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -11471,7 +11471,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1294 = {
findFiberByHostInstance: getInstanceFromTag,
bundleType: 0,
version: "19.0.0-native-fb-b9af819f-20240726",
version: "19.0.0-native-fb-6b82f3c9-20240729",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -11527,7 +11527,7 @@ var roots = new Map(),
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-native-fb-b9af819f-20240726"
reconcilerVersion: "19.0.0-native-fb-6b82f3c9-20240729"
});
exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {
computeComponentStackForErrorReporting: function (reactTag) {