@@ -4310,7 +4310,9 @@ export function attach(
43104310 virtualLevel + 1,
43114311 );
43124312 if ((updateFlags & ShouldResetChildren) !== NoUpdate) {
4313- recordResetChildren(virtualInstance);
4313+ if (!isInDisconnectedSubtree) {
4314+ recordResetChildren(virtualInstance);
4315+ }
43144316 updateFlags &= ~ShouldResetChildren;
43154317 }
43164318 removePreviousSuspendedBy(
@@ -4405,10 +4407,8 @@ export function attach(
44054407 traceNearestHostComponentUpdate,
44064408 virtualLevel,
44074409 );
4408- updateFlags |= ShouldResetSuspenseChildren;
4409- if (!isInDisconnectedSubtree) {
4410- updateFlags |= ShouldResetChildren;
4411- }
4410+ updateFlags |=
4411+ ShouldResetChildren | ShouldResetSuspenseChildren;
44124412 } else {
44134413 updateFlags |= updateVirtualInstanceRecursively(
44144414 previousVirtualInstance,
@@ -4461,10 +4461,7 @@ export function attach(
44614461 insertChild(newVirtualInstance);
44624462 previousVirtualInstance = newVirtualInstance;
44634463 previousVirtualInstanceWasMount = true;
4464- updateFlags |= ShouldResetSuspenseChildren;
4465- if (!isInDisconnectedSubtree) {
4466- updateFlags |= ShouldResetChildren;
4467- }
4464+ updateFlags |= ShouldResetChildren;
44684465 }
44694466 // Existing children might be reparented into this new virtual instance.
44704467 // TODO: This will cause the front end to error which needs to be fixed.
@@ -4491,10 +4488,7 @@ export function attach(
44914488 traceNearestHostComponentUpdate,
44924489 virtualLevel,
44934490 );
4494- updateFlags |= ShouldResetSuspenseChildren;
4495- if (!isInDisconnectedSubtree) {
4496- updateFlags |= ShouldResetChildren;
4497- }
4491+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
44984492 } else {
44994493 updateFlags |= updateVirtualInstanceRecursively(
45004494 previousVirtualInstance,
@@ -4546,10 +4540,7 @@ export function attach(
45464540 // They are always different referentially, but if the instances line up
45474541 // conceptually we'll want to know that.
45484542 if (prevChild !== prevChildAtSameIndex) {
4549- updateFlags |= ShouldResetSuspenseChildren;
4550- if (!isInDisconnectedSubtree) {
4551- updateFlags |= ShouldResetChildren;
4552- }
4543+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
45534544 }
45544545
45554546 moveChild(fiberInstance, previousSiblingOfExistingInstance);
@@ -4566,10 +4557,7 @@ export function attach(
45664557 } else if (prevChild !== null && shouldFilterFiber(nextChild)) {
45674558 // The filtered instance could've reordered.
45684559 if (prevChild !== prevChildAtSameIndex) {
4569- updateFlags |= ShouldResetSuspenseChildren;
4570- if (!isInDisconnectedSubtree) {
4571- updateFlags |= ShouldResetChildren;
4572- }
4560+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
45734561 }
45744562
45754563 // If this Fiber should be filtered, we need to still update its children.
@@ -4593,10 +4581,7 @@ export function attach(
45934581
45944582 mountFiberRecursively(nextChild, traceNearestHostComponentUpdate);
45954583 // Need to mark the parent set to remount the new instance.
4596- updateFlags |= ShouldResetSuspenseChildren;
4597- if (!isInDisconnectedSubtree) {
4598- updateFlags |= ShouldResetChildren;
4599- }
4584+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
46004585 }
46014586 }
46024587 // Try the next child.
@@ -4619,10 +4604,7 @@ export function attach(
46194604 traceNearestHostComponentUpdate,
46204605 virtualLevel,
46214606 );
4622- updateFlags |= ShouldResetSuspenseChildren;
4623- if (!isInDisconnectedSubtree) {
4624- updateFlags |= ShouldResetChildren;
4625- }
4607+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
46264608 } else {
46274609 updateFlags |= updateVirtualInstanceRecursively(
46284610 previousVirtualInstance,
@@ -4636,10 +4618,7 @@ export function attach(
46364618 }
46374619 // If we have no more children, but used to, they don't line up.
46384620 if (prevChildAtSameIndex !== null) {
4639- updateFlags |= ShouldResetSuspenseChildren;
4640- if (!isInDisconnectedSubtree) {
4641- updateFlags |= ShouldResetChildren;
4642- }
4621+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
46434622 }
46444623 return updateFlags;
46454624 }
@@ -4651,9 +4630,7 @@ export function attach(
46514630 traceNearestHostComponentUpdate: boolean,
46524631 ): UpdateFlags {
46534632 if (nextFirstChild === null) {
4654- return prevFirstChild !== null && !isInDisconnectedSubtree
4655- ? ShouldResetChildren
4656- : NoUpdate;
4633+ return prevFirstChild !== null ? ShouldResetChildren : NoUpdate;
46574634 }
46584635 return updateVirtualChildrenRecursively(
46594636 nextFirstChild,
@@ -4879,10 +4856,7 @@ export function attach(
48794856 traceNearestHostComponentUpdate,
48804857 );
48814858
4882- updateFlags |= ShouldResetSuspenseChildren;
4883- if (!isInDisconnectedSubtree) {
4884- updateFlags |= ShouldResetChildren;
4885- }
4859+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
48864860 }
48874861
48884862 const childrenUpdateFlags =
@@ -4905,10 +4879,7 @@ export function attach(
49054879 nextPrimaryChildSet,
49064880 traceNearestHostComponentUpdate,
49074881 );
4908- updateFlags |= ShouldResetSuspenseChildren;
4909- if (!isInDisconnectedSubtree) {
4910- updateFlags |= ShouldResetChildren;
4911- }
4882+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
49124883 }
49134884 } else if (!prevDidTimeout && nextDidTimeOut) {
49144885 // Primary -> Fallback:
@@ -4925,10 +4896,7 @@ export function attach(
49254896 nextFallbackChildSet,
49264897 traceNearestHostComponentUpdate,
49274898 );
4928- updateFlags |= ShouldResetSuspenseChildren;
4929- if (!isInDisconnectedSubtree) {
4930- updateFlags |= ShouldResetChildren;
4931- }
4899+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
49324900 }
49334901 } else if (nextIsHidden) {
49344902 if (!prevWasHidden) {
@@ -4973,10 +4941,7 @@ export function attach(
49734941 if (fiberInstance !== null && !isInDisconnectedSubtree) {
49744942 reconnectChildrenRecursively(fiberInstance);
49754943 // Children may have reordered while they were hidden.
4976- updateFlags |= ShouldResetSuspenseChildren;
4977- if (!isInDisconnectedSubtree) {
4978- updateFlags |= ShouldResetChildren;
4979- }
4944+ updateFlags |= ShouldResetChildren | ShouldResetSuspenseChildren;
49804945 }
49814946 } else if (
49824947 nextFiber.tag === SuspenseComponent &&
@@ -5134,7 +5099,9 @@ export function attach(
51345099 // We need to crawl the subtree for closest non-filtered Fibers
51355100 // so that we can display them in a flat children set.
51365101 if (fiberInstance !== null && fiberInstance.kind === FIBER_INSTANCE) {
5137- recordResetChildren(fiberInstance);
5102+ if (!nextIsHidden && !isInDisconnectedSubtree) {
5103+ recordResetChildren(fiberInstance);
5104+ }
51385105
51395106 // We've handled the child order change for this Fiber.
51405107 // Since it's included, there's no need to invalidate parent child order.
0 commit comments