Tailwind CSS v4의 핵심 변경사항과 아키텍처 혁신을 조망합니다. Rust 기반 엔진, CSS-first 설정, 새로운 임포트 구조 등 v3에서 v4로의 패러다임 전환을 이해합니다.
Tailwind CSS는 유틸리티 우선(Utility-First) CSS 프레임워크로, 프론트엔드 개발의 스타일링 방식을 근본적으로 바꿔놓았습니다. 2024년 말에 출시된 v4는 단순한 버전 업데이트가 아닌 패러다임의 전환입니다. JavaScript 기반 설정에서 CSS-first 설정으로, PostCSS 플러그인에서 독립 빌드 엔진으로, 설정 파일 중심에서 CSS 내장 기능 중심으로 — Tailwind의 근본적인 동작 방식이 바뀌었습니다.
Tailwind CSS v4는 내부 엔진을 처음부터 다시 작성했습니다. 가장 큰 변화는 다음 세 가지입니다.
Rust 기반 고성능 엔진(Oxide): v3까지 JavaScript로 작성되었던 CSS 처리 엔진이 Rust로 재작성되었습니다. 이를 통해 빌드 속도가 극적으로 개선되었으며, 대규모 프로젝트에서도 밀리초 단위의 빌드를 달성합니다.
독립 실행형 도구: v3에서는 PostCSS 플러그인으로만 사용할 수 있었지만, v4는 자체 빌드 도구(@tailwindcss/cli), PostCSS 플러그인(@tailwindcss/postcss), Vite 플러그인(@tailwindcss/vite) 등 다양한 통합 방식을 제공합니다.
CSS-first 설정: tailwind.config.js 파일이 더 이상 필요하지 않습니다. 모든 설정을 CSS 파일 안에서 @theme 디렉티브로 정의합니다.
| 영역 | v3 | v4 |
|---|---|---|
| 설정 | tailwind.config.js (JavaScript) | @theme 디렉티브 (CSS) |
| 임포트 | @tailwind base/components/utilities | @import "tailwindcss" |
| 엔진 | JavaScript (PostCSS) | Rust (Oxide) |
| 색상 | hex/rgb/hsl | OKLCH 기본 |
| 콘텐츠 감지 | content 배열 수동 설정 | 자동 감지 |
| 다크 모드 | darkMode: 'class' 설정 | CSS 기반 자동 |
| 변형 정의 | addVariant() JS API | @custom-variant CSS |
| 플러그인 | JS 파일 | @plugin CSS 디렉티브 |
v3에서 세 줄의 @tailwind 디렉티브를 사용했다면, v4에서는 단 한 줄로 시작합니다.
@tailwind base;
@tailwind components;
@tailwind utilities;@import "tailwindcss";이 한 줄이 기본 리셋 스타일, 테마 변수, 유틸리티 클래스를 모두 포함합니다. 필요에 따라 각 레이어를 개별적으로 임포트할 수도 있습니다.
@import "tailwindcss/preflight";
@import "tailwindcss/theme";
@import "tailwindcss/utilities";v4의 가장 큰 철학적 변화는 설정의 장소가 JavaScript에서 CSS로 이동한 것입니다. @theme 디렉티브를 통해 디자인 토큰을 CSS 안에서 직접 정의합니다.
@import "tailwindcss";
@theme {
--color-primary: oklch(0.6 0.2 250);
--color-secondary: oklch(0.7 0.15 180);
--font-sans: "Pretendard", system-ui, sans-serif;
--font-mono: "JetBrains Mono", monospace;
--breakpoint-sm: 640px;
--breakpoint-md: 768px;
--breakpoint-lg: 1024px;
--breakpoint-xl: 1280px;
--spacing-18: 4.5rem;
--spacing-22: 5.5rem;
--animate-fade-in: fade-in 0.3s ease-out;
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}@theme에서 정의한 변수는 자동으로 유틸리티 클래스를 생성합니다. --color-primary를 정의하면 bg-primary, text-primary, border-primary 등의 클래스가 자동으로 사용 가능해집니다.
@theme에서 정의하는 변수는 일반 CSS 커스텀 프로퍼티가 아닌, Tailwind의 디자인 토큰 네임스페이스를 따릅니다. --color-*, --font-*, --spacing-*, --breakpoint-* 등의 접두사가 어떤 유틸리티를 생성할지 결정합니다.
v3에서는 tailwind.config.js의 content 배열에 파일 경로를 수동으로 지정해야 했습니다.
module.exports = {
content: [
'./src/**/*.{js,ts,jsx,tsx}',
'./components/**/*.{js,ts,jsx,tsx}',
],
// ...
}v4는 프로젝트 구조를 자동으로 분석하여 Tailwind 클래스가 사용된 파일을 감지합니다. .gitignore를 존중하며, node_modules나 바이너리 파일은 자동으로 제외합니다. 추가적인 소스 경로가 필요한 경우 @source 디렉티브로 지정할 수 있습니다.
@import "tailwindcss";
@source "../node_modules/@my-ui/components";v4는 기본 색상 시스템을 OKLCH로 전환했습니다. OKLCH는 인간의 색 인지에 기반한 색 공간으로, RGB나 HSL보다 더 균일하고 예측 가능한 색상 조작을 가능하게 합니다.
@theme {
--color-blue-500: oklch(0.623 0.214 259.815);
--color-green-500: oklch(0.723 0.219 149.579);
--color-red-500: oklch(0.637 0.237 25.331);
}OKLCH의 세 구성 요소는 다음과 같습니다.
OKLCH의 가장 큰 장점은 지각적 균일성(Perceptual Uniformity) 입니다. HSL에서 같은 saturation 값이라도 색상에 따라 체감 채도가 달라지지만, OKLCH에서는 같은 chroma 값이 일관된 채도를 나타냅니다. 이로 인해 색상 팔레트를 체계적으로 설계하기 훨씬 쉬워집니다.
v4는 프로젝트 환경에 맞는 다양한 통합 방식을 제공합니다.
import tailwindcss from "@tailwindcss/vite";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [tailwindcss()],
});export default {
plugins: {
"@tailwindcss/postcss": {},
},
};npx @tailwindcss/cli -i input.css -o output.css --watchv4에서는 autoprefixer가 더 이상 필요하지 않습니다. Tailwind v4 엔진이 벤더 프리픽스를 자동으로 처리합니다. PostCSS 설정에서 autoprefixer를 제거하세요.
Rust 기반 엔진으로의 전환은 체감할 수 있는 성능 개선을 가져왔습니다.
이 성능 향상은 특히 개발 서버에서의 HMR(Hot Module Replacement) 속도에 직접적인 영향을 줍니다. 클래스를 변경하고 저장하면 거의 즉시 결과가 반영됩니다.
이 시리즈는 Tailwind CSS v4의 핵심 기능을 깊이 있게 다루며, 각 기능의 원리, 설계 의도, 실전 활용 패턴을 체계적으로 학습합니다.
@theme 디렉티브 심층 분석# 새 프로젝트 (Vite + React 기준)
npm create vite@latest my-app -- --template react-ts
cd my-app
# Tailwind CSS v4 설치
npm install tailwindcss @tailwindcss/vite
# vite.config.ts에 플러그인 추가 후
# src/index.css에 아래 한 줄 추가
# @import "tailwindcss";Tailwind CSS v4는 유틸리티 우선 CSS의 개념은 유지하면서, 그 기반 기술을 완전히 현대화했습니다. Rust 엔진으로 성능을 혁신하고, CSS-first 설정으로 도구 의존성을 줄이며, OKLCH 색상으로 더 풍부한 시각 표현을 가능하게 합니다. 다음 장부터 각 기능을 하나씩 깊이 파고들어 보겠습니다. 먼저 2장에서는 v4의 핵심인 @theme 디렉티브와 CSS-first 설정 방식을 상세히 살펴봅니다.
이 글이 도움이 되셨나요?
관련 주제 더 보기
Tailwind CSS v4의 핵심 설정 방식인 @theme 디렉티브를 심층 분석합니다. 디자인 토큰 정의, 네임스페이스 규칙, 기본 테마 확장과 재정의 패턴을 다룹니다.
Tailwind CSS v4의 임포트 방식, CSS 레이어 시스템, @utility로 커스텀 유틸리티 정의하기, 그리고 스타일 우선순위 관리 전략을 다룹니다.
Tailwind CSS v4의 기본 색상 시스템인 OKLCH의 원리, 장점, 색상 팔레트 설계 방법, 그리고 투명도 수정자와 색상 조합 패턴을 실전 중심으로 다룹니다.