useLayoutEffect vs useEffect Example

useLayoutEffect (Synchronous):

Width: 0px

useEffect (Asynchronous):

Width: 0px

Animation Example:

This box instantly appears on the right side without showing the initial left position, thanks to useLayoutEffect running before the browser paint.

Key Differences:

  • useLayoutEffect runs synchronously after React performs all DOM mutations
  • useEffect runs asynchronously after the browser has painted the updates
  • useLayoutEffect can be useful when you need to make DOM measurements or prevent visual flickering