React Developer Tools Extension
What React Developer Tools Shows
The React Developer Tools browser extension adds a Components and a Profiler tab to your browser's dev tools, letting you inspect the live component tree, its current props and state, rather than just the raw rendered HTML.
Example: What React Developer Tools Shows
<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
function Header() { return <h3>Header</h3>; }
function Content() { return <p>Content</p>; }
function Layout() {
return (
<div>
<Header />
<Content />
</div>
);
}
// React DevTools' Components tab would show this exact tree:
// Layout > Header, Content
ReactDOM.createRoot(document.getElementById('root')).render(<Layout />);
</script>
</body>
</html>
Inspecting Props and State Live
Clicking a component in the Components tab shows its current props and state values on the right, and you can even edit them live to see the UI update instantly, without changing your code.
Example: Inspecting Props and State Live
<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
function Counter() {
const [count, setCount] = React.useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>+1 (inspect state live)</button>
</div>
);
}
ReactDOM.createRoot(document.getElementById('root')).render(<Counter />);
</script>
</body>
</html>
Profiling Renders
The Profiler tab records how long each component takes to render and highlights which components re-rendered during an interaction, helping you spot unnecessary re-renders.
Example: Profiling Renders
<!DOCTYPE html>
<html>
<head>
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
function Child({ value }) {
return <p>Child rendered with: {value}</p>;
}
function Profiled() {
const [n, setN] = React.useState(0);
return (
<div>
<button onClick={() => setN(n + 1)}>Re-render Child</button>
<Child value={n} />
</div>
);
}
ReactDOM.createRoot(document.getElementById('root')).render(<Profiled />);
</script>
</body>
</html>
- Not realizing the extension only activates its React-specific panels on pages that actually use React.
- Confusing the Components tab (component tree) with the Profiler tab (performance timing).
- Forgetting DevTools panels reset their state on every full page reload.
- React Developer Tools is a browser extension for Chrome, Firefox, and Edge.
- It adds a Components tab to inspect the component tree and current props/state.
- It adds a Profiler tab to measure rendering performance.
- It's essential for debugging real React applications during development.
Available as an extension for Chrome, Firefox, and Edge; works with any React 16+ application running in the browser.
Chapter Quiz — Complete all 10 topics to unlock
0/10 topics done
Complete these topics first: