# [[Fiber Architecture|Fiber Architecture]] ## ๐Ÿ“Œ Brief Summary React 16์—์„œ ๋„์ž…๋œ Fiber [[Architecture|Architecture]]๋Š” ๋™์‹œ์„ฑ ๋ Œ๋”๋ง(Concurrent Rendering)์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๊ทผ๋ณธ์ ์œผ๋กœ ์žฌ์ž‘์„ฑ๋œ React์˜ ์žฌ์กฐ์ •(Reconciliation) ์—”์ง„์ž…๋‹ˆ๋‹ค [1-3]. ๊ธฐ์กด์˜ ๋™๊ธฐ์‹ ๋ Œ๋”๋ง์ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜์—ฌ UI๊ฐ€ ๋ฉˆ์ถ”๋˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž, ๋ Œ๋”๋ง ์ž‘์—…์„ 'ํŒŒ์ด๋ฒ„(Fiber)'๋ผ๋Š” ์ž‘์€ ๋‹จ์œ„์˜ ๋…ธ๋“œ๋กœ ์ชผ๊ฐœ์–ด ์ ์ง„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [4, 5]. ์ด๋ฅผ ํ†ตํ•ด React๋Š” ๋ Œ๋”๋ง์„ ์ผ์‹œ ์ค‘์ง€ํ•˜๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €์— ์ œ์–ด๊ถŒ์„ ์–‘๋ณดํ•˜๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ž‘์—…์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•œ ํ›„ ๋‹ค์‹œ ๋ Œ๋”๋ง์„ ์žฌ๊ฐœํ•˜๋Š” ํƒ€์ž„ ์Šฌ๋ผ์ด์‹ฑ([[Time-Slicing|Time-Slicing]]) ์Šค์ผ€์ค„๋ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [4-6]. ## ๐Ÿ“– Core Content * **๋™๊ธฐ์‹ ์ฐจ๋‹จ(Synchronous [[Blocking|Blocking]])์˜ ํ•œ๊ณ„ ๊ทน๋ณต:** Fiber ๋„์ž… ์ด์ „์˜ React๋Š” '์Šคํƒ ์žฌ์กฐ์ •์ž(Stack Reconciler)'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ ๋‹จ์ผ ์žฌ๊ท€ ํ˜ธ์ถœ๋กœ ๋™๊ธฐ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค [4]. ์ด ๋ฐฉ์‹์€ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ธŒ๋ผ์šฐ์ €์˜ ํ”„๋ ˆ์ž„ ์˜ˆ์‚ฐ(16.6ms)์„ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด๋‚˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ง€์—ฐ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค [4]. Fiber๋Š” ์ž‘์—…์„ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ์ž‘์—…์„ ๊ฐ€๋กœ์ฑ„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ์œผ๋กœ์จ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค [4, 5, 7]. * **์ž‘์—… ๋ฃจํ”„(Work Loop)์™€ ๋‘ ๊ฐ€์ง€ ๋ Œ๋”๋ง ๋‹จ๊ณ„:** Fiber์˜ ์žฌ์กฐ์ • ๊ณผ์ •์€ ์ž‘์—… ์ค‘๋‹จ๊ณผ ์šฐ์„ ์ˆœ์œ„ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ๋ช…ํ™•ํ•œ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค [8]. * **๋ Œ๋”๋ง ๋‹จ๊ณ„ (Render Phase):** ์ด ๋‹จ๊ณ„๋Š” ๋น„๋™๊ธฐ์ ์ด๋ฉฐ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8]. ์‹ค์ œ DOM์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ํŒŒ์ด๋ฒ„ ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ด์ „ ์ƒํƒœ์™€ ์ƒˆ๋กœ์šด ์ƒํƒœ์˜ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ํŒŒ์ด๋ฒ„๋“ค์˜ ๋ชฉ๋ก(Effect list)์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [8, 9]. ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์ž‘์—…์ด ๋“ค์–ด์˜ค๋ฉด ์ผ์‹œ ์ค‘๋‹จ, ํ๊ธฐ ๋˜๋Š” ์žฌ์‹œ์ž‘๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด ๋‹จ๊ณ„์—์„œ๋Š” ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค [8-10]. * **์ปค๋ฐ‹ ๋‹จ๊ณ„ (Commit Phase):** ์ด ๋‹จ๊ณ„๋Š” ๋™๊ธฐ์ ์ด๋ฉฐ ์ค‘๋‹จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค [11]. ๋ Œ๋”๋ง ๋‹จ๊ณ„์—์„œ ๋งŒ๋“ค์–ด์ง„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ(์‚ฝ์ž…, ์‚ญ์ œ, ์—…๋ฐ์ดํŠธ)์„ ํ•œ ๋ฒˆ์— ์‹ค์ œ DOM์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [9, 11, 12]. ์ด ์‹œ์ ์— ์‹ค์ œ DOM์ด ๋ณ€ํ˜•๋˜๋ฉฐ ๊ฐ์ข… ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋‚˜ ๋ ˆ์ด์•„์›ƒ ์ดํŽ™ํŠธ(`useLayoutEffect`)๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค [11, 12]. * **๋ ˆ์ธ(Lane) ๋ชจ๋ธ์„ ํ†ตํ•œ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง:** Fiber๋Š” 32๋น„ํŠธ ์ •์ˆ˜ ๋น„ํŠธ๋งˆ์Šคํฌ ์‹œ์Šคํ…œ์ธ '๋ ˆ์ธ(Lane)'์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค [13, 14]. ํด๋ฆญ์ด๋‚˜ ํƒ€์ดํ•‘ ๋“ฑ ์ฆ‰๊ฐ์  ๋ฐ˜์‘์ด ํ•„์š”ํ•œ ์ž‘์—…(Sync Lane), ์Šคํฌ๋กค๋ง(InputContinuous Lane), ์ผ๋ฐ˜์ ์ธ ์ƒํƒœ ์—…๋ฐ์ดํŠธ(Default Lane), ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…(Idle Lane)์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค [6, 15]. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ๊ณผ ๊ฐ™์€ '๊ธด๊ธ‰ํ•œ' ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ Œ๋”๋ง ๊ฐ™์€ '๋น„๊ธด๊ธ‰' UI ์ „ํ™˜๋ณด๋‹ค ๋จผ์ € ์ฒ˜๋ฆฌ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค [6, 16]. * **์ž‘์—… ์ง„ํ–‰ ์ƒํƒœ(WIP) ํŠธ๋ฆฌ ๊ด€๋ฆฌ:** React๋Š” ํ˜„์žฌ ํ™”๋ฉด์— ๊ทธ๋ ค์ง„ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž‘์—… ์ค‘์ธ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” WIP(Work-in-progress) ํŠธ๋ฆฌ๋ฅผ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค [10]. ์Šค์ผ€์ค„๋Ÿฌ์˜ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฐ”์˜๋ฉด ์ด WIP ํŠธ๋ฆฌ์˜ ์ž‘์—…์„ ์ผ์‹œ ์ค‘์ง€ํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์œ ํœด ์ƒํƒœ์ผ ๋•Œ ๋‹ค์‹œ ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [10]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Virtual DOM|Virtual DOM]], Reconciliation, Concurrent Rendering, [[Critical Rendering Path|Critical Rendering Path]] - **Projects/Contexts:** [[React 16+ Core Engine|React 16+ Core Engine]], [[แ„‡แ…ณแ„…แ…กแ„‹แ…ฎแ„Œแ…ฅ แ„†แ…ฆแ„‹แ…ตแ†ซ แ„‰แ…ณแ„…แ…ฆแ„ƒแ…ณ แ„Žแ…ฌแ„Œแ…ฅแ†จแ„’แ…ช แ„†แ…ตแ†พ แ„แ…กแ„‹แ…ตแ†ท แ„‰แ…ณแ†ฏแ„…แ…กแ„‹แ…ตแ„‰แ…ตแ†ผ|๋ธŒ๋ผ์šฐ์ € ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ตœ์ ํ™” ๋ฐ ํƒ€์ž„ ์Šฌ๋ผ์ด์‹ฑ]] - **Contradictions/Notes:** Fiber์˜ ๋™์‹œ์„ฑ ๋ Œ๋”๋ง ๊ธฐ๋Šฅ(์˜ˆ: `[[useTransition|useTransition]]`, `[[useDeferredValue|useDeferredValue]]`)์€ ์ฝ”๋“œ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์‹คํ–‰ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค [17]. ๋ฌด๊ฑฐ์šด ์—ฐ์‚ฐ์œผ๋กœ ์ธํ•œ ๋ณ‘๋ชฉ์ด ์ฆ‰๊ฐ์ ์ธ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ๋’ค๋กœ ๋ฏธ๋ฃธ(Deferring)์œผ๋กœ์จ, ์ฒด๊ฐ ์„ฑ๋Šฅ(Perceived Performance) ์ธก๋ฉด์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ›จ์”ฌ "๋” ๋น ๋ฅด๊ฒŒ ๋А๊ปด์ง€๋„๋ก" ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค [17]. --- *Last updated: 2026-04-25*