| description | Tailwind CSS v4+ installation and configuration for Vite projects using the official @tailwindcss/vite plugin |
|---|---|
| applyTo | vite.config.ts, vite.config.js, **/*.css, **/*.tsx, **/*.ts, **/*.jsx, **/*.js |
Instructions for installing and configuring Tailwind CSS version 4 and above using the official Vite plugin. Tailwind CSS v4 introduces a simplified setup that eliminates the need for PostCSS configuration and tailwind.config.js in most cases.
- No PostCSS configuration required when using the Vite plugin
- No tailwind.config.js required - configuration is done via CSS
- New @tailwindcss/vite plugin replaces the PostCSS-based approach
- CSS-first configuration using
@themedirective - Automatic content detection - no need to specify content paths
Install tailwindcss and the @tailwindcss/vite plugin:
npm install tailwindcss @tailwindcss/viteAdd the @tailwindcss/vite plugin to your Vite configuration file:
// vite.config.ts
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [
tailwindcss(),
],
})For React projects with Vite:
// vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [
react(),
tailwindcss(),
],
})Add the Tailwind CSS import to your main CSS file (e.g., src/index.css or src/App.css):
@import "tailwindcss";Ensure your main CSS file is imported in your application entry point:
// src/main.tsx or src/main.ts
import './index.css'Run the development server to verify installation:
npm run devTailwind v4 uses CSS-first configuration. Do not create a tailwind.config.js file unless you have specific legacy requirements.
// ❌ NOT NEEDED in Tailwind v4
module.exports = {
content: ['./src/**/*.{js,ts,jsx,tsx}'],
theme: {
extend: {},
},
plugins: [],
}When using the @tailwindcss/vite plugin, PostCSS configuration for Tailwind is not required.
// ❌ NOT NEEDED when using @tailwindcss/vite
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}The old @tailwind directives are replaced by a single import:
/* ❌ OLD - Do not use in Tailwind v4 */
@tailwind base;
@tailwind components;
@tailwind utilities;
/* ✅ NEW - Use this in Tailwind v4 */
@import "tailwindcss";Use the @theme directive in your CSS to customize your design tokens:
@import "tailwindcss";
@theme {
--color-primary: #3b82f6;
--color-secondary: #64748b;
--font-sans: 'Inter', system-ui, sans-serif;
--radius-lg: 0.75rem;
}Define custom utilities directly in CSS:
@import "tailwindcss";
@utility content-auto {
content-visibility: auto;
}
@utility scrollbar-hidden {
scrollbar-width: none;
&::-webkit-scrollbar {
display: none;
}
}Define custom variants in CSS:
@import "tailwindcss";
@variant hocus (&:hover, &:focus);
@variant group-hocus (:merge(.group):hover &, :merge(.group):focus &);After installation, verify:
-
tailwindcssand@tailwindcss/viteare inpackage.jsondependencies -
vite.config.tsincludes thetailwindcss()plugin - Main CSS file contains
@import "tailwindcss"; - CSS file is imported in the application entry point
- Development server runs without errors
- Tailwind utility classes (e.g.,
text-blue-500,p-4) render correctly
Test the installation with a simple component:
export function TestComponent() {
return (
<div className="min-h-screen bg-gray-100 flex items-center justify-center">
<h1 className="text-3xl font-bold text-blue-600 underline">
Hello, Tailwind CSS v4!
</h1>
</div>
)
}- Verify CSS import statement is
@import "tailwindcss";(not old directives) - Ensure CSS file is imported in your entry point
- Check Vite config includes the
tailwindcss()plugin - Clear Vite cache:
rm -rf node_modules/.vite && npm run dev
If you see "Cannot find module '@tailwindcss/vite'":
npm install @tailwindcss/viteIf TypeScript cannot find types for the Vite plugin, ensure you have the correct import:
import tailwindcss from '@tailwindcss/vite'If migrating from Tailwind v3:
- Remove
tailwind.config.js(move customizations to CSS@theme) - Remove
postcss.config.js(if only used for Tailwind) - Uninstall old packages:
npm uninstall postcss autoprefixer - Install new packages:
npm install tailwindcss @tailwindcss/vite - Replace
@tailwinddirectives with@import "tailwindcss"; - Update Vite config to use
@tailwindcss/viteplugin
- Official Documentation: https://tailwindcss.com/docs/installation/using-vite
- Tailwind CSS v4 Upgrade Guide: https://tailwindcss.com/docs/upgrade-guide