--- name: optimizing-with-react-compiler description: Teaches what React Compiler handles automatically in React 19, reducing need for manual memoization. Use when optimizing performance or deciding when to use useMemo/useCallback. allowed-tools: Read, Write, Edit version: 1.0.0 --- # React Compiler Awareness React Compiler (available separately) automatically memoizes code, reducing need for manual optimization. (verify use in project before using this skill) ## What React Compiler Handles **Automatically memoizes:** - Component re-renders - Expensive calculations - Function references - Object/array creation **Before (Manual Memoization):** ```javascript function Component({ items }) { const sortedItems = useMemo(() => { return [...items].sort((a, b) => a.name.localeCompare(b.name)); }, [items]); const handleClick = useCallback(() => { console.log('Clicked'); }, []); return ; } ``` **After (React Compiler):** ```javascript function Component({ items }) { const sortedItems = [...items].sort((a, b) => a.name.localeCompare(b.name)); const handleClick = () => { console.log('Clicked'); }; return ; } ``` ## When Manual Memoization Still Needed **Keep `useMemo` when:** - Extremely expensive calculations (> 100ms) - Third-party libraries require stable references - React Profiler shows specific performance issues **Keep `React.memo` when:** - Component re-renders are very expensive - Props rarely change but parent re-renders often - Verified performance improvement with Profiler ## Performance Best Practices **Do:** - Trust React Compiler for most optimizations - Keep components small and focused - Keep state local - Use children prop pattern **Don't:** - Add premature memoization - Over-engineer performance - Skip measuring actual impact For comprehensive React Compiler information, see: `research/react-19-comprehensive.md` lines 1179-1223.