최상위 10_Wiki/Topic_*였던 4개 카테고리 폴더를 10_Wiki/Topics/Topic_* 로 재배치.
콘텐츠 변경 없음(순수 폴더 이동) — Topics/ 하위 나머지 폴더는 이미 지난 커밋에서
전부 정리된 상태(잔존 항목은 에이전트 운영 상태 및 사용자가 보존을 요청한
업데이트0615/무제 3.canvas 뿐).
"매 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}/></>);