Performance: Optimistic updates pattern
MEDIUM IMPACT
This pattern affects interaction responsiveness and perceived speed by updating UI before server confirmation.
function handleClick() { setData(prev => ({ ...prev, updated: true })); // update UI immediately fetch('/api/update', { method: 'POST' }).catch(() => { setData(prev => ({ ...prev, updated: false })); // rollback on error }); } <button onClick={handleClick}>Update</button>
async function handleClick() { const response = await fetch('/api/update', { method: 'POST' }); if (response.ok) { setData(await response.json()); } } <button onClick={handleClick}>Update</button>
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Waiting for server response before UI update | Multiple DOM updates after async call | Triggers 1 reflow per update delay | Higher paint cost due to delayed changes | [X] Bad |
| Optimistic UI update before server response | Single immediate DOM update | Single reflow triggered instantly | Lower paint cost with smooth interaction | [OK] Good |