Visual flicker occurs because DOM updates happen after paint when useEffect should use useLayoutEffect.