useDeferredValue is a hook that returns a "deferred" (older) version of the value so that expensive updates do not slow down the interface.
Simple analogy: Imagine you are watching a movie and have slow internet.
Difference from useTransition:
How it works:
1import { useDeferredValue } from 'react';23function SearchResults({ query }) {4 const deferredQuery = useDeferredValue(query); // Deferred version56 // Use deferredQuery for expensive calculations7 const results = useMemo(() => {8 return bigList.filter(item => item.name.includes(deferredQuery));9 }, [deferredQuery]);1011 const isStale = query !== deferredQuery;1213 return (14 <div style={{ opacity: isStale ? 0.5 : 1 }}>15 <ResultsList items={results} />16 </div>17 );18}
When to use: