React DevTools Profiler: Find Performance Bottlenecks

The React Profiler records how long components take to render, helping you find performance bottlenecks. Use it to diagnose slow interactions and see which components re-render too often.
WHY IT EXISTS: React apps can become slow without obvious errors. The Profiler was created to give developers a tool to see exactly which components are causing performance issues, like slow renders or unnecessary updates, that are otherwise invisible. It helps answer the question, "Why is my app slow?"
THE MENTAL MODEL: Think of the Profiler as a stopwatch and a census taker for your React components. When you perform an action in your app, the Profiler records how long each component took to "commit" (render), why it rendered, and how that impacts the total time. It visualizes this data so you can spot the expensive parts of your UI.
HOW IT WORKS: The Profiler is a tab within the React Developer Tools browser extension or standalone app. To use it, you start a recording, interact with your application (e.g., click a button, type in a field), and then stop the recording. The Profiler then displays a "flame graph" chart showing which components rendered during the interaction. The width and color of each bar indicate how long it took to render. You can click on components to see details like their props, state, and the reason they re-rendered.
WHEN TO USE IT: Use the Profiler whenever you need to identify performance problems. It's invaluable for debugging slow user interactions, finding components that re-render excessively (a common source of sluggishness), and measuring the impact of code changes on render times. It's the primary tool for optimizing React component performance.
WHEN NOT TO USE IT: Don't rely on the Profiler for absolute, real-world performance metrics. It runs in development mode, which includes extra checks and warnings that make React slower than in a production build. It's a diagnostic tool for finding relative bottlenecks, not for final benchmarking. Always confirm performance improvements with a production build.
ONE CANONICAL EXAMPLE: To find out why typing in an input field feels laggy, you would open the Profiler, start recording, type a few characters into the input, and stop recording. The resulting flame graph might reveal that with every keystroke, a large, unrelated component tree is re-rendering unnecessarily. This points you to the source of the lag, which you can then fix by memoizing the component or restructuring state.
Read the original → react.dev
Get five bites like this every day.
Tezvyn delivers a daily feed of 60-second tech bites with quizzes to lock in what you learn.