99
1010import type { Fiber } from './ReactInternalTypes' ;
1111
12+ import type { Lanes } from './ReactFiberLane' ;
13+
1214import getComponentNameFromFiber from './getComponentNameFromFiber' ;
1315
14- import { getGroupNameOfHighestPriorityLane } from './ReactFiberLane' ;
16+ import {
17+ getGroupNameOfHighestPriorityLane ,
18+ includesOnlyHydrationLanes ,
19+ includesOnlyOffscreenLanes ,
20+ includesOnlyHydrationOrOffscreenLanes ,
21+ } from './ReactFiberLane' ;
1522
1623import { enableProfilerTimer } from 'shared/ReactFeatureFlags' ;
1724
@@ -51,7 +58,7 @@ const reusableLaneOptions = {
5158 } ,
5259} ;
5360
54- export function setCurrentTrackFromLanes ( lanes : number ) : void {
61+ export function setCurrentTrackFromLanes ( lanes : Lanes ) : void {
5562 reusableLaneDevToolDetails . track = getGroupNameOfHighestPriorityLane ( lanes ) ;
5663}
5764
@@ -223,6 +230,7 @@ export function logBlockingStart(
223230 eventType : null | string ,
224231 eventIsRepeat : boolean ,
225232 renderStartTime : number ,
233+ lanes : Lanes ,
226234) : void {
227235 if ( supportsUserTiming ) {
228236 reusableLaneDevToolDetails . track = 'Blocking' ;
@@ -240,7 +248,11 @@ export function logBlockingStart(
240248 }
241249 if ( updateTime > 0 ) {
242250 // Log the time from when we called setState until we started rendering.
243- reusableLaneDevToolDetails . color = 'primary-light' ;
251+ reusableLaneDevToolDetails . color = includesOnlyHydrationOrOffscreenLanes (
252+ lanes ,
253+ )
254+ ? 'tertiary-light'
255+ : 'primary-light' ;
244256 reusableLaneOptions . start = updateTime ;
245257 reusableLaneOptions . end = renderStartTime ;
246258 performance . measure ( 'Blocked' , reusableLaneOptions ) ;
@@ -292,33 +304,65 @@ export function logTransitionStart(
292304 }
293305}
294306
295- export function logRenderPhase ( startTime : number , endTime : number ) : void {
307+ export function logRenderPhase (
308+ startTime : number ,
309+ endTime : number ,
310+ lanes : Lanes ,
311+ ) : void {
296312 if ( supportsUserTiming ) {
297- reusableLaneDevToolDetails . color = 'primary-dark' ;
313+ reusableLaneDevToolDetails . color = includesOnlyHydrationOrOffscreenLanes (
314+ lanes ,
315+ )
316+ ? 'tertiary-dark'
317+ : 'primary-dark' ;
298318 reusableLaneOptions . start = startTime ;
299319 reusableLaneOptions . end = endTime ;
300- performance . measure ( 'Render' , reusableLaneOptions ) ;
320+ performance . measure (
321+ includesOnlyOffscreenLanes ( lanes )
322+ ? 'Prepared'
323+ : includesOnlyHydrationLanes ( lanes )
324+ ? 'Hydrated'
325+ : 'Render' ,
326+ reusableLaneOptions ,
327+ ) ;
301328 }
302329}
303330
304331export function logInterruptedRenderPhase (
305332 startTime : number ,
306333 endTime : number ,
334+ lanes : Lanes ,
307335) : void {
308336 if ( supportsUserTiming ) {
309- reusableLaneDevToolDetails . color = 'primary-dark' ;
337+ reusableLaneDevToolDetails . color = includesOnlyHydrationOrOffscreenLanes (
338+ lanes ,
339+ )
340+ ? 'tertiary-dark'
341+ : 'primary-dark' ;
310342 reusableLaneOptions . start = startTime ;
311343 reusableLaneOptions . end = endTime ;
312- performance . measure ( 'Interrupted Render' , reusableLaneOptions ) ;
344+ performance . measure (
345+ includesOnlyOffscreenLanes ( lanes )
346+ ? 'Prewarm'
347+ : includesOnlyHydrationLanes ( lanes )
348+ ? 'Interrupted Hydration'
349+ : 'Interrupted Render' ,
350+ reusableLaneOptions ,
351+ ) ;
313352 }
314353}
315354
316355export function logSuspendedRenderPhase (
317356 startTime : number ,
318357 endTime : number ,
358+ lanes : Lanes ,
319359) : void {
320360 if ( supportsUserTiming ) {
321- reusableLaneDevToolDetails . color = 'primary-dark' ;
361+ reusableLaneDevToolDetails . color = includesOnlyHydrationOrOffscreenLanes (
362+ lanes ,
363+ )
364+ ? 'tertiary-dark'
365+ : 'primary-dark' ;
322366 reusableLaneOptions . start = startTime ;
323367 reusableLaneOptions . end = endTime ;
324368 performance . measure ( 'Prewarm' , reusableLaneOptions ) ;
@@ -328,10 +372,15 @@ export function logSuspendedRenderPhase(
328372export function logSuspendedWithDelayPhase (
329373 startTime : number ,
330374 endTime : number ,
375+ lanes : Lanes ,
331376) : void {
332377 // This means the render was suspended and cannot commit until it gets unblocked.
333378 if ( supportsUserTiming ) {
334- reusableLaneDevToolDetails . color = 'primary-dark' ;
379+ reusableLaneDevToolDetails . color = includesOnlyHydrationOrOffscreenLanes (
380+ lanes ,
381+ )
382+ ? 'tertiary-dark'
383+ : 'primary-dark' ;
335384 reusableLaneOptions . start = startTime ;
336385 reusableLaneOptions . end = endTime ;
337386 performance . measure ( 'Suspended' , reusableLaneOptions ) ;
@@ -341,6 +390,7 @@ export function logSuspendedWithDelayPhase(
341390export function logErroredRenderPhase (
342391 startTime : number ,
343392 endTime : number ,
393+ lanes : Lanes ,
344394) : void {
345395 if ( supportsUserTiming ) {
346396 reusableLaneDevToolDetails . color = 'error' ;
0 commit comments