"매 expensive render 를 매 user input 의 responsiveness 보다 매 뒤로 미룬다". 매 React 18+ 의 concurrent rendering 이 매 native 한 deferral 을 제공 — useDeferredValue, useTransition, Suspense 가 매 trio. 매 typing latency 와 매 result list 의 update 를 매 분리해 매 INP < 200ms 달성.
매 핵심
매 두 종류
Time deferral (concurrent): useTransition / useDeferredValue 로 매 low-priority work 를 매 schedule.
Visibility deferral (lazy): IntersectionObserver, content-visibility 로 매 off-screen render skip.
매 메커니즘
React scheduler 가 매 5ms budget 단위 로 매 yield → 매 main thread 자유.
High-priority (input, click) 는 매 즉시, low-priority (list re-render) 는 매 idle 시점.
React 19 의 매 automatic batching 과 결합 → 매 render churn 최소.
매 응용
Search-as-you-type (검색창 + 결과 리스트).
Tab switching (heavy panel).
Long list filtering / sorting.
Off-screen image / video / iframe.
💻 패턴
useDeferredValue (입력 즉시, 결과 지연)
functionSearch() {const[query,setQuery]=useState("");constdeferredQuery=useDeferredValue(query);return(<><inputvalue={query}onChange={e=>setQuery(e.target.value)}/>{/* 매 input 은 매 즉시, list 는 매 deferred */}<SlowResultsquery={deferredQuery}/></>);}
useTransition (state update 를 transition 으로)
const[tab,setTab]=useState("home");const[isPending,startTransition]=useTransition();consthandleTab=(next: string)=>{startTransition(()=>setTab(next));// 매 heavy switch
};return(<>{isPending&&<Spinner/>}<TabPanelname={tab}/></>);