React 컴파일러

React Compiler

빌드 시 컴포넌트를 분석해 값과 렌더 작업을 자동으로 메모이제이션합니다.

···
html
<div class="scene"><b>ONE PARENT UPDATE</b><div class="row"><span>without</span><div id="manual" class="bars"></div></div><div class="row"><span>compiler</span><div id="compiled" class="bars"></div></div><div class="label" id="note">cache boundary reuses unchanged work</div></div>
css
.scene{width:min(94vw,800px);height:min(86vh,320px);position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:clamp(9px,2.4vmin,20px);font:500 clamp(15px,4vmin,18px)/1.3 var(--font-sans,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif)}.scene b,.scene strong{font-weight:700}.label{color:var(--muted)}.code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.pill{border:1px solid var(--line);border-radius:8px;padding:.4em .65em;background:var(--bg)}.active{border-color:var(--accent)!important;color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 10%,var(--surface))!important}.scene>b{color:var(--accent)}.row{display:flex;align-items:center;gap:8px;margin:clamp(15px,6vmin,42px) 0}.row span{width:25%}.bars{flex:1;display:flex;gap:4px;height:clamp(20px,7vmin,42px)}.bars i{flex:1;background:var(--accent-3);border-radius:4px;opacity:.3;transition:opacity .25s}#compiled i{background:var(--accent)}.bars i.on{opacity:1}.label{text-align:center}
js
for(const id of ["manual","compiled"])document.getElementById(id).innerHTML="<i></i><i></i><i></i><i></i><i></i>";let n=0;function tick(){[...document.querySelectorAll("#manual i")].forEach((x,i)=>x.classList.toggle("on",i<=n%5));[...document.querySelectorAll("#compiled i")].forEach((x,i)=>x.classList.toggle("on",i===0||i===n%5&&n%5===4));document.getElementById("note").textContent="update "+(n%5+1)+": unchanged work reused";n++}tick();setInterval(tick,800)

React Compiler 1.0은 컴포넌트와 훅을 분석해 자동 메모이제이션을 삽입하는 안정 버전입니다. 개발자가 일일이 useMemo와 useCallback을 추가하지 않아도 반복 계산을 줄일 수 있습니다.

데모는 동일한 부모 갱신을 통과하는 수동 경로와 컴파일된 경로의 작업 칸을 비교합니다. 실제 절감량은 코드와 사용 패턴에 따라 달라집니다. React 규칙을 위반한 코드는 최적화 대상에서 제외될 수 있으니 린트 진단을 함께 확인하세요.

언제 쓰나

React 앱의 반복 렌더 비용을 줄이고 싶을 때 점진적으로 적용하고 프로파일로 확인합니다.

페이지로 열기 ↗