React Concurrent Mode (now "concurrent features") allows React to interrupt rendering to keep UI responsive.
Key concepts:
1. Interruptible rendering:
2. Prioritized updates:
1import { useTransition, useDeferredValue } from "react";23function Search() {4 const [query, setQuery] = useState("");5 const [isPending, startTransition] = useTransition();67 const handleChange = (e) => {8 // Urgent: update input immediately9 setQuery(e.target.value);1011 // Non-urgent: filter results can be interrupted12 startTransition(() => {13 setFilteredResults(filterItems(e.target.value));14 });15 };1617 return (18 <div>19 <input value={query} onChange={handleChange} />20 <div style={{ opacity: isPending ? 0.5 : 1 }}>21 {filteredResults.map(r => <Result key={r.id} {...r} />)}22 </div>23 </div>24 );25}
3. Deferred values:
1function App() {2 const [query, setQuery] = useState("");3 const deferredQuery = useDeferredValue(query);45 return (6 <>7 <input value={query} onChange={e => setQuery(e.target.value)} />8 <Results query={deferredQuery} /> {/* Uses stale-while-revalidate */}9 </>10 );11}
Benefits:
Enabling in React 18+: