Back to React.js Mastery
Advanced
20 min Read

Performance Tuning

Learning Objectives

  • Code Splitting
  • Profiling
  • Server Components

Performance Tuning: Zero-Lag Interfaces

A "senior" React developer doesn't just make it work; they make it perform. Here’s how to audit and optimize your React application.

1. Finding Bottlenecks: React DevTools

Use the Profiler tab in React DevTools to record a session.

  • Flamegraph: Shows which components rendered and why.
  • Ranked Chart: Sorts components by render duration.

2. Preventing Unnecessary Re-renders

  • React.memo: Use it for "heavy" leaf components that receive the same props frequently.
  • Composition: Move state down to where it is needed, or use "Children as Props" to prevent parent updates from re-rendering the whole tree.
javascript code
// Before (Parent re-renders on scroll, causing Child to re-render)
function Parent() {
    const [scroll, setScroll] = useState(0);
    return(
        <div>
            <ScrollTracker onScroll={setScroll} />
            <HeavyChild />
        </div>
    );
}

// After (HeavyChild won't re-render when scroll changes)
function Parent({ children }) {
    const [scroll, setScroll] = useState(0);
    return(
        <div>
            <ScrollTracker onScroll={setScroll} />
            {children}
        </div>
    );
}

3. Code Splitting

Use React.lazy and Suspense to split your bundle into smaller chunks that load only when needed (e.g., dynamically importing a heavy Modal or a specific route).

javascript code
const AdminDashboard = React.lazy(() => import('./AdminDashboard'));

function App() {
    return (
        <Suspense fallback={<Loader />}>
            <AdminDashboard />
        </Suspense>
    );
}

4. Windowing / Virtualization

For lists with thousands of items, use react-window or react-virtualized. They only render the items currently visible in the viewport.

Server-Side Rendering (SSR) and Next.js

The ultimate optimization is moving rendering to the server. Use Next.js Server Components to send zero JavaScript to the client for static parts of your page.

Confused about this chapter?

Ask our DevVault AI Assistant for instant clarification!

Ask DevVault AI