핵심 요약
2026년 5월 현재 React/Vue 진영에서 사실상 표준은 Tailwind v4지만, UnoCSS와 Panda CSS가 각자 다른 축에서 도전 중. Tailwind v4는 Oxide 엔진으로 빌드 100ms대 진입, UnoCSS는 프리셋 자유도와 attributify, Panda는 zero-runtime CSS-in-JS와 타입 안전 토큰이 차별점. 결론부터: 디자인 시스템이 중심이면 Panda, 빠른 프로토타이핑은 Tailwind, 멀티 프레임워크·커스텀 DSL은 UnoCSS.
1. Tailwind v4 — Oxide의 진짜 실력
v4가 1년 넘게 안정화되면서 Rust 기반 Oxide 엔진이 모든 작업을 통합. CSS-first 설정으로 tailwind.config.js가 사라졌고 @theme 디렉티브로 토큰을 선언한다.
/* app.css */
@import "tailwindcss";
@theme {
--color-brand-500: oklch(0.72 0.18 250);
--font-display: "Pretendard Variable", sans-serif;
--spacing-card: 1.25rem;
}
JIT 컴파일이 incremental로 동작해서 HMR 시 변경된 클래스만 추가 빌드. 50만 라인 모노레포에서 초기 빌드 380ms, 증분 8ms.
2. UnoCSS — 프리셋이라는 자유
// uno.config.ts
import { defineConfig, presetWind3, presetAttributify, presetIcons } from 'unocss'
export default defineConfig({
presets: [presetWind3(), presetAttributify(), presetIcons()],
shortcuts: {
'btn': 'px-4 py-2 rounded bg-blue-500 text-white hover:bg-blue-600',
},
rules: [
[/^m-(\d+)$/, ([, d]) => ({ margin: d + 'px' })],
],
})
attributify 모드를 켜면 <button bg="blue-500 hover:blue-600" text="white"> 같은 문법이 가능. 단, 가독성 호불호가 심하다.
3. Panda CSS — 타입 안전 zero-runtime
import { css } from 'styled-system/css'
import { button } from 'styled-system/recipes'
<button className={button({ size: 'lg', variant: 'solid' })}>
<span className={css({ color: 'brand.500', fontSize: 'xl' })}>Hello</span>
</button>
토큰·레시피가 모두 타입 추론되어 오타나 잘못된 토큰명은 컴파일 에러. 디자인 시스템 운영팀에 강력하다.
4. 빌드 성능 실측
Next.js 15 + React 19 프로젝트, 컴포넌트 1200개, 클래스 사용처 4.2만개 기준.
| 지표 | Tailwind v4 | UnoCSS | Panda |
|---|---|---|---|
| cold build CSS | 380ms | 290ms | 1.2s |
| HMR (1 클래스 추가) | 8ms | 5ms | 180ms |
| 최종 CSS 크기 | 42KB | 38KB | 61KB |
| JS 추가 번들 | 0 | 0 | 3.2KB |
5. DX — 자동완성과 디버깅
Tailwind는 공식 VSCode 익스텐션이 가장 성숙. 클래스 자동완성, 호버 시 CSS 미리보기, prettier-plugin-tailwindcss로 정렬까지 자동. UnoCSS는 별도 인스펙터(웹 UI)가 강력하지만 자동완성은 살짝 느리다. Panda는 타입 기반이라 자동완성·리네이밍이 IDE에서 그대로 동작 — 토큰 변경 시 사용처 추적이 즉시 가능.
6. 디자인 토큰과 다크모드
// Panda semantic token
tokens: {
colors: { gray100: { value: '#f3f4f6' } }
},
semanticTokens: {
colors: {
bg: { value: { base: '{colors.gray100}', _dark: '{colors.gray900}' } }
}
}
7. 마이그레이션 함정
Tailwind v3 -> v4는 공식 codemod가 95% 처리하지만 @apply 남용 프로젝트는 수동 정리 필요. UnoCSS로 옮길 땐 임의값 문법이 약간 달라 정규식 치환 한 번. Panda로 옮기는 건 사실상 재작성 — 클래스 문자열을 함수 호출로 바꿔야 해서 1주 이상 잡아야 한다.
8. 팀 규모별 결정
| 상황 | 추천 | 이유 |
|---|---|---|
| 스타트업, 빠른 MVP | Tailwind v4 | 학습 자료·LLM 지원 최다 |
| 디자인 시스템 보유 50명+ | Panda | 토큰 타입 안전성·레시피 |
| Vue·Svelte·Astro 혼용 | UnoCSS | 프레임워크 중립·프리셋 |
| 아이콘 100종 이상 | UnoCSS | presetIcons로 zero-config |
참고
- tailwindcss.com/docs/v4-beta
- unocss.dev
- panda-css.com

댓글 0