Traverse down an updated tree even if it has no passive effects in profiling mode (#34667)

We need this to be able to log the renders that happened inside.

This is the same thing we do here but for the offscreen special cases:


https://github.com/facebook/react/blob/main/packages/react-reconciler/src/ReactFiberCommitWork.js#L3452-L3457
This commit is contained in:
Sebastian Markbåge 2025-10-01 13:45:37 -04:00 committed by GitHub
parent 1bd1f01f2a
commit bbc2d596fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3945,7 +3945,12 @@ function commitPassiveMountOnFiber(
instance._visibility |= OffscreenPassiveEffectsConnected;
const includeWorkInProgressEffects =
(finishedWork.subtreeFlags & PassiveMask) !== NoFlags;
(finishedWork.subtreeFlags & PassiveMask) !== NoFlags ||
(enableProfilerTimer &&
enableComponentPerformanceTrack &&
finishedWork.actualDuration !== 0 &&
(finishedWork.alternate === null ||
finishedWork.alternate.child !== finishedWork.child));
recursivelyTraverseReconnectPassiveEffects(
finishedRoot,
finishedWork,
@ -4113,7 +4118,12 @@ function recursivelyTraverseReconnectPassiveEffects(
// node was reused.
const childShouldIncludeWorkInProgressEffects =
includeWorkInProgressEffects &&
(parentFiber.subtreeFlags & PassiveMask) !== NoFlags;
((parentFiber.subtreeFlags & PassiveMask) !== NoFlags ||
(enableProfilerTimer &&
enableComponentPerformanceTrack &&
parentFiber.actualDuration !== 0 &&
(parentFiber.alternate === null ||
parentFiber.alternate.child !== parentFiber.child)));
// TODO (Offscreen) Check: flags & (RefStatic | LayoutStatic)
let child = parentFiber.child;
@ -4379,7 +4389,14 @@ function recursivelyTraverseAtomicPassiveEffects(
// pre-rendering. We call this function when traversing a hidden tree whose
// regular effects are currently disconnected.
// TODO: Add special flag for atomic effects
if (parentFiber.subtreeFlags & PassiveMask) {
if (
parentFiber.subtreeFlags & PassiveMask ||
(enableProfilerTimer &&
enableComponentPerformanceTrack &&
parentFiber.actualDuration !== 0 &&
(parentFiber.alternate === null ||
parentFiber.alternate.child !== parentFiber.child))
) {
let child = parentFiber.child;
while (child !== null) {
if (enableProfilerTimer && enableComponentPerformanceTrack) {