@@ -172,6 +172,9 @@ export type MonitoringOptions = Pick<
172
172
interface Monitor {
173
173
pendingRequests : number ;
174
174
interactions : Array < InternalInteraction > ;
175
+ interactionListeningForRenders :
176
+ | ( ( fiber : Fiber , renders : Array < Render > ) => void )
177
+ | null ;
175
178
session : ReturnType < typeof getSession > ;
176
179
url : string | null ;
177
180
route : string | null ;
@@ -381,12 +384,14 @@ export const reportRender = (fiber: Fiber, renders: Array<Render>) => {
381
384
382
385
// Get data from both current and alternate fibers
383
386
const currentData = Store . reportData . get ( reportFiber ) ;
384
- const alternateData = fiber . alternate ? Store . reportData . get ( fiber . alternate ) : null ;
387
+ const alternateData = fiber . alternate
388
+ ? Store . reportData . get ( fiber . alternate )
389
+ : null ;
385
390
386
391
// More efficient null checks and Math.max
387
392
const existingCount = Math . max (
388
393
( currentData && currentData . count ) || 0 ,
389
- ( alternateData && alternateData . count ) || 0
394
+ ( alternateData && alternateData . count ) || 0 ,
390
395
) ;
391
396
392
397
// Create single shared object for both fibers
@@ -395,7 +400,7 @@ export const reportRender = (fiber: Fiber, renders: Array<Render>) => {
395
400
time : selfTime || 0 ,
396
401
renders,
397
402
displayName,
398
- type : getType ( fiber . type ) || null
403
+ type : getType ( fiber . type ) || null ,
399
404
} ;
400
405
401
406
// Store in both fibers
@@ -461,7 +466,12 @@ const updateScheduledOutlines = (fiber: Fiber, renders: Array<Render>) => {
461
466
for ( let i = 0 , len = renders . length ; i < len ; i ++ ) {
462
467
const render = renders [ i ] ;
463
468
const domFiber = getNearestHostFiber ( fiber ) ;
464
- if ( ! domFiber || ! domFiber . stateNode || ! ( domFiber . stateNode instanceof Element ) ) continue ;
469
+ if (
470
+ ! domFiber ||
471
+ ! domFiber . stateNode ||
472
+ ! ( domFiber . stateNode instanceof Element )
473
+ )
474
+ continue ;
465
475
466
476
if ( ReactScanInternals . scheduledOutlines . has ( fiber ) ) {
467
477
const existingOutline = ReactScanInternals . scheduledOutlines . get ( fiber ) ! ;
@@ -512,6 +522,10 @@ export const getIsProduction = () => {
512
522
return isProduction ;
513
523
} ;
514
524
525
+ export const attachReplayCanvas = ( ) => {
526
+ startFlushOutlineInterval ( ) ;
527
+ } ;
528
+
515
529
export const start = ( ) => {
516
530
if ( typeof window === 'undefined' ) return ;
517
531
@@ -540,6 +554,13 @@ export const start = () => {
540
554
541
555
const instrumentation = createInstrumentation ( 'devtools' , {
542
556
onActive ( ) {
557
+ const rdtHook = getRDTHook ( ) ;
558
+ for ( const renderer of rdtHook . renderers . values ( ) ) {
559
+ const buildType = detectReactBuildType ( renderer ) ;
560
+ if ( buildType === 'production' ) {
561
+ isProduction = true ;
562
+ }
563
+ }
543
564
const existingRoot = document . querySelector ( 'react-scan-root' ) ;
544
565
if ( existingRoot ) {
545
566
return ;
@@ -556,7 +577,9 @@ export const start = () => {
556
577
void audioContext . resume ( ) ;
557
578
} ;
558
579
559
- window . addEventListener ( 'pointerdown' , createAudioContextOnInteraction , { once : true } ) ;
580
+ window . addEventListener ( 'pointerdown' , createAudioContextOnInteraction , {
581
+ once : true ,
582
+ } ) ;
560
583
561
584
const container = document . createElement ( 'div' ) ;
562
585
container . id = 'react-scan-root' ;
0 commit comments