Performance Optimization
React.memo
const ExpensiveComponent = React.memo(({ data }) => {
return <div>{expensiveRender(data)}</div>;
});
useMemo and useCallback
const memoizedValue = useMemo(() => computeExpensive(a, b), [a, b]);
const memoizedCallback = useCallback(() => doSomething(a), [a]);
Code Splitting
const LazyComponent = lazy(() => import('./Component'));
Virtualization
import { FixedSizeList } from 'react-window';
<FixedSizeList height={400} itemCount={1000} itemSize={35} width='100%'>
{Row}
</FixedSizeList>;
Web Vitals Monitoring
import { getCLS, getFID, getFCP } from 'web-vitals';
getCLS(console.log);
getFID(console.log);
getFCP(console.log);
Best Practices
- Profile before optimizing - Use React DevTools Profiler
- Lazy load routes - Split by route
- Virtualize long lists - Use react-window
- Debounce expensive operations - Search, filtering
- Optimize images - Use WebP, lazy loading
- Code split - Dynamic imports
- Memoize selectively - Don't over-optimize