Skip to main content

Rerender Transitions

Source: .agents/references/coding-standard/vercel-react-best-practices/rules/rerender-transitions.md

Metadata

  • title: Use Transitions for Non-Urgent Updates
  • impact: MEDIUM
  • impactDescription: maintains UI responsiveness
  • tags: rerender, transitions, startTransition, performance

Content

Use Transitions for Non-Urgent Updates

Mark frequent, non-urgent state updates as transitions to maintain UI responsiveness.

Incorrect (blocks UI on every scroll):

function ScrollTracker() {
const [scrollY, setScrollY] = useState(0)
useEffect(() => {
const handler = () => setScrollY(window.scrollY)
window.addEventListener('scroll', handler, { passive: true })
return () => window.removeEventListener('scroll', handler)
}, [])
}

Correct (non-blocking updates):

import { startTransition } from 'react'

function ScrollTracker() {
const [scrollY, setScrollY] = useState(0)
useEffect(() => {
const handler = () => {
startTransition(() => setScrollY(window.scrollY))
}
window.addEventListener('scroll', handler, { passive: true })
return () => window.removeEventListener('scroll', handler)
}, [])
}