
React에서의 렌더링 과정은 단순히 setState() → 재렌더링이 일어나는 것처럼 보이지만,
내부적으로는 두 가지 단계인 Render Phase와 Commit Phase를 거친다.
각 단계는 역할이 명확히 다르고, 특히 React 18의 Concurrent Mode에서는 이 구조가 더욱 중요해진다.
UI 변경 사항을 계산하는 단계
실제 DOM에 변경 사항을 적용하는 단계
useEffect, useLayoutEffect 등의 사이드이펙트 실행| 구분 | Render Phase | Commit Phase |
|---|---|---|
| 역할 | 변경 사항 계산 (Virtual DOM) | 실제 DOM 반영 |
| DOM 변경 | ❌ 없음 | ✅ 있음 |
| 중단 가능 여부 | ✅ 중단 및 재시작 가능 | ❌ 불가 |
| React Hook 실행 | useMemo, useCallback, render 내부만 | useEffect, useLayoutEffect, ref 처리 |
| 처리 방식 | 비동기 가능 (Concurrent Mode) | 반드시 동기 처리 |
render phase가 끝났더라도 React는 즉시 커밋하지 않을 수 있음commit phase를 안전하게 실행 → 사용자 경험 최적화commit 하므로,다음에는 Concurrent Mode, Fiber Tree, Reconciliation, Effect Cleanup 등의 심화 주제도 정리해보자!