Back to Blog
Design CSS

Tailwind CSS v4: What Changed and Why It Matters

Dinesh Bandara · April 18, 2025

Tailwind CSS v4: What Changed and Why It Matters

Tailwind CSS v4 isn’t just an update — it’s a complete rethinking of how the framework works. After migrating several projects, here’s our honest take.

CSS-first configuration

The biggest shift: configuration moves from tailwind.config.js into CSS itself using @theme blocks. This feels strange at first, but it’s genuinely cleaner. Your design tokens live in your stylesheet, not a separate JavaScript file.

@import "tailwindcss";

@theme {
  --color-brand-500: #6366f1;
  --font-family-sans: "Inter", sans-serif;
}

The Vite plugin replaces the PostCSS plugin

No more PostCSS configuration. Tailwind v4 integrates directly with Vite via @tailwindcss/vite, which means faster builds and better HMR.

Content detection is automatic

You no longer need to specify content paths. The engine scans your project automatically. One less thing to configure and one less source of “why aren’t my classes working” bugs.

Migration effort

For greenfield projects, v4 is a joy. For existing projects with complex configs, budget a few hours. The upgrade guide is thorough, but there are genuine breaking changes — especially around how colours and spacing are defined.

Our recommendation: upgrade new projects immediately, plan migrations for existing ones.