Performance: Dynamic rendering triggers
HIGH IMPACT
Dynamic rendering triggers affect page load speed and interaction responsiveness by causing repeated layout recalculations and re-renders during user interactions or data changes.
export default function Search() { const [query, setQuery] = React.useState(''); const handleChange = React.useCallback( e => { const value = e.target.value; clearTimeout(window.debounceTimeout); window.debounceTimeout = setTimeout(() => setQuery(value), 300); }, [] ); return <input type="text" defaultValue={query} onChange={handleChange} />; }
export default function Search() { const [query, setQuery] = React.useState(''); return ( <input type="text" value={query} onChange={e => setQuery(e.target.value)} /> ); }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Immediate state update on every input | High (many nodes updated) | High (1 per keystroke) | High (frequent repaint) | [X] Bad |
| Debounced input state update | Low (batched updates) | Low (few reflows) | Low (less repaint) | [OK] Good |
| Filtering large list on every render | High (many nodes re-rendered) | High (multiple reflows) | High (heavy repaint) | [X] Bad |
| Memoized filtering with useMemo | Medium (only filtered nodes) | Low (minimal reflows) | Medium (repaints only on filter change) | [OK] Good |