@samitouri / QOS-React-2 / commits / fa20b319fc

[Transition Tracing] Code Cleanup (#24880)

This PR cleans up some of the transition tracing code by: * Looping through marker transitions only when we process the markerComplete callback (rather than in the commit phase) so we block for less time during commit. * Renaming `PendingSuspenseBoundaries` to `pendingBoundaries` * Cleaning up the callback functions

Luna Ruan committed Jul 12, 2022 at 15:48 UTC fa20b319fcfad50d7b981ec57f111b4e24d6f559
11 files changed +111 -127
packages/react-reconciler/src/ReactFiber.new.js
+1 -1
@@ -770,7 +770,7 @@ export function createFiberFromTracingMarker(
770 fiber.lanes = lanes;
771 const tracingMarkerInstance: TracingMarkerInstance = {
772 transitions: null,
773 - pendingSuspenseBoundaries: null,
773 + pendingBoundaries: null,
774 };
775 fiber.stateNode = tracingMarkerInstance;
776 return fiber;
packages/react-reconciler/src/ReactFiber.old.js
+1 -1
@@ -770,7 +770,7 @@ export function createFiberFromTracingMarker(
770 fiber.lanes = lanes;
771 const tracingMarkerInstance: TracingMarkerInstance = {
772 transitions: null,
773 - pendingSuspenseBoundaries: null,
773 + pendingBoundaries: null,
774 };
775 fiber.stateNode = tracingMarkerInstance;
776 return fiber;
packages/react-reconciler/src/ReactFiberBeginWork.new.js
+1 -1
@@ -977,7 +977,7 @@ function updateTracingMarkerComponent(
977 if (currentTransitions !== null) {
978 const markerInstance: TracingMarkerInstance = {
979 transitions: new Set(currentTransitions),
980 - pendingSuspenseBoundaries: new Map(),
980 + pendingBoundaries: new Map(),
981 name: workInProgress.pendingProps.name,
982 };
983 workInProgress.stateNode = markerInstance;
packages/react-reconciler/src/ReactFiberBeginWork.old.js
+1 -1
@@ -977,7 +977,7 @@ function updateTracingMarkerComponent(
977 if (currentTransitions !== null) {
978 const markerInstance: TracingMarkerInstance = {
979 transitions: new Set(currentTransitions),
980 - pendingSuspenseBoundaries: new Map(),
980 + pendingBoundaries: new Map(),
981 name: workInProgress.pendingProps.name,
982 };
983 workInProgress.stateNode = markerInstance;
packages/react-reconciler/src/ReactFiberCommitWork.new.js
+13 -15
@@ -1210,7 +1210,7 @@ function reappearLayoutEffectsOnFiber(node: Fiber) {
1210 function commitTransitionProgress(offscreenFiber: Fiber) {
1211 if (enableTransitionTracing) {
1212 // This function adds suspense boundaries to the root
1213 - // or tracing marker's pendingSuspenseBoundaries map.
1213 + // or tracing marker's pendingBoundaries map.
1214 // When a suspense boundary goes from a resolved to a fallback
1215 // state we add the boundary to the map, and when it goes from
1216 // a fallback to a resolved state, we remove the boundary from
@@ -1250,7 +1250,7 @@ function commitTransitionProgress(offscreenFiber: Fiber) {
1250 // to the pending boundary set if it's there
1251 if (pendingMarkers !== null) {
1252 pendingMarkers.forEach(markerInstance => {
1253 - const pendingBoundaries = markerInstance.pendingSuspenseBoundaries;
1253 + const pendingBoundaries = markerInstance.pendingBoundaries;
1254 const transitions = markerInstance.transitions;
1255 if (
1256 pendingBoundaries !== null &&
@@ -1284,7 +1284,7 @@ function commitTransitionProgress(offscreenFiber: Fiber) {
1284 // if it's there
1285 if (pendingMarkers !== null) {
1286 pendingMarkers.forEach(markerInstance => {
1287 - const pendingBoundaries = markerInstance.pendingSuspenseBoundaries;
1287 + const pendingBoundaries = markerInstance.pendingBoundaries;
1288 const transitions = markerInstance.transitions;
1289 if (
1290 pendingBoundaries !== null &&
@@ -2977,7 +2977,7 @@ function commitPassiveMountOnFiber(
2977 }
2978
2979 incompleteTransitions.forEach((markerInstance, transition) => {
2980 - const pendingBoundaries = markerInstance.pendingSuspenseBoundaries;
2980 + const pendingBoundaries = markerInstance.pendingBoundaries;
2981 if (pendingBoundaries === null || pendingBoundaries.size === 0) {
2982 addTransitionCompleteCallbackToPendingTransition(transition);
2983 incompleteTransitions.delete(transition);
@@ -3052,8 +3052,8 @@ function commitPassiveMountOnFiber(
3052 if (instance.transitions === null) {
3053 instance.transitions = new Set();
3054 } else if (instance.transitions.has(transition)) {
3055 - if (markerInstance.pendingSuspenseBoundaries === null) {
3056 - markerInstance.pendingSuspenseBoundaries = new Map();
3055 + if (markerInstance.pendingBoundaries === null) {
3056 + markerInstance.pendingBoundaries = new Map();
3057 }
3058 if (instance.pendingMarkers === null) {
3059 instance.pendingMarkers = new Set();
@@ -3103,17 +3103,15 @@ function commitPassiveMountOnFiber(
3103 const instance = finishedWork.stateNode;
3104 if (
3105 instance.transitions !== null &&
3106 - (instance.pendingSuspenseBoundaries === null ||
3107 - instance.pendingSuspenseBoundaries.size === 0)
3106 + (instance.pendingBoundaries === null ||
3107 + instance.pendingBoundaries.size === 0)
3108 ) {
3109 - instance.transitions.forEach(transition => {
3110 - addMarkerCompleteCallbackToPendingTransition({
3111 - transition,
3112 - name: finishedWork.memoizedProps.name,
3113 - });
3114 - });
3109 + addMarkerCompleteCallbackToPendingTransition(
3110 + finishedWork.memoizedProps.name,
3111 + instance.transitions,
3112 + );
3113 instance.transitions = null;
3116 - instance.pendingSuspenseBoundaries = null;
3114 + instance.pendingBoundaries = null;
3115 }
3116 }
3117 break;
packages/react-reconciler/src/ReactFiberCommitWork.old.js
+13 -15
@@ -1210,7 +1210,7 @@ function reappearLayoutEffectsOnFiber(node: Fiber) {
1210 function commitTransitionProgress(offscreenFiber: Fiber) {
1211 if (enableTransitionTracing) {
1212 // This function adds suspense boundaries to the root
1213 - // or tracing marker's pendingSuspenseBoundaries map.
1213 + // or tracing marker's pendingBoundaries map.
1214 // When a suspense boundary goes from a resolved to a fallback
1215 // state we add the boundary to the map, and when it goes from
1216 // a fallback to a resolved state, we remove the boundary from
@@ -1250,7 +1250,7 @@ function commitTransitionProgress(offscreenFiber: Fiber) {
1250 // to the pending boundary set if it's there
1251 if (pendingMarkers !== null) {
1252 pendingMarkers.forEach(markerInstance => {
1253 - const pendingBoundaries = markerInstance.pendingSuspenseBoundaries;
1253 + const pendingBoundaries = markerInstance.pendingBoundaries;
1254 const transitions = markerInstance.transitions;
1255 if (
1256 pendingBoundaries !== null &&
@@ -1284,7 +1284,7 @@ function commitTransitionProgress(offscreenFiber: Fiber) {
1284 // if it's there
1285 if (pendingMarkers !== null) {
1286 pendingMarkers.forEach(markerInstance => {
1287 - const pendingBoundaries = markerInstance.pendingSuspenseBoundaries;
1287 + const pendingBoundaries = markerInstance.pendingBoundaries;
1288 const transitions = markerInstance.transitions;
1289 if (
1290 pendingBoundaries !== null &&
@@ -2977,7 +2977,7 @@ function commitPassiveMountOnFiber(
2977 }
2978
2979 incompleteTransitions.forEach((markerInstance, transition) => {
2980 - const pendingBoundaries = markerInstance.pendingSuspenseBoundaries;
2980 + const pendingBoundaries = markerInstance.pendingBoundaries;
2981 if (pendingBoundaries === null || pendingBoundaries.size === 0) {
2982 addTransitionCompleteCallbackToPendingTransition(transition);
2983 incompleteTransitions.delete(transition);
@@ -3052,8 +3052,8 @@ function commitPassiveMountOnFiber(
3052 if (instance.transitions === null) {
3053 instance.transitions = new Set();
3054 } else if (instance.transitions.has(transition)) {
3055 - if (markerInstance.pendingSuspenseBoundaries === null) {
3056 - markerInstance.pendingSuspenseBoundaries = new Map();
3055 + if (markerInstance.pendingBoundaries === null) {
3056 + markerInstance.pendingBoundaries = new Map();
3057 }
3058 if (instance.pendingMarkers === null) {
3059 instance.pendingMarkers = new Set();
@@ -3103,17 +3103,15 @@ function commitPassiveMountOnFiber(
3103 const instance = finishedWork.stateNode;
3104 if (
3105 instance.transitions !== null &&
3106 - (instance.pendingSuspenseBoundaries === null ||
3107 - instance.pendingSuspenseBoundaries.size === 0)
3106 + (instance.pendingBoundaries === null ||
3107 + instance.pendingBoundaries.size === 0)
3108 ) {
3109 - instance.transitions.forEach(transition => {
3110 - addMarkerCompleteCallbackToPendingTransition({
3111 - transition,
3112 - name: finishedWork.memoizedProps.name,
3113 - });
3114 - });
3109 + addMarkerCompleteCallbackToPendingTransition(
3110 + finishedWork.memoizedProps.name,
3111 + instance.transitions,
3112 + );
3113 instance.transitions = null;
3116 - instance.pendingSuspenseBoundaries = null;
3114 + instance.pendingBoundaries = null;
3115 }
3116 }
3117 break;
packages/react-reconciler/src/ReactFiberTracingMarkerComponent.new.js
+26 -36
@@ -17,17 +17,12 @@ import {getWorkInProgressTransitions} from './ReactFiberWorkLoop.new';
17
18 export type SuspenseInfo = {name: string | null};
19
20 -export type MarkerTransition = {
21 - transition: Transition,
22 - name: string,
23 -};
24 -
20 export type PendingTransitionCallbacks = {
21 transitionStart: Array<Transition> | null,
27 - transitionProgress: Map<Transition, PendingSuspenseBoundaries> | null,
22 + transitionProgress: Map<Transition, PendingBoundaries> | null,
23 transitionComplete: Array<Transition> | null,
24 markerProgress: Map<string, TracingMarkerInstance> | null,
30 - markerComplete: Array<MarkerTransition> | null,
25 + markerComplete: Map<string, Set<Transition>> | null,
26 };
27
28 export type Transition = {
@@ -42,12 +37,12 @@ export type BatchConfigTransition = {
37 };
38
39 export type TracingMarkerInstance = {|
45 - pendingSuspenseBoundaries: PendingSuspenseBoundaries | null,
40 + pendingBoundaries: PendingBoundaries | null,
41 transitions: Set<Transition> | null,
42 name?: string,
43 |};
44
50 -export type PendingSuspenseBoundaries = Map<OffscreenInstance, SuspenseInfo>;
45 +export type PendingBoundaries = Map<OffscreenInstance, SuspenseInfo>;
46
47 export function processTransitionCallbacks(
48 pendingTransitions: PendingTransitionCallbacks,
@@ -57,12 +52,11 @@ export function processTransitionCallbacks(
52 if (enableTransitionTracing) {
53 if (pendingTransitions !== null) {
54 const transitionStart = pendingTransitions.transitionStart;
60 - if (transitionStart !== null) {
61 - transitionStart.forEach(transition => {
62 - if (callbacks.onTransitionStart != null) {
63 - callbacks.onTransitionStart(transition.name, transition.startTime);
64 - }
65 - });
55 + const onTransitionStart = callbacks.onTransitionStart;
56 + if (transitionStart !== null && onTransitionStart != null) {
57 + transitionStart.forEach(transition =>
58 + onTransitionStart(transition.name, transition.startTime),
59 + );
60 }
61
62 const markerProgress = pendingTransitions.markerProgress;
@@ -71,8 +65,8 @@ export function processTransitionCallbacks(
65 markerProgress.forEach((markerInstance, markerName) => {
66 if (markerInstance.transitions !== null) {
67 const pending =
74 - markerInstance.pendingSuspenseBoundaries !== null
75 - ? Array.from(markerInstance.pendingSuspenseBoundaries.values())
68 + markerInstance.pendingBoundaries !== null
69 + ? Array.from(markerInstance.pendingBoundaries.values())
70 : [];
71 markerInstance.transitions.forEach(transition => {
72 onMarkerProgress(
@@ -88,16 +82,17 @@ export function processTransitionCallbacks(
82 }
83
84 const markerComplete = pendingTransitions.markerComplete;
91 - if (markerComplete !== null) {
92 - markerComplete.forEach(marker => {
93 - if (callbacks.onMarkerComplete != null) {
94 - callbacks.onMarkerComplete(
95 - marker.transition.name,
96 - marker.name,
97 - marker.transition.startTime,
85 + const onMarkerComplete = callbacks.onMarkerComplete;
86 + if (markerComplete !== null && onMarkerComplete != null) {
87 + markerComplete.forEach((transitions, markerName) => {
88 + transitions.forEach(transition => {
89 + onMarkerComplete(
90 + transition.name,
91 + markerName,
92 + transition.startTime,
93 endTime,
94 );
100 - }
95 + });
96 });
97 }
98
@@ -115,16 +110,11 @@ export function processTransitionCallbacks(
110 }
111
112 const transitionComplete = pendingTransitions.transitionComplete;
118 - if (transitionComplete !== null) {
119 - transitionComplete.forEach(transition => {
120 - if (callbacks.onTransitionComplete != null) {
121 - callbacks.onTransitionComplete(
122 - transition.name,
123 - transition.startTime,
124 - endTime,
125 - );
126 - }
127 - });
113 + const onTransitionComplete = callbacks.onTransitionComplete;
114 + if (transitionComplete !== null && onTransitionComplete != null) {
115 + transitionComplete.forEach(transition =>
116 + onTransitionComplete(transition.name, transition.startTime, endTime),
117 + );
118 }
119 }
120 }
@@ -157,7 +147,7 @@ export function pushRootMarkerInstance(workInProgress: Fiber): void {
147 if (!root.incompleteTransitions.has(transition)) {
148 const markerInstance: TracingMarkerInstance = {
149 transitions: new Set([transition]),
160 - pendingSuspenseBoundaries: null,
150 + pendingBoundaries: null,
151 };
152 root.incompleteTransitions.set(transition, markerInstance);
153 }
packages/react-reconciler/src/ReactFiberTracingMarkerComponent.old.js
+26 -36
@@ -17,17 +17,12 @@ import {getWorkInProgressTransitions} from './ReactFiberWorkLoop.old';
17
18 export type SuspenseInfo = {name: string | null};
19
20 -export type MarkerTransition = {
21 - transition: Transition,
22 - name: string,
23 -};
24 -
20 export type PendingTransitionCallbacks = {
21 transitionStart: Array<Transition> | null,
27 - transitionProgress: Map<Transition, PendingSuspenseBoundaries> | null,
22 + transitionProgress: Map<Transition, PendingBoundaries> | null,
23 transitionComplete: Array<Transition> | null,
24 markerProgress: Map<string, TracingMarkerInstance> | null,
30 - markerComplete: Array<MarkerTransition> | null,
25 + markerComplete: Map<string, Set<Transition>> | null,
26 };
27
28 export type Transition = {
@@ -42,12 +37,12 @@ export type BatchConfigTransition = {
37 };
38
39 export type TracingMarkerInstance = {|
45 - pendingSuspenseBoundaries: PendingSuspenseBoundaries | null,
40 + pendingBoundaries: PendingBoundaries | null,
41 transitions: Set<Transition> | null,
42 name?: string,
43 |};
44
50 -export type PendingSuspenseBoundaries = Map<OffscreenInstance, SuspenseInfo>;
45 +export type PendingBoundaries = Map<OffscreenInstance, SuspenseInfo>;
46
47 export function processTransitionCallbacks(
48 pendingTransitions: PendingTransitionCallbacks,
@@ -57,12 +52,11 @@ export function processTransitionCallbacks(
52 if (enableTransitionTracing) {
53 if (pendingTransitions !== null) {
54 const transitionStart = pendingTransitions.transitionStart;
60 - if (transitionStart !== null) {
61 - transitionStart.forEach(transition => {
62 - if (callbacks.onTransitionStart != null) {
63 - callbacks.onTransitionStart(transition.name, transition.startTime);
64 - }
65 - });
55 + const onTransitionStart = callbacks.onTransitionStart;
56 + if (transitionStart !== null && onTransitionStart != null) {
57 + transitionStart.forEach(transition =>
58 + onTransitionStart(transition.name, transition.startTime),
59 + );
60 }
61
62 const markerProgress = pendingTransitions.markerProgress;
@@ -71,8 +65,8 @@ export function processTransitionCallbacks(
65 markerProgress.forEach((markerInstance, markerName) => {
66 if (markerInstance.transitions !== null) {
67 const pending =
74 - markerInstance.pendingSuspenseBoundaries !== null
75 - ? Array.from(markerInstance.pendingSuspenseBoundaries.values())
68 + markerInstance.pendingBoundaries !== null
69 + ? Array.from(markerInstance.pendingBoundaries.values())
70 : [];
71 markerInstance.transitions.forEach(transition => {
72 onMarkerProgress(
@@ -88,16 +82,17 @@ export function processTransitionCallbacks(
82 }
83
84 const markerComplete = pendingTransitions.markerComplete;
91 - if (markerComplete !== null) {
92 - markerComplete.forEach(marker => {
93 - if (callbacks.onMarkerComplete != null) {
94 - callbacks.onMarkerComplete(
95 - marker.transition.name,
96 - marker.name,
97 - marker.transition.startTime,
85 + const onMarkerComplete = callbacks.onMarkerComplete;
86 + if (markerComplete !== null && onMarkerComplete != null) {
87 + markerComplete.forEach((transitions, markerName) => {
88 + transitions.forEach(transition => {
89 + onMarkerComplete(
90 + transition.name,
91 + markerName,
92 + transition.startTime,
93 endTime,
94 );
100 - }
95 + });
96 });
97 }
98
@@ -115,16 +110,11 @@ export function processTransitionCallbacks(
110 }
111
112 const transitionComplete = pendingTransitions.transitionComplete;
118 - if (transitionComplete !== null) {
119 - transitionComplete.forEach(transition => {
120 - if (callbacks.onTransitionComplete != null) {
121 - callbacks.onTransitionComplete(
122 - transition.name,
123 - transition.startTime,
124 - endTime,
125 - );
126 - }
127 - });
113 + const onTransitionComplete = callbacks.onTransitionComplete;
114 + if (transitionComplete !== null && onTransitionComplete != null) {
115 + transitionComplete.forEach(transition =>
116 + onTransitionComplete(transition.name, transition.startTime, endTime),
117 + );
118 }
119 }
120 }
@@ -157,7 +147,7 @@ export function pushRootMarkerInstance(workInProgress: Fiber): void {
147 if (!root.incompleteTransitions.has(transition)) {
148 const markerInstance: TracingMarkerInstance = {
149 transitions: new Set([transition]),
160 - pendingSuspenseBoundaries: null,
150 + pendingBoundaries: null,
151 };
152 root.incompleteTransitions.set(transition, markerInstance);
153 }
packages/react-reconciler/src/ReactFiberWorkLoop.new.js
+12 -9
@@ -16,8 +16,7 @@ import type {FunctionComponentUpdateQueue} from './ReactFiberHooks.new';
16 import type {EventPriority} from './ReactEventPriorities.new';
17 import type {
18 PendingTransitionCallbacks,
19 - MarkerTransition,
20 - PendingSuspenseBoundaries,
19 + PendingBoundaries,
20 Transition,
21 } from './ReactFiberTracingMarkerComponent.new';
22 import type {OffscreenInstance} from './ReactFiberOffscreenComponent';
@@ -358,7 +357,7 @@ export function addTransitionStartCallbackToPendingTransition(
357 export function addMarkerProgressCallbackToPendingTransition(
358 markerName: string,
359 transitions: Set<Transition>,
361 - pendingSuspenseBoundaries: PendingSuspenseBoundaries | null,
360 + pendingBoundaries: PendingBoundaries | null,
361 ) {
362 if (enableTransitionTracing) {
363 if (currentPendingTransitionCallbacks === null) {
@@ -376,14 +375,15 @@ export function addMarkerProgressCallbackToPendingTransition(
375 }
376
377 currentPendingTransitionCallbacks.markerProgress.set(markerName, {
379 - pendingSuspenseBoundaries,
378 + pendingBoundaries,
379 transitions,
380 });
381 }
382 }
383
384 export function addMarkerCompleteCallbackToPendingTransition(
386 - transition: MarkerTransition,
385 + markerName: string,
386 + transitions: Set<Transition>,
387 ) {
388 if (enableTransitionTracing) {
389 if (currentPendingTransitionCallbacks === null) {
@@ -392,21 +392,24 @@ export function addMarkerCompleteCallbackToPendingTransition(
392 transitionProgress: null,
393 transitionComplete: null,
394 markerProgress: null,
395 - markerComplete: [],
395 + markerComplete: new Map(),
396 };
397 }
398
399 if (currentPendingTransitionCallbacks.markerComplete === null) {
400 - currentPendingTransitionCallbacks.markerComplete = [];
400 + currentPendingTransitionCallbacks.markerComplete = new Map();
401 }
402
403 - currentPendingTransitionCallbacks.markerComplete.push(transition);
403 + currentPendingTransitionCallbacks.markerComplete.set(
404 + markerName,
405 + transitions,
406 + );
407 }
408 }
409
410 export function addTransitionProgressCallbackToPendingTransition(
411 transition: Transition,
409 - boundaries: PendingSuspenseBoundaries,
412 + boundaries: PendingBoundaries,
413 ) {
414 if (enableTransitionTracing) {
415 if (currentPendingTransitionCallbacks === null) {
packages/react-reconciler/src/ReactFiberWorkLoop.old.js
+12 -9
@@ -16,8 +16,7 @@ import type {FunctionComponentUpdateQueue} from './ReactFiberHooks.old';
16 import type {EventPriority} from './ReactEventPriorities.old';
17 import type {
18 PendingTransitionCallbacks,
19 - MarkerTransition,
20 - PendingSuspenseBoundaries,
19 + PendingBoundaries,
20 Transition,
21 } from './ReactFiberTracingMarkerComponent.old';
22 import type {OffscreenInstance} from './ReactFiberOffscreenComponent';
@@ -358,7 +357,7 @@ export function addTransitionStartCallbackToPendingTransition(
357 export function addMarkerProgressCallbackToPendingTransition(
358 markerName: string,
359 transitions: Set<Transition>,
361 - pendingSuspenseBoundaries: PendingSuspenseBoundaries | null,
360 + pendingBoundaries: PendingBoundaries | null,
361 ) {
362 if (enableTransitionTracing) {
363 if (currentPendingTransitionCallbacks === null) {
@@ -376,14 +375,15 @@ export function addMarkerProgressCallbackToPendingTransition(
375 }
376
377 currentPendingTransitionCallbacks.markerProgress.set(markerName, {
379 - pendingSuspenseBoundaries,
378 + pendingBoundaries,
379 transitions,
380 });
381 }
382 }
383
384 export function addMarkerCompleteCallbackToPendingTransition(
386 - transition: MarkerTransition,
385 + markerName: string,
386 + transitions: Set<Transition>,
387 ) {
388 if (enableTransitionTracing) {
389 if (currentPendingTransitionCallbacks === null) {
@@ -392,21 +392,24 @@ export function addMarkerCompleteCallbackToPendingTransition(
392 transitionProgress: null,
393 transitionComplete: null,
394 markerProgress: null,
395 - markerComplete: [],
395 + markerComplete: new Map(),
396 };
397 }
398
399 if (currentPendingTransitionCallbacks.markerComplete === null) {
400 - currentPendingTransitionCallbacks.markerComplete = [];
400 + currentPendingTransitionCallbacks.markerComplete = new Map();
401 }
402
403 - currentPendingTransitionCallbacks.markerComplete.push(transition);
403 + currentPendingTransitionCallbacks.markerComplete.set(
404 + markerName,
405 + transitions,
406 + );
407 }
408 }
409
410 export function addTransitionProgressCallbackToPendingTransition(
411 transition: Transition,
409 - boundaries: PendingSuspenseBoundaries,
412 + boundaries: PendingBoundaries,
413 ) {
414 if (enableTransitionTracing) {
415 if (currentPendingTransitionCallbacks === null) {
packages/react-reconciler/src/ReactInternalTypes.js
+5 -3
@@ -28,8 +28,10 @@ import type {TimeoutHandle, NoTimeout} from './ReactFiberHostConfig';
28 import type {Cache} from './ReactFiberCacheComponent.old';
29 // Doing this because there's a merge conflict because of the way sync-reconciler-fork
30 // is implemented
31 -import type {PendingSuspenseBoundaries} from './ReactFiberTracingMarkerComponent.new';
32 -import type {Transition} from './ReactFiberTracingMarkerComponent.new';
31 +import type {
32 + TracingMarkerInstance,
33 + Transition,
34 +} from './ReactFiberTracingMarkerComponent.new';
35 import type {ConcurrentUpdate} from './ReactFiberConcurrentUpdates.new';
36
37 // Unwind Circular: moved from ReactFiberHooks.old
@@ -335,7 +337,7 @@ type TransitionTracingOnlyFiberRootProperties = {|
337 // are considered complete when the pending suspense boundaries set is
338 // empty. We can represent this as a Map of transitions to suspense
339 // boundary sets
338 - incompleteTransitions: Map<Transition, PendingSuspenseBoundaries>,
340 + incompleteTransitions: Map<Array<Transition>, TracingMarkerInstance>,
341 |};
342
343 // Exported FiberRoot type includes all properties,