# [[React Fiber Architecture|React Fiber Architecture]] ## ๐Ÿ“Œ Brief Summary [[React Fiber|React Fiber]]๋Š” ๋™์‹œ์„ฑ ๋ Œ๋”๋ง(Concurrent Rendering)์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด React 16์— ๋„์ž…๋œ ์žฌ์กฐ์ •(Reconciliation) ์—”์ง„์˜ ์ „๋ฉด์ ์ธ ์žฌ์ž‘์„ฑ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค [1, 2]. ๊ธฐ์กด์˜ ๋™๊ธฐ์‹ "์Šคํƒ ์žฌ์กฐ์ •์ž(stack reconciler)"๊ฐ€ ๊ฐ€์ง€๋˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ฐจ๋‹จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ Œ๋”๋ง ์ž‘์—…์„ "Fiber ๋…ธ๋“œ"๋ผ๋Š” ์ž‘์€ ์ž‘์—… ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค [3, 4]. ์ด๋ฅผ ํ†ตํ•ด ๋ Œ๋”๋ง์„ ์ผ์‹œ ์ค‘์ง€ํ•˜๊ณ  ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ์ƒํ˜ธ์ž‘์šฉ์— ์ œ์–ด๊ถŒ์„ ์–‘๋ณดํ•œ ๋’ค ๋‹ค์‹œ ์žฌ๊ฐœํ•˜๋Š” "ํƒ€์ž„ ์Šฌ๋ผ์ด์‹ฑ([[Time-Slicing|Time-Slicing]])"๊ณผ ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜์˜ ๋ Œ๋”๋ง์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค [3, 4]. ## ๐Ÿ“– Core Content * **๋™๊ธฐ์‹ ๋ธ”๋กœํ‚น์˜ ํ•ด๊ฒฐ ๋ฐ ๋‹จ์œ„ ์ž‘์—… (Unit of Work)** Fiber ์ด์ „์˜ React๋Š” "์Šคํƒ ์žฌ์กฐ์ •์ž"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ ๋‹จ์ผ ์žฌ๊ท€ ํ˜ธ์ถœ๋กœ ์ฒ˜๋ฆฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ž‘์—…์ด 16.6ms์˜ ํ”„๋ ˆ์ž„ ์˜ˆ์‚ฐ์„ ์ดˆ๊ณผํ•˜๋ฉด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  UI๊ฐ€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์‘๋‹ตํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค [3]. Fiber๋Š” ๋ Œ๋”๋ง ์ž‘์—…์„ '๋‹จ์œ„ ์ž‘์—…(unit of work)'์ธ Fiber ๋…ธ๋“œ๋กœ ์ชผ๊ฐœ์–ด ์ž‘์—… ๋ฃจํ”„(work loop)์—์„œ ์ ์ง„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [4, 5]. ๊ฐ ๋‹จ์œ„ ์ž‘์—…์„ ๋งˆ์นœ ํ›„์—๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์ œ์–ด๊ถŒ์„ ์–‘๋ณดํ• ์ง€ ๊ณ„์† ์ง„ํ–‰ํ• ์ง€ ํ™•์ธํ•˜๋ฉฐ, `beginWork`์™€ `completeWork` ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๊ณ  ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [5, 6]. * **์žฌ์กฐ์ • ๋‹จ๊ณ„ (Reconciliation Phases)** Fiber์˜ ์žฌ์กฐ์ • ๊ณผ์ •์€ ์ค‘๋‹จ ๊ฐ€๋Šฅ์„ฑ๊ณผ ์šฐ์„ ์ˆœ์œ„ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ๋ช…ํ™•ํ•œ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค [7]. * **๋ Œ๋” ๋‹จ๊ณ„ (Render Phase):** ์ด ๋‹จ๊ณ„๋Š” ์ค‘๋‹จํ•˜๊ฑฐ๋‚˜ ํ๊ธฐํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 8]. DOM์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ˆœ์ˆ˜ํ•œ ๊ณ„์‚ฐ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ด์ „ ์ƒํƒœ์™€ ์ƒˆ๋กœ์šด ์ƒํƒœ์˜ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•ด ์—…๋ฐ์ดํŠธ๋‚˜ ์‚ฝ์ž…, ์‚ญ์ œ ๋“ฑ์˜ ์ดํŽ™ํŠธ ํƒœ๊ทธ(effect tags)๋ฅผ Fiber ๋…ธ๋“œ์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค [7-9]. * **์ปค๋ฐ‹ ๋‹จ๊ณ„ (Commit Phase):** ๋™๊ธฐ์ ์ด๋ฉฐ ์ค‘๋‹จํ•  ์ˆ˜ ์—†๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค [8, 10]. ๋ Œ๋” ๋‹จ๊ณ„์—์„œ ๊ตฌ์„ฑ๋œ ์ดํŽ™ํŠธ ๋ชฉ๋ก์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ชจ๋“  DOM์˜ ๋ณ€์ด(mutation)๋ฅผ ํ•œ ๋ฒˆ์— ์ ์šฉํ•˜๋ฉฐ, ๋ ˆ์ด์•„์›ƒ ์ดํŽ™ํŠธ์™€ ํŒจ์‹œ๋ธŒ ์ดํŽ™ํŠธ(useEffect ๋“ฑ)๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค [8, 10]. * **์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์Šค์ผ€์ค„๋ง ๋ฐ ๋ ˆ์ธ(Lane) ๋ชจ๋ธ** React Scheduler๋Š” "Lanes"๋ผ๋Š” ์šฐ์„ ์ˆœ์œ„ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ž‘์—…์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค [3, 9]. * ์‚ฌ์šฉ์ž ํด๋ฆญ์ด๋‚˜ ํƒ€์ดํ•‘๊ณผ ๊ฐ™์€ ๊ธด๊ธ‰ํ•œ ์ƒํ˜ธ์ž‘์šฉ์€ **Sync Lane**(์ฆ‰์‹œ ์ฒ˜๋ฆฌ)์— ํ• ๋‹น๋˜๊ณ , ๋ฐ์ดํ„ฐ ํŽ˜์นญ์€ **Default Lane**, ํ™”๋ฉด ๋ฐ– ๋ Œ๋”๋ง์€ **Idle Lane**์œผ๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค [11, 12]. * ๋ ˆ์ธ ๋ชจ๋ธ์€ 32๋น„ํŠธ ์ •์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ๋น„ํŠธ๋งˆ์Šคํฌ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„์˜ ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™•์ธํ•˜๊ณ , ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์ž‘์—…์˜ ๊ธฐ์•„ ํ˜„์ƒ(starvation)์„ ๋ฐฉ์ง€ํ•˜๋ฉฐ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค [13, 14]. ์ด ๋ชจ๋ธ ๋•๋ถ„์— `[[useTransition|useTransition]]`์ด๋‚˜ `[[useDeferredValue|useDeferredValue]]`์™€ ๊ฐ™์€ ๋™์‹œ์„ฑ ๊ธฐ๋Šฅ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค [15]. * **์ดํŽ™ํŠธ ๋ชฉ๋ก (Effect List) ๋ฐ ์ž‘์—… ์ค‘์ธ ํŒŒ์ด๋ฒ„ (WIP) ๊ด€๋ฆฌ** ๋ Œ๋” ๋‹จ๊ณ„์—์„œ React๋Š” ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ๊ฐ€์ง„ Fiber๋“ค์˜ ์„ ํ˜• ๋ชฉ๋ก์ธ ์ดํŽ™ํŠธ ๋ชฉ๋ก(Effect List)์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค [16]. ์ปค๋ฐ‹ ๋‹จ๊ณ„์—์„œ๋Š” ์ „์ฒด ํŠธ๋ฆฌ๋ฅผ ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜๋Š” ๋Œ€์‹  ์ด ์ดํŽ™ํŠธ ๋ชฉ๋ก๋งŒ ์ˆœํšŒํ•˜๋ฏ€๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ›จ์”ฌ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค [16]. ๋˜ํ•œ, ๋Ÿฐํƒ€์ž„ ์กฐ๊ฑด ๋ฐ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ž‘์—… ์ค‘์ธ(Work-In-Progress, WIP) Fiber๋ฅผ ์ผ์‹œ ์ค‘์ง€, ์žฌ๊ฐœ, ํ๊ธฐ ๋˜๋Š” ์žฌ์ƒ์„ฑํ•˜๋ฉฐ UI์˜ ๋ถ€๋“œ๋Ÿฌ์šด ๋ฐ˜์‘์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค [17]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Concurrent Rendering|Concurrent Rendering]], Reconciliation, Virtual DOM, [[Time-Slicing|Time-Slicing]], [[Lane Model|Lane Model]] - **Projects/Contexts:** React 16, React Scheduler - **Contradictions/Notes:** ์†Œ์Šค ๋ฌธ์„œ๋“ค์€ ๊ณตํ†ต์ ์œผ๋กœ React Fiber๊ฐ€ ๊ธฐ์กด ๋™๊ธฐ์‹ ๋ Œ๋”๋ง์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๋น„๋™๊ธฐ์ ์ด๋ฉฐ ์ค‘๋‹จ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜์ž„์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, [[React 19|React 19]]์˜ `useTransition` ๋ฐ `useDeferredValue`์™€ ๊ฐ™์€ ์ตœ์‹  ๋™์‹œ์„ฑ ๊ธฐ๋Šฅ์ด ๋ชจ๋‘ Fiber์˜ Lane ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ ์œ„์—์„œ ๊ตฌํ˜„๋˜์—ˆ์Œ์„ ๋’ท๋ฐ›์นจํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [15, 18, 19]. --- *Last updated: 2026-04-25*