# [[Zero-Runtime CSS-in-JS]] ## πŸ“Œ Brief Summary Zero-Runtime CSS-in-JSλŠ” JavaScript μ½”λ“œ λ‚΄μ—μ„œ μŠ€νƒ€μΌμ„ μž‘μ„±ν•˜λŠ” κΈ°μ‘΄ CSS-in-JS의 개발자 κ²½ν—˜μ„ μœ μ§€ν•˜λ©΄μ„œλ„, λΉŒλ“œ νƒ€μž„μ— μŠ€νƒ€μΌμ„ 정적 CSS 파일둜 μΆ”μΆœν•˜μ—¬ λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œλ₯Ό μ œκ±°ν•œ ν˜„λŒ€μ μΈ μŠ€νƒ€μΌλ§ κΈ°λ²•μž…λ‹ˆλ‹€ [1, 2]. λŒ€ν‘œμ μΈ λ„κ΅¬λ‘œλŠ” Linaria, Panda CSS, vanilla-extract 등이 있으며, λ›°μ–΄λ‚œ μ„±λŠ₯κ³Ό νƒ€μž… μ•ˆμ •μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€ [1, 3, 4]. 특히 React Server Components(RSC) ν™˜κ²½κ³Όμ˜ 높은 ν˜Έν™˜μ„±μ„ 톡해 λŒ€κ·œλͺ¨ ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜μ—μ„œ μ€‘μš”ν•œ λŒ€μ•ˆμœΌλ‘œ 자리 작고 μžˆμŠ΅λ‹ˆλ‹€ [4-6]. ## πŸ“– Core Content * **λ“±μž₯ λ°°κ²½ 및 ν•„μš”μ„±** * 초기 μ„ΈλŒ€μ˜ CSS-in-JS 라이브러리(styled-components, Emotion λ“±)λŠ” λŸ°νƒ€μž„μ— CSS λ¬Έμžμ—΄μ„ νŒŒμ‹±ν•˜κ³  DOM에 μ£Όμž…ν•˜λŠ” κ³Όμ •μ—μ„œ λ°œμƒν•˜λŠ” μ„±λŠ₯ μ˜€λ²„ν—€λ“œ(λ‘œλ”© 및 λ¦¬λ Œλ”λ§ μ‹œκ°„ 증가)와 λ²ˆλ“€ 크기 μ¦κ°€λΌλŠ” 단점이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€ [2, 7, 8]. * 특히 2024~2025λ…„κ²½ React Server Components(RSC)κ°€ λ„μž…λ˜λ©΄μ„œ, React Context에 μ˜μ‘΄ν•˜λŠ” κΈ°μ‘΄ λŸ°νƒ€μž„ CSS-in-JS λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ ν™˜κ²½μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 치λͺ…적인 ν˜Έν™˜μ„± λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€ [5, 6, 9]. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ„±λŠ₯ μ €ν•˜κ°€ μ—†λŠ” Zero-Runtime 방식이 λŒ€λ‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [2]. * **μž‘λ™ 원리 및 μ£Όμš” νŠΉμ§•** * Zero-Runtime CSS-in-JSλŠ” 개발 μ‹œ μ»΄ν¬λ„ŒνŠΈ 둜직과 μŠ€νƒ€μΌμ„ ν•¨κ»˜ λ°°μΉ˜ν•˜λŠ” νŽΈλ¦¬ν•¨μ„ μ œκ³΅ν•˜μ§€λ§Œ, λΉŒλ“œ λ‹¨κ³„μ—μ„œ 이λ₯Ό μ™„μ „νžˆ 정적인 CSS 파일둜 μΆ”μΆœν•©λ‹ˆλ‹€ [1, 2]. * λ™μ μœΌλ‘œ λ³€ν•΄μ•Ό ν•˜λŠ” μŠ€νƒ€μΌ 속성은 CSS μ‚¬μš©μž μ§€μ • 속성(CSS λ³€μˆ˜)을 ν™œμš©ν•˜μ—¬ μ²˜λ¦¬ν•˜λ―€λ‘œ λŸ°νƒ€μž„μ— CSSλ₯Ό μž¬κ³„μ‚°ν•˜κ±°λ‚˜ νŒŒμ‹±ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€ [1]. * 이 방식을 톡해 λΈŒλΌμš°μ € 캐싱을 효과적으둜 ν™œμš©ν•˜κ³  λ Œλ”λ§ μ„±λŠ₯(초기 HTML에 크리티컬 CSS 포함 λ“±)을 μ΅œμ ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1, 10]. * **λŒ€ν‘œμ μΈ 라이브러리** * **Linaria**: CSS-in-JS 문법을 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜λ©΄μ„œ λΉŒλ“œ νƒ€μž„μ— 정적 CSS둜 μΆ”μΆœν•˜λ©°, κΈ°μ‘΄ λŸ°νƒ€μž„ 라이브러리 λŒ€λΉ„ λˆˆμ— λ„λŠ” λ Œλ”λ§ 속도 ν–₯상을 λ³΄μ—¬μ€λ‹ˆλ‹€ [1]. * **Panda CSS**: 제둜 λŸ°νƒ€μž„ μ„±λŠ₯, μœ ν‹Έλ¦¬ν‹° 퍼슀트(Utility-first) 원칙, λ””μžμΈ 토큰 μ‹œμŠ€ν…œ 및 μ›μžμ (Atomic) CSS 생성을 κ²°ν•©ν•œ μ°¨μ„ΈλŒ€ λ„κ΅¬μž…λ‹ˆλ‹€ [2, 3]. * **vanilla-extract**: νƒ€μž…μŠ€ν¬λ¦½νŠΈ(TypeScript) 기반으둜 νƒ€μž… μ•ˆμ •μ„±μ„ μ œκ³΅ν•˜λŠ” 제둜 λŸ°νƒ€μž„ λ„κ΅¬λ‘œ, RSC와 μ™„λ²½νžˆ ν˜Έν™˜λ˜λ©° 닀쀑 ν…Œλ§ˆ(Multi-theme)λ₯Ό 관리해야 ν•˜λŠ” μ‹œμŠ€ν…œμ— κ°•λ ₯히 ꢌμž₯λ©λ‹ˆλ‹€ [2, 4, 11]. * **싀무적 적용 및 μ•„ν‚€ν…μ²˜μ  κ°€μΉ˜** * μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•œ λŒ€κ·œλͺ¨ μ—”ν„°ν”„λΌμ΄μ¦ˆ ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½μ—μ„œ, Zero-Runtime CSS-in-JSλŠ” CSS Modules처럼 정적 CSS의 μ„±λŠ₯을 보μž₯ν•˜λ©΄μ„œλ„ JavaScript 기반의 μ •λ°€ν•œ μΊ‘μŠν™”μ™€ ν…Œλ° κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€ [3, 12]. ## πŸ”— Knowledge Connections - **Related Topics:** [[CSS-in-JS]], [[React Server Components (RSC)]], [[CSS Modules]], [[λ””μžμΈ μ‹œμŠ€ν…œ (Design Systems)]], [[Tailwind CSS]] - **Projects/Contexts:** [[Next.js App Router ν™˜κ²½μ˜ μ»΄ν¬λ„ŒνŠΈ μŠ€νƒ€μΌλ§]], [[μ„±λŠ₯ μ΅œμ ν™”κ°€ ν•„μˆ˜μ μΈ λŒ€κ·œλͺ¨ 닀쀑 ν…Œλ§ˆ ν”Œλž«νΌ]] - **Contradictions/Notes:** κΈ°μ‘΄ CSS-in-JS(styled-components, Emotion)λŠ” 동적 λŸ°νƒ€μž„ ν…Œλ°μ— νŠΉν™”λ˜μ–΄ μžˆμœΌλ‚˜ μ„±λŠ₯ μ˜€λ²„ν—€λ“œμ™€ RSC λΉ„ν˜Έν™˜μ„±μ„ μ•ΌκΈ°ν•©λ‹ˆλ‹€. 반면, Zero-Runtime CSS-in-JSλŠ” λΉŒλ“œ μ‹œ 정적 μΆ”μΆœ 방식을 μ‚¬μš©ν•˜μ—¬ λŸ°νƒ€μž„ λΉ„μš©μ„ "0"으둜 λ§Œλ“€κ³  RSC와 ν˜Έν™˜λ˜λ„λ‘ ν•˜μ—¬ κΈ°μ‘΄ CSS-in-JS의 단점을 효과적으둜 κ·Ήλ³΅ν•©λ‹ˆλ‹€ [1, 4-7]. --- *Last updated: 2026-04-26*