Dev.Lib
arrow_backBack to Blogs
LEVEL_022.5June 27, 20261 min read

Scheduler priorities

React & Rendering

Lanes/priorities order updates: discrete input > continuous input > default > transition > idle.

Summary

Lanes/priorities order updates: discrete input > continuous input > default > transition > idle. Mis-prioritized updates (heavy setState on every keystroke without transition) cause jank. useDeferredValue delays showing stale value while re-rendering. Match priority to user expectation — don't defer critical feedback.

Code example

import { useTransition } from 'react';

function TabPanel({ tab }) {
  const [isPending, startTransition] = useTransition();

  function selectTab(next) {
    startTransition(() => setActiveTab(next));
  }

  return isPending ? <Skeleton /> : <Content tab={tab} />;
}

Key points

  • Lanes/priorities order updates: discrete input > continuous input > default > transition > idle.
  • Mis-prioritized updates (heavy setState on every keystroke without transition) cause jank.
  • useDeferredValue delays showing stale value while re-rendering.
  • Match priority to user expectation — don't defer critical feedback.

Further reading

Related concepts