These React 18+ hooks allow deferring updates to keep the interface responsive.
useTransition() — marks state update as low priority:
1const [isPending, startTransition] = useTransition();23function SearchResults({ query }) {4 const [results, setResults] = useState([]);56 function handleChange(e) {7 // Priority: instantly update input8 setInputValue(e.target.value);910 // Low priority: update list (can wait)11 startTransition(() => {12 setResults(filterResults(e.target.value));13 });14 }15}
useDeferredValue() — defers a value:
1function Search({ query }) {2 const deferredQuery = useDeferredValue(query);3 // deferredQuery updates AFTER query updates4 return <Results query={deferredQuery} />;5}
Analogy: Imagine you are typing in a search. Each letter is a priority action (instant response). But filtering 10000 products is low priority (can wait 100ms).
When to use: