@@ -28,6 +28,12 @@ export const TracePanel = ({
28
28
traceOrigins,
29
29
refreshTracePanelRef,
30
30
} : TracePanelProps ) => {
31
+ const [ isInitialized , setIsInitialized ] = useState ( false )
32
+
33
+ useEffect ( ( ) => {
34
+ setIsInitialized ( true )
35
+ } , [ ] )
36
+
31
37
const [ selectedLogEntry , setSelectedLogEntry ] = useState < LogEntry | null > ( null )
32
38
33
39
const [ , setRefreshDummy ] = useState ( [ ] ) // Dummy state to trigger re-render.
@@ -58,32 +64,37 @@ export const TracePanel = ({
58
64
const { mount, render, trace, hooks } = traceOrigins
59
65
const traceOriginList : TraceOrigin [ ] = [ mount , render , ...hooks , trace ]
60
66
67
+ // Rendering inner trace panel is delayed until after initialization effect to avoid SSR hydration mismatch.
61
68
return (
62
69
< TracePanelWrapper >
63
- < div className = "component-label" >
64
- < div > { componentLabel } </ div >
65
- </ div >
66
- { propKeyValues . length > 0 && (
67
- < div className = "props" >
68
- { propKeyValues . map ( ( { propKey, propValue } ) => (
69
- < Prop
70
- propKey = { propKey }
71
- propValue = { propValue }
72
- showPropValue = { showPropValue }
73
- key = { propKey }
74
- />
75
- ) ) }
76
- </ div >
70
+ { isInitialized && (
71
+ < >
72
+ < div className = "component-label" >
73
+ < div > { componentLabel } </ div >
74
+ </ div >
75
+ { propKeyValues . length > 0 && (
76
+ < div className = "props" >
77
+ { propKeyValues . map ( ( { propKey, propValue } ) => (
78
+ < Prop
79
+ propKey = { propKey }
80
+ propValue = { propValue }
81
+ showPropValue = { showPropValue }
82
+ key = { propKey }
83
+ />
84
+ ) ) }
85
+ </ div >
86
+ ) }
87
+ < div className = "trace-origins" >
88
+ { traceOriginList . map ( ( origin , index ) => (
89
+ < TraceOriginEntry
90
+ key = { index }
91
+ traceOrigin = { origin }
92
+ isHighlighted = { origin === selectedLogEntry ?. origin }
93
+ />
94
+ ) ) }
95
+ </ div >
96
+ </ >
77
97
) }
78
- < div className = "trace-origins" >
79
- { traceOriginList . map ( ( origin , index ) => (
80
- < TraceOriginEntry
81
- key = { index }
82
- traceOrigin = { origin }
83
- isHighlighted = { origin === selectedLogEntry ?. origin }
84
- />
85
- ) ) }
86
- </ div >
87
98
</ TracePanelWrapper >
88
99
)
89
100
}
0 commit comments