Before: Flickering UI
t = 0ms
User updates email
Contact card shows old data
t = 50ms
Loading skeleton appears
Visible flicker — data disappears momentarily
t = 300ms
Server responds
Full component re-render with new data
t = 350ms
Second flicker
Scroll position resets, layout shifts
User sees 2 visual disruptions in 350ms
vs
After: Smooth Transition
t = 0ms
User updates email
Optimistic update applied instantly
New value visible immediately — zero delay
t = 200ms
Background refetch completes
Diff/merge: only changed fields update silently
t = 200ms
Done
No skeleton, no layout shift, no scroll reset
User sees 0 visual disruptions