tailwindcss 4.0 무엇이 달라졌나요?
이 글에서 다루는 내용
Tailwind CSS v4.0은 성능과 유연성을 극대화한 새로운 버전으로, 최신 웹 표준과 개발 흐름에 맞춘 다양한 기능과 개선 사항을 제공합니다. 이 글에서는 업데이트된 주요 내용을 살펴봅니다.
먼저, 완전히 새롭게 설계된 고성능 엔진을 통해 전체 빌드 속도가 최대 5배, 증분 빌드 속도가 100배 이상 향상된 점을 다룹니다. 또한, CSS 레이어, 커스텀 속성(@property), color-mix() 등 최신 CSS 표준을 활용하여 더 간결하고 강력한 스타일링을 지원합니다.
설치 과정은 더욱 간소화되어 의존성을 줄이고, 한 줄의 CSS로 바로 시작할 수 있습니다. 새로운 @starting-style과 not-* 변형, 컨테이너 쿼리 지원, 3D 변환 유틸리티 등 현대적인 웹 디자인을 구현할 수 있는 기능도 포함되었습니다.
이외에도 P3 색상 팔레트, 확장된 그래디언트 API, 동적 유틸리티 값 등 개발자 경험을 크게 개선한 요소들을 소개합니다.
Tailwind CSS v4.0의 모든 변화를 한눈에 파악하고, 실제 프로젝트에 어떻게 활용할 수 있을지 살펴보세요.
tailwindcss 공식 블로그 - Tailwind CSS v4.0
- 새로운 고성능 엔진
- 현대적인 웹 표준과 개발 흐름에 맞춘 생산성
- 간소화된 설치
- vite-plugin-tailwind를 통해 Vite와의 통합이 간소화
- 자동 콘텐츠 감지
- 내장 import 지원
- CSS에서 configuration 가능
- 모든 디자인 토큰을 기본적으로 CSS 변수로 노출
- 동적 유틸리티 값과 유연한 변형
- 현대화된 P3 색상 팔레트
- 컨테이너 쿼리 지원
- 새로운 3D 트랜스폼 유틸리티
- 확장된 그라디언트 API
- @starting-style support
- not-* variant
- 새로운 유틸리티와 변형들
새로운 고성능 엔진
Tailwind CSS v4.0의 엔진은 프레임워크를 완전히 재설계한 수준으로 아키텍처와 속도를 개선했다고 합니다.
공식 벤치마크 결과를 보면, 전체 빌드는 약 3.5배 빠르고, 증분 빌드는 약 8배 이상 더 빠르다고 합니다. 특히, 새로운 CSS를 컴파일할 필요가 없는 증분 빌드의 경우, 속도가 182배 이상 빨라져 마이크로초 단위로 완료됩니다. 이는 실질적으로 작업 흐름에 큰 영향을 줄 수 있는 부분입니다.
예를 들어, 이전 버전(3.4)과 비교했을 때의 빌드 시간 데이터는 다음과 같습니다.
유형 | v3.4 | v4.0 | 개선 비율 |
---|---|---|---|
전체 빌드 | 378ms | 100ms | 3.78x |
새로운 CSS 포함 증분 빌드 | 44ms | 5ms | 8.8x |
새로운 CSS 없는 증분 빌드 | 35ms | 192µs | 182x |
이처럼 증분 빌드에서의 성능 향상이 특히 눈에 띄는데, 실무에서는 이미 사용 중인 클래스(flex, col-span-2, font-bold 등)를 재사용하는 일이 빈번하므로, 이 개선이 체감되기 쉬울 것입니다.
💡 Tailwind CSS Build는 어떻게 이루어지는지 간단하게 알아볼까요
- 소스 코드 스캔 → 프로젝트에서 사용된 클래스를 식별.
- 필터링 → 사용된 클래스만 추출.
- CSS 생성 → Tailwind 설정에 따라 CSS를 동적으로 생성.
- 최적화 (옵션) → 불필요한 CSS 제거 및 압축.
💡 증분 빌드(Incremental Build)란?
프로젝트의 전체 코드를 다시 컴파일하지 않고, 변경된 부분만 감지하여 필요한 부분만 업데이트하는 방식의 빌드 프로세스를 의미합니다.
Tailwind CSS에서 증분 빌드는 다음과 같은 맥락에서 사용됩니다.
- 새로운 CSS가 추가된 경우: 기존 CSS에 새로운 유틸리티 클래스가 필요하면 해당 클래스만 새로 생성합니다.
- 새로운 CSS가 없는 경우: 이미 생성된 CSS를 그대로 사용하며, 컴파일 과정이 거의 필요 없습니다.
이 방식은 특히 실시간 개발 환경(예: dev server)에서 유용합니다. 파일을 저장할 때마다 전체를 다시 빌드하지 않고, 변경 사항만 반영하므로 속도가 매우 빠릅니다.
현대적인 웹 표준과 개발 흐름에 맞춘 생산성
Tailwind CSS 4.0은 더 이상 Internet Explorer 11을 지원하지 않습니다. 그 대신, 최신 브라우저 환경에 최적화된 코드베이스를 채택해 불필요한 복잡성을 줄이고 성능을 높였습니다. 주요 목표는 현대적인 웹 표준과 개발 흐름에 맞춘 생산성을 제공합니다.
Internet Explorer 11 지원 중단
- Tailwind CSS 3.x까지는 IE11 호환성을 유지하기 위해 코드 크기가 늘어나고, 일부 최신 기능의 활용이 제한적이었습니다.
- 4.0에서는 IE11 지원을 제거하여, 더 가볍고 성능이 뛰어난 코드를 생성합니다.
최신 브라우저에 맞춘 최적화
- Tailwind CSS 4.0은 최신 CSS 표준 및 브라우저 기능을 적극 활용합니다.
- 예를 들어, 컨테이너 쿼리와 같은 최신 CSS 기능을 지원하며, 이로 인해 더욱 강력하고 유연한 스타일링이 가능해졌습니다.
- 최신 CSS 기능을 사용할 수 있어, 기존에는 복잡했던 스타일링 작업을 단순화할 수 있습니다.
구형 브라우저 폴리필 제거
- 프로젝트가 주로 최신 브라우저에서 작동한다면, 추가적인 폴리필(polyfill)이나 하위 호환성을 고려하지 않아도 됩니다.
- 빌드 파일 크기를 감소시킴으로써 로드 속도가 개선됩니다.
- 결과적으로 더 간결한 설정과 코드로 작업할 수 있습니다.
최신 CSS 기능 지원
@layer theme, base, components, utilities;
@layer utilities {
.mx-6 {
margin-inline: calc(var(--spacing) * 6);
}
.bg-blue-500\/50 {
background-color: color-mix(
in oklab,
var(--color-blue-500) 50%,
transparent
);
}
}
@property --tw-gradient-from {
syntax: "<color>";
inherits: false;
initial-value: #0000;
}
1. Native Cascade Layers**
CSS의 캐스케이드 레이어(@layer) 기능은 스타일 규칙 간의 우선순위를 세부적으로 제어할 수 있도록 합니다.
@layer base {
h1 {
font-size: 2rem;
color: black;
}
}
@layer utilities {
.text-blue {
color: blue;
}
}
/**
HTML에서 <h1 class="text-blue">Hello</h1>라고 작성하면 utilities 레이어의 스타일이 base 레이 어를 덮어씁니다.
**/
Tailwind는 기존에도 내부적으로 레이어(base, components, utilities) 구조를 관리했지만, 이번에 CSS의 네이티브 기능을 사용함으로써 표준에 더 가까운 방식으로 작동하게 되었습니다.
2. Registered Custom Properties
CSS **커스텀 프로퍼티(@property)**를 등록하여 동적 스타일링과 성능을 개선합니다.
@property --tw-gradient-from {
syntax: "<color>";
inherits: false;
initial-value: #0000;
}
/**
@property를 사용해 --tw-gradient-from이라는 커스텀 프로퍼티를 등록합니다.
*/
@keyframes gradientShift {
from {
--tw-gradient-from: #ff0000;
}
to {
--tw-gradient-from: #0000ff;
}
}
div {
animation: gradientShift 3s infinite alternate;
background: linear-gradient(to right, var(--tw-gradient-from), #ffffff);
}
/**
위 코드에서 --tw-gradient-from 값을 애니메이션으로 변경하며, 그라디언트 색상을 동적으로 조정합니다.
*/
3. color-mix()
CSS 색상 혼합 함수로, 두 가지 색상을 특정 비율로 혼합할 수 있습니다.
.bg-blue-50 {
background-color: color-mix(in oklab, blue 50%, white);
}
.bg-gray-80 {
background-color: color-mix(in oklab, gray 80%, black);
}
4. Logical Properties
CSS의 논리적 속성(예: margin-inline, padding-block)을 사용하여 양방향(Bi-Directional, RTL/LTR) 레이아웃을 간소화합니다.
예를 들어, 다국어 지원을 위해 양방향(Bi-Directional) 텍스트 레이아웃을 설정하는 경우, margin-inline-start와 같은 논리적 속성을 사용하면, 별도의 CSS 추가 없이 RTL/LTR 모두에서 제대로 작동하는 스타일을 작성할 수 있습니다.
.card {
margin-inline: 1rem; /* 왼쪽/오른쪽 여백 */
padding-block: 2rem; /* 위/아래 여백 */
}
.card-rtl {
direction: rtl; /* 오른쪽에서 왼쪽(RTL) 텍스트 방향 설정 */
margin-inline-end: 2rem; /* 오른쪽 여백 추가 */
}
간소화된 설치
4.0 버전에서 설정 프로세스를 대폭 간소화하여, 단계 수를 줄이고 많은 보일러플레이트를 제거했습니다.
- Tailwind CSS 설치
npm i tailwindcss @tailwindcss/postcss;
- PostCSS 플러그인 추가
export default {
plugins: ["@tailwindcss/postcss"],
};
- Tailwind를 CSS 파일에 가져오기
@import "tailwindcss";
- 간단한 CSS 설정: @tailwind 디렉티브 대신 @import "tailwindcss" 한 줄만 추가하면 바로 시작 가능.
- 제로 설정: 템플릿 파일 경로 등의 설정 없이도 프레임워크를 바로 사용할 수 있음.
- 외부 플러그인 불필요: 벤더 프리픽스와 최신 문법 변환은 내부적으로 Lightning CSS를 사용해 자동 처리.
vite-plugin-tailwind를 통해 Vite와의 통합이 간소화
공식 vite-plugin-tailwind 플러그인을 통해 Vite와의 통합이 간소화되었습니다.
import { defineConfig } from "vite";
import tailwindcss from "@tailwindcss/vite";
export default defineConfig({
plugins: [
tailwindcss(),
],
});
차이점 (이전 버전 대비)
- 이전 버전:
- Vite와 통합하려면 PostCSS 설정 파일을 수동으로 작성해야 했음.
- 별도의 설정이 필요해 초기 설정이 다소 번거로움.
- 현행 버전(4.0):
- 플러그인을 설치하고 Vite 설정에 추가하는 것만으로 Tailwind CSS를 사용할 수 있음.
- 핫 리로드 및 Vite의 최적화 기능을 자동으로 활용 가능.
자동 콘텐츠 감지
Tailwind CSS 4.0의 Automatic Content Detection은 템플릿 파일의 경로를 수동으로 설정해야 했던 기존 방식에서 벗어나, 자동으로 콘텐츠를 감지하는 기능을 도입했습니다.
휴리스틱 탐지
// 이전 방식
content: ['./src/**/*.{html,js,jsx,ts,tsx}']
- Tailwind CSS는 **휴리스틱(heuristics)**을 사용하여 템플릿 파일과 리소스를 자동으로 탐지합니다.
- 개발자가 별도로 content 배열을 설정하지 않아도, Tailwind가 적절한 파일들을 스캔하여 필요한 클래스를 감지합니다.