React Performance Optimization Techniques
By Stanley Hayford ·
Identifying Performance Bottlenecks
Before optimizing, measure. Use React DevTools Profiler to find components that re-render unnecessarily.
Memoization
React.memo
Wrap components that receive the same props frequently:
const ExpensiveList = React.memo(({ items }: { items: Item[] }) => {
return items.map(item => <ListItem key={item.id} {...item} />);
});
useMemo & useCallback
const sortedItems = useMemo(
() => items.sort((a, b) => a.name.localeCompare(b.name)),
[items]
);
const handleClick = useCallback((id: string) => {
setSelected(id);
}, []);
Virtualization
For long lists (1000+ items), use virtualization libraries like react-window or @tanstack/virtual. Only render visible items.
Code Splitting
const Dashboard = lazy(() => import("./pages/Dashboard"));
<Suspense fallback={<Loading />}>
<Dashboard />
</Suspense>
Key Takeaways
- Don't optimize prematurely — measure first
- Memoize expensive computations and stable callbacks
- Virtualize long lists
- Split code at route boundaries
- Keep state as local as possible
Tags: React, Performance, Frontend, JavaScript