# [[Tailwind CSS v4 λ„μž…]] ## πŸ“Œ Brief Summary Tailwind CSS v4λŠ” 기쑴의 JavaScript 기반 μ„€μ •(`tailwind.config.js`) λ°©μ‹μ—μ„œ λ²—μ–΄λ‚˜ CSS μš°μ„ (CSS-first) μ•„ν‚€ν…μ²˜λ‘œμ˜ 근본적인 μ „ν™˜μ„ 이룬 μœ ν‹Έλ¦¬ν‹° 퍼슀트 CSS ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€ [1, 2]. `@theme` 및 `@source` μ§€μ‹œμ–΄(directive)λ₯Ό μ‚¬μš©ν•˜μ—¬ λ„€μ΄ν‹°λΈŒ CSS λ³€μˆ˜λ‘œ λ””μžμΈ 토큰을 직접 μ •μ˜ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 것이 νŠΉμ§•μž…λ‹ˆλ‹€ [2-4]. λ˜ν•œ Rust μ–Έμ–΄ 기반의 κ°•λ ₯ν•œ Oxide 엔진을 λ„μž…ν•˜μ—¬ κΈ°μ‘΄ 버전에 λΉ„ν•΄ μ΅œλŒ€ 10λ°° 이상 ν–₯μƒλœ λΉŒλ“œ 속도λ₯Ό μ œκ³΅ν•˜λ©°, ν™•μž₯ κ°€λŠ₯ν•˜κ³  μΌκ΄€λœ React μ»΄ν¬λ„ŒνŠΈ 및 UI μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜λŠ” 데 μ΅œμ ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€ [5-7]. ## πŸ“– Core Content * **CSS μš°μ„ (CSS-first) μ•„ν‚€ν…μ²˜ 및 @theme μ§€μ‹œμ–΄:** κΈ°μ‘΄ 버전(v3)μ—μ„œλŠ” `tailwind.config.js`λ₯Ό 톡해 λͺ¨λ“  μ„€μ •κ³Ό λ””μžμΈ 토큰을 μ •μ˜ν–ˆμ§€λ§Œ, v4μ—μ„œλŠ” CSS 파일 내에 `@theme` μ§€μ‹œμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ λ„€μ΄ν‹°λΈŒ CSS λ³€μˆ˜λ‘œ λ””μžμΈ 결정을 μ €μž₯ν•©λ‹ˆλ‹€ [1, 2, 7]. 예λ₯Ό λ“€μ–΄, `--color-primary-500`κ³Ό 같은 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ Tailwindκ°€ 이λ₯Ό λ°”νƒ•μœΌλ‘œ `bg-primary-500`, `text-primary-500`, `border-primary-500` λ“± κ΄€λ ¨λœ λͺ¨λ“  μœ ν‹Έλ¦¬ν‹° 클래슀λ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€ [2, 4]. * **@source μ§€μ‹œμ–΄λ‘œ κ°„νŽΈν•΄μ§„ 경둜 μ„€μ •:** μ΄μ „μ˜ JavaScript λ‚΄ `content` 경둜 섀정을 λŒ€μ²΄ν•˜κΈ° μœ„ν•΄ `@source` μ§€μ‹œμ–΄κ°€ λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [3]. 이λ₯Ό 톡해 CSS νŒŒμΌμ—μ„œ 직접 μ–΄λ–€ νŒŒμΌμ„ μŠ€μΊ”ν•˜μ—¬ μœ ν‹Έλ¦¬ν‹° 클래슀λ₯Ό μΆ”μΆœν• μ§€ μ„ μ–Έν•  수 있으며, 특히 λŒ€κ·œλͺ¨μ˜ λͺ¨λ…Έλ ˆν¬(Monorepo) μ•„ν‚€ν…μ²˜ ν™˜κ²½μ—μ„œ 보닀 μ‰½κ²Œ 파일 및 μ˜μ‘΄μ„±μ„ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€ [3]. * **Oxide 엔진을 ν†΅ν•œ 비약적인 μ„±λŠ₯ ν–₯상:** μƒˆλ‘œ λ„μž…λœ Rust 기반의 Oxide μ—”μ§„ 덕뢄에 λŸ°νƒ€μž„ 및 λΉŒλ“œ μ„±λŠ₯이 극적으둜 κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [5, 6]. 전체 λΉŒλ“œ μ†λ„λŠ” 이전 버전에 λΉ„ν•΄ μ•½ 5λ°°μ—μ„œ 10λ°° 빨라쑌으며, 점진적 λΉŒλ“œ(incremental builds) μ†λ„λŠ” 100λ°° 이상 ν–₯μƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€ [6, 8]. λ˜ν•œ λ”μš± 정ꡐ해진 트리 쉐이킹(Tree-shaking) κΈ°λŠ₯을 톡해 λΆˆν•„μš”ν•œ μ½”λ“œλ₯Ό μ œκ±°ν•©λ‹ˆλ‹€ [6]. * **ν™•μž₯성을 μœ„ν•œ λ””μžμΈ 토큰(Design Tokens) 체계화:** Tailwind CSS v4λŠ” ν…Œλ§ˆ ꡬ성 μ‹œ μ‹œκ°μ μœΌλ‘œ κ· μΌν•œ λͺ…도λ₯Ό μ œκ³΅ν•˜λŠ” OKLCH 색상 μ‹œμŠ€ν…œμ„ μ±„νƒν•˜μ—¬ λ”μš± 일관성 μžˆλŠ” 색상 척도λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€ [9, 10]. μœ μ—°ν•˜κ²Œ ν™•μž₯λ˜λŠ” λ””μžμΈ μ‹œμŠ€ν…œμ„ κ΅¬μ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” 토큰을 Base(μ›μ‹œ κ°’), Semantic(λͺ©μ  및 μ˜λ„ 기반), Component(μ»΄ν¬λ„ŒνŠΈ λ³€ν˜•μš©)의 μ„Έ κ°€μ§€ 계측(Layer)으둜 λΆ„λ¦¬ν•˜μ—¬ κ΅¬μ‘°ν™”ν•˜λŠ” 것이 κ°•λ ₯ν•˜κ²Œ ꢌμž₯λ©λ‹ˆλ‹€ [10, 11]. * **μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ»΄ν¬λ„ŒνŠΈ μ•„ν‚€ν…μ²˜μ™€μ˜ μ‹œλ„ˆμ§€:** React 기반의 λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” CVA(Class Variance Authority) λΌμ΄λΈŒλŸ¬λ¦¬λ‚˜ Compound Components(볡합 μ»΄ν¬λ„ŒνŠΈ) νŒ¨ν„΄κ³Ό Tailwind v4λ₯Ό κ²°ν•©ν•˜λŠ” 방식이 μ‚¬μš©λ©λ‹ˆλ‹€ [12, 13]. 이 νŒ¨ν„΄λ“€μ„ ν™œμš©ν•˜λ©΄ κ³Όλ„ν•œ Prop Drilling(ν”„λ‘­μŠ€ 전달)을 λ°©μ§€ν•˜κ³  μƒνƒœ 관리와 λ§ˆν¬μ—…μ„ λΆ„λ¦¬ν•˜λ©΄μ„œλ„ μΌκ΄€λœ Tailwind μœ ν‹Έλ¦¬ν‹° 기반의 ν…Œλ§ˆλ₯Ό μ†μ‰½κ²Œ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [12, 14]. ## πŸ”— Knowledge Connections - **Related Topics:** [[CSS-in-JS]], [[Design Tokens]], [[Class Variance Authority (CVA)]], [[React Server Components (RSC)]], [[Compound Components]] - **Projects/Contexts:** [[Next.js App Router]], [[Component Library Architecture]], [[Scalable Frontend Architecture]] - **Contradictions/Notes:** κΈ°μ‘΄ 널리 μ‚¬μš©λ˜λŠ” Styled Components λ“±μ˜ λŸ°νƒ€μž„ CSS-in-JS λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ€ 동적인 μŠ€νƒ€μΌλ§μ— μž₯점이 μžˆμ§€λ§Œ λŸ°νƒ€μž„ JavaScript μ‹€ν–‰ λΉ„μš©(μ˜€λ²„ν—€λ“œ)이 λ°œμƒν•˜μ—¬ React Server Components(RSC) ν™˜κ²½ 및 Core Web Vitals μ΅œμ ν™”μ— μ·¨μ•½ν•˜λ‹€λŠ” 문제λ₯Ό κ°–μŠ΅λ‹ˆλ‹€ [15-18]. 이와 λ°˜λŒ€λ‘œ Tailwind CSS v4λŠ” 정적 CSS 생성과 λΉŒλ“œ νƒ€μž„ μ΅œμ ν™”λ₯Ό 톡해 μ˜€λ²„ν—€λ“œ 없이 RSC와 μ™„λ²½ν•˜κ²Œ ν˜Έν™˜λ˜λ―€λ‘œ, μ„±λŠ₯ μ€‘μ‹¬μ˜ μ΅œμ‹  μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜μ— 훨씬 더 μ ν•©ν•œ μ ‘κ·Όλ²•μœΌλ‘œ 평가받고 μžˆμŠ΅λ‹ˆλ‹€ [7, 17, 19]. --- *Last updated: 2026-04-26*