# [[Performance Optimization|Performance Optimization]] ## πŸ“Œ Brief Summary μ΅œμ‹  React ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜μ—μ„œ μ„±λŠ₯ μ΅œμ ν™”(Performance [[Optimization|Optimization]])λŠ” λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œλ₯Ό μ΅œμ†Œν™”ν•˜κ³ , λ²ˆλ“€ 크기λ₯Ό 쀄이며, μ½”μ–΄ μ›Ή λ°”μ΄νƒˆ(Core Web Vitals)을 κ°œμ„ ν•˜λŠ” 일련의 κ³Όμ •κ³Ό μ•„ν‚€ν…μ²˜μ  선택을 μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λŠ” 주둜 λŸ°νƒ€μž„μ— μŠ€νƒ€μΌμ„ λ™μ μœΌλ‘œ μ£Όμž…ν•˜λŠ” [[CSS-in-JS|CSS-in-JS]] λŒ€μ‹  λΉŒλ“œ νƒ€μž„μ— 정적 CSSλ₯Ό μƒμ„±ν•˜λŠ” μœ ν‹Έλ¦¬ν‹° 퍼슀트(Utility-first) CSSλ₯Ό λ„μž…ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€ [1, 2]. λ˜ν•œ λ³΅μž‘ν•œ μ»΄ν¬λ„ŒνŠΈ 섀계 μ‹œ μ»¨ν…μŠ€νŠΈ(Context) 뢄리와 λ©”λͺ¨μ΄μ œμ΄μ…˜(Memoization)을 톡해 λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§μ„ λ°©μ§€ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈ μˆ˜μ€€μ˜ 섀계 μ΅œμ ν™”λ„ ν¬ν•¨λ©λ‹ˆλ‹€ [3-5]. ## πŸ“– Core Content - **μŠ€νƒ€μΌλ§ νŒ¨λŸ¬λ‹€μž„κ³Ό λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œ:** [[Tailwind CSS|Tailwind CSS]]와 같은 μœ ν‹Έλ¦¬ν‹° 퍼슀트 ν”„λ ˆμž„μ›Œν¬λŠ” λΉŒλ“œ νƒ€μž„μ— 정적 CSSλ₯Ό μƒμ„±ν•˜λ―€λ‘œ λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œκ°€ μ—†μœΌλ©°, ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ 5-20kb μˆ˜μ€€μ˜ μž‘μ€ λ²ˆλ“€ 크기λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€ [1, 2, 6]. 반면 styled-componentsλ‚˜ Emotionκ³Ό 같은 λŸ°νƒ€μž„ CSS-in-JSλŠ” λΈŒλΌμš°μ €μ—μ„œ [[JavaScript|JavaScript]]λ₯Ό μ‹€ν–‰ν•΄ CSS λ¬Έμžμ—΄μ„ μƒμ„±ν•˜κ³  μ‚½μž…ν•˜λŠ” 'λŸ°νƒ€μž„ μ„ΈκΈˆ(Runtime tax)'을 λ°œμƒμ‹œμΌœ, μ½˜ν…μΈ κ°€ λ§Žκ±°λ‚˜ 저사양 κΈ°κΈ°μ—μ„œ CPU 병λͺ© ν˜„μƒμ„ μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2, 7, 8]. - **Core Web Vitals 및 λ Œλ”λ§ 속도 ν–₯상:** Styled-componentsμ—μ„œ Tailwind CSS둜 μŠ€νƒ€μΌλ§μ„ μ „ν™˜ν•œ 벀치마크 및 μ‹€μ œ κΈ°μ—… 사둀에 λ”°λ₯΄λ©΄, JavaScript μ‹€ν–‰ μ‹œκ°„μ΄ 쀄어듦에 따라 λͺ¨λ°”일 ν™˜κ²½μ—μ„œ 졜초 μž…λ ₯ μ§€μ—°(FID)이 μ΅œλŒ€ 75.9%, λ‹€μŒ νŽ˜μΈνŠΈμ— λŒ€ν•œ μƒν˜Έμž‘μš©(INP)이 μ΅œλŒ€ 58.4% κ°μ†Œν–ˆμŠ΅λ‹ˆλ‹€ [9-12]. 10,000개의 리슀트 μ•„μ΄ν…œμ„ λ Œλ”λ§ν•˜λŠ” ν…ŒμŠ€νŠΈμ—μ„œλ„ TailwindλŠ” 85ms, Styled-componentsλŠ” 148msκ°€ μ†Œμš”λ˜μ–΄ μƒλ‹Ήν•œ μ„±λŠ₯ 격차λ₯Ό λ³΄μ˜€μŠ΅λ‹ˆλ‹€ [13]. - **[[React Server Components (RSC)|React Server Components (RSC]] ν˜Έν™˜μ„±:** React Context에 μ˜μ‘΄ν•˜λŠ” λŸ°νƒ€μž„ CSS-in-JS λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ€ Context APIκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ„œλ²„ μ „μš© μ‹€ν–‰ ν™˜κ²½μΈ RSC와 근본적으둜 ν˜Έν™˜λ˜μ§€ μ•Šμ•„ μ„±λŠ₯ 문제λ₯Ό μΌμœΌν‚΅λ‹ˆλ‹€ [8, 14, 15]. λ”°λΌμ„œ [[Next.js App Router|Next.js App Router]]와 같은 ν™˜κ²½μ—μ„œλŠ” λŸ°νƒ€μž„ CSS-in-JS의 μ‚¬μš©μ„ μ§€μ–‘ν•˜κ³ , Tailwind CSSλ‚˜ [[CSS Modules|CSS Modules]], λ˜λŠ” Zero-Runtime CSS-in-JS(예: [[vanilla-extract|vanilla-extract]])λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ„±λŠ₯상 ꢌμž₯λ©λ‹ˆλ‹€ [14, 16]. - **λΉŒλ“œ μ„±λŠ₯ κ°œμ„  (Tailwind v4):** 졜근 λ„μž…λœ [[Tailwind CSS v4|Tailwind CSS v4]]λŠ” Rust 기반의 Oxide 엔진을 μ±„νƒν•˜μ—¬ κΈ°μ‘΄ JavaScript 기반 컴파일러 λŒ€λΉ„ 전체 λΉŒλ“œ 속도가 5~10λ°°, 증뢄 λΉŒλ“œ(Incremental build) 속도가 100λ°° 이상 빨라져 개발 ν™˜κ²½μ˜ μ„±λŠ₯을 λΉ„μ•½μ μœΌλ‘œ ν–₯μƒμ‹œμΌ°μŠ΅λ‹ˆλ‹€ [17-21]. - **μ»΄ν¬λ„ŒνŠΈ μ•„ν‚€ν…μ²˜ μˆ˜μ€€μ˜ μ΅œμ ν™”:** ν•©μ„± μ»΄ν¬λ„ŒνŠΈ([[Compound Components|Compound Components]]) νŒ¨ν„΄μ„ 톡해 λ³΅μž‘ν•œ UIλ₯Ό ꡬ성할 λ•Œ, λͺ¨λ“  μƒνƒœλ₯Ό ν•˜λ‚˜μ˜ Context에 담기보닀 μƒνƒœ([[State|State]])와 μ•‘μ…˜(Actions)을 λ³„λ„μ˜ μ»¨ν…μŠ€νŠΈλ‘œ 뢄리(Split Contexts)ν•˜λ©΄ λΆˆν•„μš”ν•œ ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈμ˜ λ¦¬λ Œλ”λ§μ„ λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3, 5]. 이와 ν•¨κ»˜ λ Œλ”λ§ λΉ„μš©μ΄ 높은 ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•΄ μ „λž΅μ μΈ λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ μ μš©ν•˜λŠ” 것도 μ„±λŠ₯ μ΅œμ ν™”μ˜ ν•΅μ‹¬μž…λ‹ˆλ‹€ [4]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Tailwind CSS|Tailwind CSS]], Styled-components, React Server Components (RSC), [[Core Web Vitals|Core Web Vitals]], [[Compound Components|Compound Components]] - **Projects/Contexts:** [[Next.js App Router|Next.js App Router]], Tailwind CSS v4 Oxide Engine - **Contradictions/Notes:** λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œ 문제둜 인해 Styled-componentsκ°€ μ„±λŠ₯ μΈ‘λ©΄μ—μ„œ λΆˆλ¦¬ν•˜λ‹€λŠ” 지적이 λ§ŽμœΌλ‚˜, Styled-components v6 메이저 μ—…λ°μ΄νŠΈμ—μ„œλŠ” 캐싱 및 ν•« 패슀 마이크둜 μ΅œμ ν™”λ₯Ό 톡해 λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈμ˜ λ¦¬λ Œλ”λ§ 속도λ₯Ό μ΅œλŒ€ 3.3λ°° ν–₯μƒμ‹œμΌ°μœΌλ©°, 인라인 μŠ€νƒ€μΌ μ£Όμž… 방식을 톡해 RSC([[React Server Components|React Server Components]]) ν™˜κ²½μ— λŒ€ν•œ ν˜Έν™˜μ„±μ„ μƒˆλ‘­κ²Œ μΆ”κ°€ν•˜μ—¬ 단점듀을 κ°œμ„ ν–ˆμŠ΅λ‹ˆλ‹€ [22-24]. --- *Last updated: 2026-04-26*