주다훤 블로그

React Fiber

렌더링 작업을 잘게 쪼개고 우선순위를 매겨 UI가 끊기지 않도록 설계된 React의 재조정 엔진
2026.04.17발행·2026.04.17수정·8
React Fiber

React Fiber는 렌더링 작업을 작은 단위로 나누고 우선순위에 따라 처리함으로써, 무거운 업데이트 중에도 UI가 끊기지 않도록 설계된 React의 새로운 재조정 엔진입니다.

React Fiber

React Fiber는 React 16버전부터 도입된 새로운 재조정 엔진이다. 한국어로는 리액트 파이버라고 읽는다.

V-DOM은 상태가 바뀌면 가상 트리를 비교(Diffing)하고, 변경분만 native DOM에 재조정(Reconciliation) 하는 패턴이었다. 그래서 V-DOM에서 재조정은 필수적인 작업인데, 이를 좀 더 효율적으로 그리고 스케줄링이 가능하도록 하기 위해서 나온 것이 Fiber이다.

React 공식 문서에는 Fiber에 대한 내용이 담겨있지 않다. React Core 팀의 Andrew Clark이 작성한 글에서 소개한 내용이 거의 공식 문서를 대체하고 있으니, react-fiber-architecture을 참고하자.

[React Fiber의 목표]

Stack Reconciler의 한계

React 15까지 사용된 기존 엔진을 Stack Reconciler라 부른다. 이름처럼 콜 스택 기반으로 동작했다. 트리 비교를 시작하면 끝날 때까지 멈출 수 없었다.

stack-reconciler
상태 변경 Diffing 시작 ... (트리가 크면 수백 ms) ... → DOM 반영 → 완료
 구간 동안 메인 스레드 블로킹

자바스크립트는 싱글 스레드다. Reconciliation이 메인 스레드를 오래 점유하면, 그 사이에 사용자 입력, 애니메이션, 스크롤 같은 작업이 전부 멈춘다. 트리가 작을 때는 문제없지만, 복잡한 UI에서는 눈에 보이는 버벅임(jank)이 발생했다.

요리사 한 명이 10인분 코스 요리를 순서대로 만들고 있는데, 중간에 "물 한 잔만 주세요"라는 요청이 와도 코스가 끝날 때까지 무시하는 것과 같다.

Fiber의 핵심 아이디어

React 16에서 도입된 Fiber는 이 문제를 해결하기 위해 Reconciliation 엔진을 완전히 새로 설계한 것이다.

가장 핵심적인 아이디어는 두 가지다.

1. 작업을 쪼갠다 (증분 렌더링, Incremental Rendering)

기존에는 트리 전체를 한 번에 처리했다면, Fiber는 작업을 fiber라는 작은 단위로 쪼갠다. 각 fiber는 컴포넌트 하나에 대응하는 객체로, 트리의 노드 역할을 한다.

fiber
# Stack Reconciler
[====================================] 한 번에 처리
 
# Fiber
[====] [====] [====] [====] [====]    쪼개서 처리
 여기서 잠시 멈추고 급한 먼저 처리 가능

2. 우선순위를 매긴다 (작업 우선순위 부여, Priority Scheduling)

모든 업데이트가 동등하지 않다. Fiber는 작업에 우선순위를 부여한다.

우선순위예시처리
높음사용자 입력, 클릭, 키보드즉시 처리
보통데이터 패칭 결과 반영다음 프레임에 처리
낮음화면 밖 요소 렌더링여유 있을 때 처리

덕분에 무거운 렌더링 작업 중에도 사용자 입력에 즉시 반응할 수 있다.

아까 그 요리사가 이제는 요리 단계마다 잠깐 멈추고, "혹시 급한 주문 있나?" 확인할 수 있게 된 셈이다.

Fiber의 두 단계

Fiber는 작업을 Render PhaseCommit Phase, 두 단계로 나눈다.

Render Phase (중단 가능)

Commit Phase (중단 불가)

[Render Phase]                [Commit Phase]
fiber 트리 생성 Diffing        native DOM 반영
(중단 가능, 우선순위 스케줄링)       (중단 불가, 동기 실행)

Double Buffering

Fiber는 트리를 항상 두 개 유지한다.

Render Phase에서 workInProgress 트리를 완성하고, Commit Phase에서 이 트리를 current로 교체한다.

이 방식을 Double Buffering이라 부른다. 게임이나 영상에서 화면 깜빡임을 방지하기 위해 쓰는 기법과 같은 원리다.

정리

구분Stack Reconciler (React 15)Fiber (React 16+)
작업 단위트리 전체fiber (컴포넌트 단위)
중단 가능불가가능 (Render Phase)
우선순위없음있음
스케줄링동기비동기 (Concurrent)

Fiber의 등장으로 React는 단순한 Virtual DOM 라이브러리를 넘어, Concurrent Rendering이라는 새로운 패러다임을 열 수 있게 됐다. useTransition, Suspense 같은 기능도 모두 Fiber 아키텍처 위에서 동작한다.