useEffect — after render. useLayoutEffect — before paint.
useEffect:
1useEffect(() => {2 // Runs after render3 console.log("Component rendered");45 return () => {6 // Cleanup7 };8}, [dependency]);
useLayoutEffect:
1useLayoutEffect(() => {2 // Runs before paint3 console.log("Before paint");45 return () => {6 // Cleanup7 };8}, [dependency]);
Key differences: