# [[React Fiber ์•„ํ‚คํ…์ฒ˜]] ## ๐Ÿ“Œ[[ brief]] Summary [[React Fiber]]๋Š” React 16์—์„œ ๋„์ž…๋œ ์กฐ์ •([[Reconciliation]]) ์—”์ง„์˜ ์™„์ „ํ•œ ์žฌ์ž‘์„ฑ ๋ฒ„์ „์œผ๋กœ, ๋™์‹œ์„ฑ ๋ Œ๋”๋ง([[Concurrent Rendering]])์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค [1, 2]. ๊ธฐ์กด์˜ ๋™๊ธฐ์‹ '์Šคํƒ ์กฐ์ •์ž(stack reconciler)'๊ฐ€ ๋ Œ๋”๋ง ์ค‘ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜๋˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ๋ Œ๋”๋ง ์ž‘์—…์„ 'Fiber ๋…ธ๋“œ'๋ผ๋Š” ์ž‘์€ ์ž‘์—… ๋‹จ์œ„(units of work)๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋‹ค์ˆ˜์˜ ํ”„๋ ˆ์ž„์— ๊ฑธ์ณ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [2, 3]. ์ด๋ฅผ ํ†ตํ•ด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ๋ Œ๋”๋ง ์ž‘์—…์„ ์ผ์‹œ ์ค‘์ง€, ์ค‘๋‹จ, ๋˜๋Š” ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ๋ฐ€ํ•œ ์ œ์–ด์™€ ํƒ€์ž„ ์Šฌ๋ผ์ด์‹ฑ([[Time-Slicing]]) ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ UI์˜ ์‘๋‹ต์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค [3-5]. ## ๐Ÿ“– Core Content **Fiber ๋…ธ๋“œ์™€ ์ž‘์—… ๋ฃจํ”„ (Work Loop)** React์˜ ๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” Fiber ๋…ธ๋“œ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ ํƒ€์ž…, ์ƒํƒœ([[State]]), ์†์„ฑ(props)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ถ€๋ชจ(return), ์ž์‹(child), ํ˜•์ œ(sibling) ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํฌ์ธํ„ฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค [6-8]. Fiber ์•„ํ‚คํ…์ฒ˜์˜ ์ค‘์‹ฌ์—๋Š” ์ž‘์—… ๋ฃจํ”„๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ†ตํ•ด ์šฐ์„ ์ˆœ์œ„์™€ ๊ฐ€์šฉ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋‹ค์Œ ์ž‘์—… ๋‹จ์œ„๋ฅผ ์„ ํƒํ•˜์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [2, 9]. ์ž‘์—…์„ ์ˆ˜ํ–‰(`beginWork`, `completeWork`)ํ•œ ํ›„์—๋Š” ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ์ž‘์—…(์˜ˆ: ์‚ฌ์šฉ์ž ์ž…๋ ฅ)์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €์— ์ œ์–ด๊ถŒ์„ ๋„˜๊ฒจ์•ผ ํ•˜๋Š”์ง€(yield)๋ฅผ ์ง€์†์ ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค [6, 9, 10]. **๋‘ ๋‹จ๊ณ„์˜ ๋ Œ๋”๋ง ํ”„๋กœ์„ธ์Šค (Reconciliation Phases)** Fiber์˜ ์กฐ์ • ๊ณผ์ •์€ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋งค๊ธฐ๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ๊ตฌ๋ณ„๋œ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค [4]. * **๋ Œ๋” ๋‹จ๊ณ„ (Render Phase):** ์ด ๋‹จ๊ณ„๋Š” ์ค‘๋‹จ ๊ฐ€๋Šฅ(interruptible)ํ•˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €์˜ DOM์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ Fiber ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•˜์—ฌ ์ˆœ์ˆ˜ ๊ณ„์‚ฐ๋งŒ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค [4, 11]. ์ด์ „ ์ƒํƒœ์™€ ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๋น„๊ตํ•˜์—ฌ DOM ์‚ฝ์ž…, ์‚ญ์ œ, ์—…๋ฐ์ดํŠธ ๋“ฑ์˜ ๋ถ€์ž‘์šฉ(side effects)์ด ํ•„์š”ํ•œ ๋…ธ๋“œ๋“ค์„ ํŒŒ์•…ํ•˜๊ณ , ์ด๋ฅผ ๋ชจ์•„ ์ตœ์ ํ™”๋œ '์ดํŽ™ํŠธ ๋ฆฌ์ŠคํŠธ(Effect list)'๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค [4, 12, 13]. ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์ž‘์—…์ด ๋“ค์–ด์˜ค๋ฉด ๊ธฐ์กด ์ž‘์—…์„ ์ผ์‹œ ์ค‘์ง€ํ•˜๊ณ , ์ง„ํ–‰ ์ค‘์ด๋˜ ์ž‘์—…(WIP, Work-In-Progress)์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ํ๊ธฐ ๋ฐ ์žฌ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [11, 14]. * **์ปค๋ฐ‹ ๋‹จ๊ณ„ (Commit Phase):** ์ด ๋‹จ๊ณ„๋Š” ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ ์ค‘๋‹จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(uninterruptible) [11, 15]. ๋ Œ๋” ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑ๋œ ์ดํŽ™ํŠธ ๋ฆฌ์ŠคํŠธ๋งŒ์„ ์ˆœํšŒํ•˜๋ฉฐ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹ค์ œ DOM์— ํ•œ ๋ฒˆ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [12, 15]. ์ด ๊ณผ์ •์—์„œ `useLayoutEffect`์™€ ๊ฐ™์€ ๋™๊ธฐ์  ๋ ˆ์ด์•„์›ƒ ํšจ๊ณผ์™€ ๋น„๋™๊ธฐ์ ์ธ `useEffect`๊ฐ€ ํ•จ๊ป˜ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค [11, 15, 16]. **์šฐ์„ ์ˆœ์œ„์™€ ๋ ˆ์ธ ๋ชจ๋ธ (Priority Levels and [[Lane Model]])** Fiber๋Š” ์—ฌ๋Ÿฌ ๋™์‹œ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด 32๋น„ํŠธ ์ •์ˆ˜ ๋น„ํŠธ๋งˆ์Šคํฌ๋ฅผ ํ™œ์šฉํ•œ '๋ ˆ์ธ(Lane)'์ด๋ผ๋Š” ์ •๊ตํ•œ ์šฐ์„ ์ˆœ์œ„ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [13, 17]. ํƒ€์ดํ•‘์ด๋‚˜ ํด๋ฆญ๊ณผ ๊ฐ™์€ ์ด์‚ฐ์ ์ธ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์€ ์ฆ‰์‹œ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„(Sync Lane)๋ฅผ ๋ถ€์—ฌ๋ฐ›๊ณ , ์Šคํฌ๋กค์ด๋‚˜ ํ˜ธ๋ฒ„ ๋“ฑ์˜ ์—ฐ์†์  ์ž…๋ ฅ์€ ๊ทธ ๋‹ค์Œ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค [18, 19]. ๋ฐ˜๋ฉด ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š๋Š” ์˜คํ”„์Šคํฌ๋ฆฐ ๋ Œ๋”๋ง์ด๋‚˜ ๋ฐ์ดํ„ฐ ๋กœ๊น… ์ž‘์—…์€ ์œ ํœด(Idle) ์ƒํƒœ์— ์ฒ˜๋ฆฌ๋˜๋„๋ก ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค [18, 19]. ์ด ๋ชจ๋ธ์„ ํ†ตํ•ด React๋Š” ์—ฌ๋Ÿฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์„ž์ธ ์—…๋ฐ์ดํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์ง€์—ฐ๋œ ์ž‘์—…์ด ์˜์›ํžˆ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ธฐ์•„ ์ƒํƒœ(starvation)๋ฅผ ๋ฐฉ์ง€ํ•˜๋ฉฐ ํ•ญ์ƒ ์พŒ์ ํ•œ ๋ฐ˜์‘์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [17, 20]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Concurrent Rendering]], [[Reconciliation]], [[Virtual DOM]] - **Projects/Contexts:** React 16, [[Time-Slicing]] - **Contradictions/Notes:** ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. --- *Last updated: 2026-04-25*