--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[React Performance Optimization|React Performance Optimization]] last_updated: 2026-05-02 --- # [[React Performance Optimization|React Performance Optimization]] ## ๐Ÿ“Œ Brief Summary React ์„ฑ๋Šฅ ์ตœ์ ํ™”๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ ๊ณ„์‚ฐ๊ณผ ํŽ˜์ธํŒ… ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ํšจ๊ณผ์ ์ธ ๋ Œ๋”๋ง ์ „๋žต์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ˜์‘์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค [1, 2]. ์ด๋ฅผ ์œ„ํ•ด React๋Š” ๊ฐ€์ƒ DOM([[Virtual DOM|Virtual DOM]])๊ณผ ํœด๋ฆฌ์Šคํ‹ฑ Diffing ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๊ทธ๋ฆฌ๊ณ  Fiber ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„์ž…ํ•˜์—ฌ UI ์—…๋ฐ์ดํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค [3-5]. ๊ถ๊ทน์ ์œผ๋กœ ๊ฐœ๋ฐœ์ž๋Š” CSR, SSR, SSG์™€ ๊ฐ™์€ ๋ Œ๋”๋ง ๋ฐฉ์‹์„ ์„œ๋น„์Šค์˜ ํŠน์„ฑ์— ๋งž๊ฒŒ ์„ ํƒํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„์™€ ์ตœ์ ํ™” ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํš๊ธฐ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 7]. --- React ์„ฑ๋Šฅ ์ตœ์ ํ™”๋Š” ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ๊ณผ ์žฌ๋ Œ๋”๋ง์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์˜ ์ค‘์š” ๋ Œ๋”๋ง ๊ฒฝ๋กœ([[Critical Rendering Path|Critical Rendering Path]])๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์†๋„ ๋ฐ ์‘๋‹ต์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค [1, 2]. ์ด๋Š” ๋ Œ๋”๋ง ๊ณ„๋‹จ์‹(Re-render Cascade) ๋ฌธ์ œ ํ•ด๊ฒฐ, ์ดˆ๊ธฐ ๋ฒˆ๋“ค ํฌ๊ธฐ ๊ฐ์†Œ, ๋ฆฌํ”Œ๋กœ์šฐ(Reflow) ๋ฐ ๋ฆฌํŽ˜์ธํŠธ(Repaint) ์ œ์–ด๋ฅผ ์ฃผ์š” ๋ชฉํ‘œ๋กœ ์‚ผ๋Š”๋‹ค [3-6]. ์ตœ๊ทผ์—๋Š” React 18์˜ ์ž๋™ ๋ฐฐ์นญ(Automatic Batching)๊ณผ [[React 19|React 19]] ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ž๋™ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋„์ž…์œผ๋กœ ์ธํ•ด, ๊ฐœ๋ฐœ์ž์˜ ์ˆ˜๋™ ์ตœ์ ํ™” ๋ถ€๋‹ด์ด ํฌ๊ฒŒ ์ค„์–ด๋“ค๊ณ  ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋นŒ๋“œ ํƒ€์ž„ ๋ ˆ๋ฒจ์—์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ์ด๋ฃจ์–ด์ง€๋Š” ์ถ”์„ธ์ด๋‹ค [7-9]. --- > ๊ฐ€์žฅ ๋น ๋ฅธ ๋ Œ๋”๋ง์€ 'ํ•˜์ง€ ์•Š๋Š” ๋ Œ๋”๋ง'์ด๋‹ค. ํ•„์š” ์—†๋Š” ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ํ๋ฅผ ๋•Œ๋งŒ ํ™”๋ฉด์ด ์ถœ๋ ์ด๊ฒŒ ํ•˜๋ผ. ## ๐Ÿ“– Core Content * **๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ • ๋ฐ Reflow/Repaint ์ตœ์†Œํ™”:** ๋ธŒ๋ผ์šฐ์ €๋Š” HTML๊ณผ CSS๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ DOM๊ณผ [[CSSOM|CSSOM]]์„ ๊ฐ๊ฐ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œ๋  ์š”์†Œ๋งŒ ๋‹ด์€ [[Render Tree|Render Tree]]๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค [8-11]. ์ดํ›„ ๊ฐ ์š”์†Œ์˜ ์ •ํ™•ํ•œ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” Layout(Reflow) ๋‹จ๊ณ„์™€ ํ™”๋ฉด์— ํ”ฝ์…€๋กœ ๋ณ€ํ™˜ํ•ด ๊ทธ๋ฆฌ๋Š” Paint(Repaint) ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค [12-15]. ์ง์ ‘์ ์ธ DOM ์กฐ์ž‘์€ ์—ฐ์‚ฐ ๋น„์šฉ์ด ๋†’์€ Reflow์™€ Repaint๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์œ ๋ฐœํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ต๋‹ˆ๋‹ค [1, 16, 17]. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด CSS transform ์†์„ฑ์„ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜ ๋ถˆํ•„์š”ํ•œ DOM ๊นŠ์ด๋ฅผ ์ค„์ด๊ณ , ๋ฆฌ์ŠคํŠธ ๋ Œ๋”๋ง ์‹œ ๊ฐ€์ƒํ™” ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜๋Š” ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [13, 18-20]. * **[[DOM vs Virtual DOM|DOM vs Virtual DOM]]๊ณผ React์˜ ์†๋„ ํ–ฅ์ƒ ๋ฉ”์ปค๋‹ˆ์ฆ˜:** React๋Š” ์‹ค์ œ DOM์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๋Œ€์‹ , ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ๊ฐ€๋ฒผ์šด ๊ฐ์ฒด ํ˜•ํƒœ์ธ Virtual DOM์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค [1, 5, 21, 22]. ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ƒˆ๋กœ์šด Virtual DOM์„ ๋งŒ๋“ค๊ณ , ํœด๋ฆฌ์Šคํ‹ฑ ๊ธฐ๋ฐ˜์˜ O(n) Diffing ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์ด์ „ ํŠธ๋ฆฌ์™€ ๋น„๊ต([[Reconciliation|Reconciliation]])ํ•ฉ๋‹ˆ๋‹ค [3, 5, 23]. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์š”์†Œ์˜ ํƒ€์ž…๊ณผ Key ์†์„ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ณ€๊ฒฝ๋œ ์ตœ์†Œํ•œ์˜ ๋…ธ๋“œ๋งŒ ์‹๋ณ„ํ•œ ๋’ค ์‹ค์ œ DOM์— ์ผ๊ด„ ์ ์šฉํ•˜๋ฏ€๋กœ, ๋ถˆํ•„์š”ํ•œ Reflow๋ฅผ ๋ง‰๊ณ  ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ๋†’์ž…๋‹ˆ๋‹ค [3, 24, 25]. * **React ์—”์ง„ ์ตœ์ ํ™” (Fiber ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์ตœ๊ทผ ๊ธฐ๋Šฅ):** React 16๋ถ€ํ„ฐ ๋„์ž…๋œ Fiber ์•„ํ‚คํ…์ฒ˜๋Š” ๋ Œ๋”๋ง ์ž‘์—…์„ ์ค‘๋‹จ ๋ฐ ์žฌ๊ฐœ ๊ฐ€๋Šฅํ•œ ์ž‘์€ '์ž‘์—… ๋‹จ์œ„'๋กœ ๋‚˜๋ˆ„๊ณ , ์šฐ์„ ์ˆœ์œ„(Lane ๋ชจ๋ธ)์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์‹œ์„ฑ ๋ Œ๋”๋ง([[Concurrent Rendering|Concurrent Rendering]])์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [4, 26-30]. ๋˜ํ•œ React 18์— ๋„์ž…๋œ ์ž๋™ ์ผ๊ด„ ์ฒ˜๋ฆฌ(Automatic Batching)๋Š” Promise, setTimeout ๋“ฑ์˜ ๋น„๋™๊ธฐ ์ž‘์—… ๋‚ด ์—ฌ๋Ÿฌ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ ๋‹จ์ผ ๋ฆฌ๋ Œ๋”๋ง์œผ๋กœ ๋ฌถ์–ด ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค [31-34]. ์ตœ๊ทผ ๋„์ž…๋œ [[React Compiler|React Compiler]]๋Š” ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ˆ˜๋™ ์ฒ˜๋ฆฌ ์—†์ด ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ์‚ฝ์ž…ํ•ด ๊ฐœ๋ฐœ์ž์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ถ€๋‹ด์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค [35-38]. * **[[CSR vs SSR vs SSG|CSR vs SSR vs SSG]] ์ „๋žต์  ๋ Œ๋”๋ง:** * **CSR (Client-Side Rendering):** ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋นˆ HTML๊ณผ [[JavaScript|JavaScript]]๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด UI๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉฐ, ์ดˆ๊ธฐ ๋กœ๋”ฉ๊ณผ SEO์—๋Š” ๋ถˆ๋ฆฌํ•˜์ง€๋งŒ ์ดํ›„ ๋น ๋ฅด๊ณ  ๋งค๋„๋Ÿฌ์šด ์ƒํ˜ธ์ž‘์šฉ์„ ์ œ๊ณตํ•˜์—ฌ ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค [39-42]. * **SSR (Server-Side Rendering):** ์„œ๋ฒ„์—์„œ ์™„์ „ํ•œ HTML์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌํ•˜๋ฏ€๋กœ ์ดˆ๊ธฐ ์ฝ˜ํ…์ธ  ๋ Œ๋”๋ง(FCP)์ด ๋น ๋ฅด๊ณ  SEO์— ๋งค์šฐ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค [43-46]. * **SSG (Static Site Generation):** ๋นŒ๋“œ ์‹œ์ ์— ๋ชจ๋“  HTML์„ ๋ฏธ๋ฆฌ ๋ Œ๋”๋งํ•˜์—ฌ CDN์„ ํ†ตํ•ด ์ฆ‰์‹œ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๊ฐ€์žฅ ๋น ๋ฅด์ง€๋งŒ, ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ฐ˜์˜์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค [47-50]. * **[[React Server Components (RSC)|React Server Components (RSC]]:** ์˜ค์ง ์„œ๋ฒ„์—์„œ๋งŒ ์‹คํ–‰๋˜์–ด ํด๋ผ์ด์–ธํŠธ์— JavaScript ๋ฒˆ๋“ค์„ ์ „ํ˜€ ์ „์†กํ•˜์ง€ ์•Š๋Š” ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๋กœ, ํด๋ผ์ด์–ธํŠธ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ๋Œ€ํญ ์ค„์ด๊ณ  ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [51-54]. * **์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜ (CBA):** React์˜ ํ•ต์‹ฌ ์„ค๊ณ„ ์›์น™์œผ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋…๋ฆฝ์ ์ด๊ณ  ์บก์Аํ™”๋œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค [55-58]. ์ด๋Š” ์‹œ์Šคํ…œ์˜ ๋ณต์žก์„ฑ์„ ๋‚ฎ์ถ”๊ณ , ๋ณ‘๋ ฌ ๊ฐœ๋ฐœ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ, ํŠน์ • ์ปดํฌ๋„ŒํŠธ์˜ ๋ Œ๋”๋ง ์ฃผ๊ธฐ๋งŒ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌ ๋ฐ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [59-64]. --- * **๋ถˆํ•„์š”ํ•œ ์žฌ๋ Œ๋”๋ง ๋ฐฉ์ง€ ๋ฐ ๊ฐ€์ƒ DOM ์ตœ์ ํ™”** ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๋ชจ๋“  ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žฌ๋ Œ๋”๋ง๋˜๋Š” '๋ Œ๋”๋ง ๊ณ„๋‹จ์‹' ๋ฌธ์ œ๋Š” ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์ฃผ๋œ ์›์ธ์ด๋‹ค [3, 10]. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์—๋Š” `React.memo`, `useMemo`, `useCallback`๊ณผ ๊ฐ™์€ ์ˆ˜๋™ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฐธ์กฐ([[Reference|Reference]])์˜ ๋™๋“ฑ์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ๋น„๊ต(Diffing) ์—ฐ์‚ฐ์„ ์ฐจ๋‹จํ–ˆ๋‹ค [11-13]. ๋˜ํ•œ, React 18์— ๋„์ž…๋œ ์ž๋™ ๋ฐฐ์นญ(Automatic [[Batching|Batching]])์€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Promise๋‚˜ `setTimeout` ๊ฐ™์€ ๋น„๋™๊ธฐ ์ž‘์—… ๋‚ด์˜ ์—ฌ๋Ÿฌ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ ๋‹จ์ผ ๋ Œ๋”๋ง์œผ๋กœ ๋ฌถ์–ด์ฃผ์–ด ๊ฐ€์ƒ DOM ์ž‘์—…๊ณผ ๋ Œ๋”๋ง ํšŸ์ˆ˜๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ์ค„์—ฌ์ค€๋‹ค [7, 14, 15]. * **๋นŒ๋“œ ํƒ€์ž„ ์ตœ์ ํ™”: React ์ปดํŒŒ์ผ๋Ÿฌ([[React Compiler|React Compiler]])** React 19 ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„(AST)ํ•˜์—ฌ ์ •์  ๊ฐ’๊ณผ ๋ฐ˜์‘ํ˜• ๊ฐ’์„ ์ž๋™์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ , ์ตœ์ ์˜ ์œ„์น˜์— ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๊ฒฝ๊ณ„๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋นŒ๋“œ ํƒ€์ž„ ๋„๊ตฌ์ด๋‹ค [8, 9, 16, 17]. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์˜์กด์„ฑ ๋ฐฐ์—ด์„ ๊ด€๋ฆฌํ•˜๋ฉฐ ๊ฒช๋Š” ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ์ด์ œ์ด์…˜(Over-memoization)์ด๋‚˜ ๋ˆ„๋ฝ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ํŠน์ • ๋ถ€๋ถ„๋งŒ ๋ Œ๋”๋งํ•˜๋Š” ์„ธ๋ฐ€ํ•œ ๋ฐ˜์‘์„ฑ(Fine-Grained Reactivity)์„ ๋‹ฌ์„ฑํ•˜์—ฌ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ž‘์—…์˜ 90%๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค [18-20]. * **๋™์‹œ์„ฑ ๋ Œ๋”๋ง๊ณผ ํŒŒ์ด๋ฒ„(Fiber) ์•„ํ‚คํ…์ฒ˜** React 16๋ถ€ํ„ฐ ๋„์ž…๋œ ํŒŒ์ด๋ฒ„ ์•„ํ‚คํ…์ฒ˜๋Š” ๋™๊ธฐ์ ์œผ๋กœ ๋ธ”๋กœํ‚น๋˜๋˜ ๊ธฐ์กด ๋ Œ๋”๋ง ๋ฐฉ์‹์„ ๋ฒ—์–ด๋‚˜, ๋ Œ๋”๋ง ์ž‘์—…์„ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ณ ([[Time-Slicing|Time-Slicing]]) ์šฐ์„ ์ˆœ์œ„(Lane Model)๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์ค‘๋‹จ ๋ฐ ์žฌ๊ฐœ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค [21-24]. ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” `useTransition` ๋ฐ `[[useDeferredValue|useDeferredValue]]` ํ›…์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋ฌด๊ฑฐ์šด ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง์ด๋‚˜ ํ™”๋ฉด ์ „ํ™˜ ๊ฐ™์€ ๋น„๊ธด๊ธ‰ ์—…๋ฐ์ดํŠธ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ์ถค์œผ๋กœ์จ ํƒ€์ดํ•‘๊ณผ ๊ฐ™์€ ๊ธด๊ธ‰ํ•œ ์ƒํ˜ธ์ž‘์šฉ์ด ์ง€์—ฐ ์—†์ด ์ฒ˜๋ฆฌ๋˜๋„๋ก ํ•˜์—ฌ UI์˜ ์‘๋‹ต์„ฑ(INP ๊ฐœ์„ )์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค [25-28]. * **๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์ตœ์ ํ™”: Reflow์™€ Repaint ์ตœ์†Œํ™”** React๊ฐ€ ๊ฐ€์ƒ DOM์„ ์—…๋ฐ์ดํŠธํ•œ ํ›„, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ ๋ ˆ์ด์•„์›ƒ ๊ณ„์‚ฐ(Reflow)๊ณผ ์‹œ๊ฐ์  ์—…๋ฐ์ดํŠธ(Repaint)๋Š” ํฐ ๋น„์šฉ์„ ์ˆ˜๋ฐ˜ํ•œ๋‹ค [5, 6, 29]. ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋ ค๋ฉด React Fragment๋ฅผ ์‚ฌ์šฉํ•ด ๋ถˆํ•„์š”ํ•œ DOM ๋…ธ๋“œ ๋ž˜ํผ๋ฅผ ์ค„์ด๊ณ  DOM์˜ ๊นŠ์ด๋ฅผ ์–•๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค [30, 31]. 100๊ฐœ๊ฐ€ ๋„˜์–ด๊ฐ€๋Š” ๊ธด ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ํ™”๋ฉด์— ๋ณด์ด๋Š” ๋…ธ๋“œ๋งŒ ๋ Œ๋”๋งํ•˜๋Š” ๊ฐ€์ƒํ™”(Virtualization) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋‹ค์ค‘ ๋…ธ๋“œ ์ƒ์„ฑ ๋น„์šฉ์„ ๊ทน์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค [32, 33]. ๋”๋ถˆ์–ด ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„ ์‹œ ๋ ˆ์ด์•„์›ƒ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ์†์„ฑ ๋Œ€์‹  `transform` ์†์„ฑ ๋“ฑ์„ ํ™œ์šฉํ•ด GPU ๊ฐ€์†์„ ์ ์šฉํ•˜๋ฉด ๋ฆฌํ”Œ๋กœ์šฐ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค [34-36]. * **๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ์ œ์–ด ๋ฐ ๋ Œ๋”๋ง ์ „๋žต ๊ณ ๋„ํ™”** ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„(LCP)๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋ฉด ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•  [[JavaScript|JavaScript]] ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค. `React.lazy()`๋ฅผ ํ™œ์šฉํ•œ ๋ผ์šฐํŠธ ๋ ˆ๋ฒจ์˜ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…์„ ์ ์šฉํ•˜๋ฉด ์ดˆ๊ธฐ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ 30~50%๊ฐ€๋Ÿ‰ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค [37]. ํ•œ ๊ฑธ์Œ ๋” ๋‚˜์•„๊ฐ€ ์„œ๋ฒ„์—์„œ๋งŒ ์‹คํ–‰๋˜๋Š” React Server Components(RSC)๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฌด๊ฑฐ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ์ •์  ๋ฐ์ดํ„ฐ ํŽ˜์นญ ๋กœ์ง์ด ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „์†ก๋˜์ง€ ์•Š์•„ JavaScript ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ '0 ๋ฐ”์ดํŠธ'์— ๊ฐ€๊น๊ฒŒ ์ค„์ด๊ณ  ์ˆ˜ํ™”([[Hydration|Hydration]]) ๋น„์šฉ์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค [38-40]. --- - **Memoization (๋ฉ”๋ชจ์ด์ œ์ด์…˜)**: - **React.memo**: ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณ€ํ•ด๋„ ๋‚ด Props๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๊ทธ๋ฆฌ๊ธฐ๋ฅผ ๊ฑฐ๋ถ€ํ•œ๋‹ค. - **useMemo**: ๋น„์šฉ์ด ํฐ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ(์˜ˆ: ๋ณต์žกํ•œ ํ•„ํ„ฐ๋ง)๋ฅผ ์ €์žฅํ•ด๋‘๊ณ  ์žฌ์‚ฌ์šฉํ•œ๋‹ค. - **useCallback**: ํ•จ์ˆ˜ ๊ฐ์ฒด์˜ ๋ณ€๋™์„ ๋ง‰์•„ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์˜ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•œ๋‹ค. - **Windowing (๊ฐ€์ƒ ๋ฆฌ์ŠคํŠธ)**: - ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ ์•„์ดํ…œ์ด ์žˆ์–ด๋„ ์‚ฌ์šฉ์ž์˜ ๋ˆˆ์— ๋ณด์ด๋Š” ์ˆ˜์‹ญ ๊ฐœ๋งŒ ์‹ค์ œ DOM์— ๋ Œ๋”๋งํ•œ๋‹ค. (์˜ˆ: `react-window`, `react-virtualized`). - **์ƒํƒœ์˜ ์œ„์น˜ ์„ ์ • ([[State|State]] Colocation)**: - ์ „์—ญ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ์•ฑ ์ „์ฒด๊ฐ€ ๋“ค์ฉ์ด์ง€ ์•Š๊ฒŒ ํ•˜๋ผ. ์ƒํƒœ๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ ๊ทผ์ฒ˜๋กœ ๋‚ด๋ ค๋ผ. ## โš–๏ธ Trade-offs & Caveats - ๋ชจ๋“  ๊ณณ์— `memo`๋ฅผ ์“ฐ๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋‹ค. ๋ฆฌ์•กํŠธ์˜ ๊ธฐ๋ณธ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์€ ์ด๋ฏธ ๋งค์šฐ ๋›ฐ์–ด๋‚˜๋‹ค. ๋ณ‘๋ชฉ ํ˜„์ƒ์ด '์‹ค์ œ๋กœ ๊ด€์ธก'๋  ๋•Œ๋งŒ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์›์น™์ด๋‹ค. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Critical Rendering Path|Critical Rendering Path]], Virtual DOM, React Fiber Architecture, [[React Compiler|React Compiler]], [[Hydration|Hydration]] - **Projects/Contexts:** [[SPA (Single Page Application)|SPA (Single Page Application]], [[Next.js|Next.js]] - **Contradictions/Notes:** SSR์€ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO) ๋ฐ ๋น ๋ฅธ ์ดˆ๊ธฐ ์ฝ˜ํ…์ธ  ๋ Œ๋”๋ง(FCP) ์ธก๋ฉด์—์„œ ์œ ๋ฆฌํ•˜์ง€๋งŒ [43, 65], ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ์™„์„ฑ๋œ ํŽ˜์ด์ง€๋ฅผ ๋ณด๋”๋ผ๋„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ JavaScript ๋ฒˆ๋“ค์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” [[Hydration|Hydration]](์ˆ˜ํ™”) ๊ณผ์ •์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ƒํ˜ธ์ž‘์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, TTI(Time to Interactive) ์ง€ํ‘œ์—์„œ๋Š” CSR๋ณด๋‹ค ์ˆ˜์น˜๊ฐ€ ๋‚ฎ๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ๋ Œ๋”๋ง ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [66-69]. --- *Last updated: 2026-04-25* --- - **Related Topics:** [[Virtual DOM|Virtual DOM]] (๊ฐ€์ƒ DOM), Critical Rendering Path (์ค‘์š” ๋ Œ๋”๋ง ๊ฒฝ๋กœ), React Compiler (React ์ปดํŒŒ์ผ๋Ÿฌ), React Server Components (RSC), [[Concurrent Rendering|Concurrent Rendering]] (๋™์‹œ์„ฑ ๋ Œ๋”๋ง) - **Projects/Contexts:** ์ฝ”์–ด ์›น ๋ฐ”์ดํƒˆ([[Core Web Vitals|Core Web Vitals]]) ๊ฐœ์„  ํ”„๋กœ์ ํŠธ, ํ”„๋ก ํŠธ์—”๋“œ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜(CBA) ๊ตฌ์ถ• - **Contradictions/Notes:** React 18์˜ ์ž๋™ ๋ฐฐ์นญ(Automatic Batching) ๊ธฐ๋Šฅ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ๋ Œ๋”๋ง ์ตœ์ ํ™”์— ๊ธฐ์—ฌํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ ์ฆ‰๊ฐ์ ์ธ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ(์˜ˆ: ์ž…๋ ฅ ํฌ์ปค์Šค, ํผ ๊ฐ’ ์ฆ‰๊ฐ ์—…๋ฐ์ดํŠธ)์„ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” `[[flushSync|flushSync]]` API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜๋„์ ์œผ๋กœ ๋ฐฐ์นญ์„ ์šฐํšŒํ•˜๊ณ  ๋™๊ธฐ์  ๋ Œ๋”๋ง์„ ๊ฐ•์ œํ•ด์•ผ ํ•œ๋‹ค [28, 41, 42]. ํ•œํŽธ ๊ธฐ์กด React ์ƒํƒœ๊ณ„์—์„œ๋Š” `useMemo`์™€ ๊ฐ™์€ ์ˆ˜๋™ ์ตœ์ ํ™”๊ฐ€ ํ•„์ˆ˜์ ์ด์—ˆ์œผ๋‚˜, React ์ปดํŒŒ์ผ๋Ÿฌ ๋„์ž… ์ดํ›„์—๋Š” ์ด๋“ค์ด ๋ถˆํ•„์š”ํ•ด์ง€๋ฉฐ ์˜๋„์ ์ธ ์ œ์–ด๋‚˜ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Œ€์‘๊ณผ ๊ฐ™์€ ์˜ˆ์™ธ์  ์ƒํ™ฉ์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š”(Escape Hatch) ๋ฐฉ์‹์œผ๋กœ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋ฐ”๋€Œ๊ณ  ์žˆ๋‹ค [19, 43-45]. --- *Last updated: 2026-04-25* --- - Related: [[WebWorker_Performance|WebWorker_Performance]] , [[System_Debugging_Protocol|System_Debugging_Protocol]] - Foundation: [[React_Mental_Model|React_Mental_Model]]