Skip to content

Commit 2b0fac5

Browse files
committed
Expand performance track section
1 parent 2a8744b commit 2b0fac5

File tree

1 file changed

+66
-1
lines changed

1 file changed

+66
-1
lines changed

src/content/blog/2025/10/01/react-19-2.md

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ For examples on how to use Activity, check out the [Activity docs](/reference/re
5656

5757
### React Performance Tracks {/*react-performance-tracks*/}
5858

59+
React 19.2 adds a new set of [custom tracks](https://developer.chrome.com/docs/devtools/performance/extension) to Chrome DevTools performance profiles to provide more information about the performance of your React app.
5960

60-
React 19.2 adds a new set of [custom tracks](https://developer.chrome.com/docs/devtools/performance/extension) to Chrome DevTools performance profiles to provide more information about the performance of your React app:
61+
#### Scheduler ⚛ {/*scheduler-*/}
6162

6263
<div style={{display: 'flex', justifyContent: 'center', marginBottom: '1rem'}}>
6364
<picture >
@@ -70,6 +71,70 @@ React 19.2 adds a new set of [custom tracks](https://developer.chrome.com/docs/d
7071
</picture>
7172
</div>
7273

74+
The Scheduler track shows what React is working on for different priorities:
75+
76+
- **Blocking** - synchronous updates such as user interactions.
77+
- **Transition** - non-blocking updates such as Actions, or useDeferredValue.
78+
- **Suspense** - non-blocking updates rendering of Suspense content.
79+
- **Idle** - non-blocking updates such as children hidden by Activity.
80+
81+
Inside each track, you will see the type of work being performed such as:
82+
83+
- **Event** - the event that triggered an update.
84+
- **Update** - this is what scheduled an update.
85+
- **Render** - rendering components (visible in the [Components track](#components-track)).
86+
- **Commit** - committing the changes to the UI, and running effects during commit such as useLayoutEffect.
87+
- **Remaining Effects** - running effects after commit, such as useEffect.
88+
89+
You'll also see states of work, such as:
90+
- **Update Blocked** - when an update is waiting for a different priority of work.
91+
- **Waiting for Paint** - when React yields for paint before continuing work such as running effects.
92+
93+
See the [Scheduler track](/reference/dev-tools/react-performance-tracks#scheduler) docs for a full list.
94+
95+
#### Components ⚛ {/*components-*/}
96+
97+
<div style={{display: 'flex', justifyContent: 'center', marginBottom: '1rem'}}>
98+
<img className="w-full light-image" src="/images/docs/performance-tracks/components-render.png" alt="Components track: render durations" />
99+
<img className="w-full dark-image" src="/images/docs/performance-tracks/components-render.dark.png" alt="Components track: render durations" />
100+
</div>
101+
102+
The Components track shows the tree of components that React is working on either to render or run effects.
103+
104+
You'll see labels such as:
105+
- **Mount** - When the children mount or effects are mounted.
106+
- **Unmount** - When the children unmount or effects are unmounted.
107+
- **Reconnect** - Similar to Mount, but for `<Activity>`.
108+
- **Disconnect** - Similar to Unmount, but for `<Activity>`.
109+
- **Blocked** - When rendering is blocked due to yielding to work outside React.
110+
111+
Each entry represents the duration of the corresponding component render and all its descendant children components. For each component, the color of the bar indicates how long the component itself took:
112+
- **0-0.5ms**: light
113+
- **0.5-10ms**: darker
114+
- **10ms-100ms**: darkest
115+
- **> 100ms**: red
116+
117+
See the [Component track docs](/reference/dev-tools/react-performance-tracks#components) for a full list.
118+
119+
## Finding performance issues {/*finding-performance-issues*/}
120+
121+
Finally, the performance tracks include information to help identify performance pitfalls. For example, setting state in an Effect creates a "Cascading update", which is a common patterns for performance regressions.
122+
123+
React flags cascading renders in the performance tracks and marks them with a red Cascading Update label:
124+
125+
<div style={{display: 'flex', justifyContent: 'center', marginBottom: '1rem'}}>
126+
<img className="w-full light-image" src="/images/docs/performance-tracks/scheduler-cascading-update.png" alt="Scheduler track: cascading updates" />
127+
<img className="w-full dark-image" src="/images/docs/performance-tracks/scheduler-cascading-update.dark.png" alt="Scheduler track: cascading updates" />
128+
</div>
129+
130+
<Note>
131+
132+
In development builds, you can select the "Cascading Update" to view the source of the update in the "Summary" panel below.
133+
134+
</Note>
135+
136+
These performance tracks are just a start. We will continue to expand on the performance tracks to provide more information and insights about your app.
137+
73138
For more information, see the [React Performance Tracks docs](/reference/dev-tools/react-performance-tracks).
74139

75140
---

0 commit comments

Comments
 (0)