Tailwind CSS 4: Migracion desde v3
Migra tu proyecto de Tailwind CSS 3 a 4. Cambios principales, nuevo sistema de configuracion, CSS-first config y como actualizar sin romper tu app.
Tailwind CSS 4: Migracion desde v3
Tailwind CSS 4 es la actualizacion mas grande desde la v1. El cambio principal: la configuracion se mueve de JavaScript a CSS. Ya no necesitas tailwind.config.js -- todo se define directamente en tu archivo CSS con @theme.
El motor nuevo (Oxide) es significativamente mas rapido y detecta tus archivos automaticamente sin necesidad de configurar content. Esta guia cubre como migrar tu proyecto sin romper nada.
Migracion automatica
Tailwind incluye una herramienta que hace la mayoria del trabajo:
npx @tailwindcss/upgradeEsto escanea tu proyecto y:
- Actualiza los paquetes a v4
- Convierte
tailwind.config.jsa directivas CSS - Renombra clases que cambiaron
- Actualiza imports en tu CSS
Revisa los cambios antes de commitear. La herramienta es buena pero no perfecta con configuraciones muy custom.
Cambio principal: CSS-first config
Antes (v3) tenias un archivo JS:
// tailwind.config.js (v3 -- ya no se usa)
module.exports = {
content: ["./app/**/*.tsx", "./components/**/*.tsx"],
theme: {
extend: {
colors: {
brand: "#35b809",
},
},
},
};Ahora (v4) todo va en tu CSS:
/* globals.css (v4) */
@import "tailwindcss";
@theme inline {
--color-brand: #35b809;
}Ventajas: no hay archivo de config separado, los colores se definen como CSS variables nativas, y el autodetect de contenido elimina la necesidad de configurar content.
Cambios que rompen
Clases renombradas
| v3 | v4 | Razon |
|---|---|---|
bg-opacity-50 | bg-black/50 | Opacidad como modificador |
text-opacity-75 | text-white/75 | Mismo patron |
flex-shrink-0 | shrink-0 | Nombre mas corto |
flex-grow | grow | Nombre mas corto |
overflow-ellipsis | text-ellipsis | Mas intuitivo |
decoration-clone | box-decoration-clone | Mas explicito |
Content detection automatico
v4 detecta tus archivos automaticamente. Ya no necesitas:
// ESTO YA NO ES NECESARIO
content: ["./app/**/*.tsx", "./components/**/*.tsx"],Si necesitas incluir o excluir paths especificos, usas @source en CSS:
@source "../node_modules/mi-libreria";@apply cambia
@apply sigue funcionando pero tiene algunas diferencias con clases que usan variables CSS. Si usas @apply mucho, revisa que los estilos se apliquen correctamente despues de migrar.
Definir tu tema con @theme
@import "tailwindcss";
@theme inline {
/* Colores custom */
--color-brand: #35b809;
--color-brand-hover: #6ec751;
--color-surface: #111111;
--color-border: #222222;
/* Fuentes */
--font-sans: "Geist", system-ui, sans-serif;
--font-mono: "Geist Mono", monospace;
/* Spacing custom */
--spacing-18: 4.5rem;
--spacing-88: 22rem;
/* Border radius */
--radius-soft: 0.625rem;
}Despues usas tus valores como siempre:
<div class="bg-brand text-white rounded-soft p-18">
Contenido con tema custom
</div>Dark mode
v4 sigue soportando dark mode con la clase dark o con prefers-color-scheme:
@import "tailwindcss";
@custom-variant dark (&:where(.dark, .dark *));<div class="bg-white dark:bg-zinc-900">
Cambia segun la clase .dark en html
</div>Plugins
Si usas plugins como @tailwindcss/typography o @tailwindcss/forms, actualiza a las versiones compatibles con v4:
npm install @tailwindcss/typography@latestEn v4, los plugins se importan en CSS:
@import "tailwindcss";
@plugin "@tailwindcss/typography";Checklist de migracion
- Correr
npx @tailwindcss/upgrade - Verificar que los colores custom se migraron correctamente a
@theme - Buscar y reemplazar clases renombradas que la herramienta no detecto
- Eliminar
tailwind.config.jssi ya no lo necesitas - Probar la app completa visualmente -- los cambios de spacing o bordes pueden ser sutiles
- Correr el build para verificar que no hay errores
Siguiente paso
Si estas configurando un proyecto nuevo con Tailwind v4, la guia de shadcn/ui cubre como integrar componentes UI que usan Tailwind. Y para el deploy de tu proyecto actualizado, revisa la guia de deploy en Vercel.
Preguntas frecuentes
Cuales son los cambios principales de Tailwind CSS 4?
La configuracion pasa de tailwind.config.js a CSS con @theme y @import. Ya no necesitas un archivo JS de config. El motor es nuevo (Oxide engine), mas rapido. Y muchas utilidades cambiaron nombre o comportamiento.
Puedo usar Tailwind 4 con Next.js?
Si. Next.js 15+ soporta Tailwind CSS 4. Solo necesitas actualizar los paquetes, migrar tu config a CSS, y ajustar las clases que cambiaron. Hay una herramienta de migracion automatica que ayuda con la mayoria de los cambios.
Tengo que migrar todo de golpe?
Tailwind tiene una herramienta CLI de migracion que hace la mayoria del trabajo automaticamente. Los cambios manuales son pocos si tu proyecto no usaba configuraciones muy custom.
tailwind.config.js sigue funcionando en v4?
Parcialmente. Puedes importar tu config legacy con @config en CSS, pero la recomendacion es migrar a @theme inline. Las funcionalidades nuevas solo estan disponibles con la config CSS-first.
Articulos relacionados
Next.js 16: Guia de Migracion y Novedades
Migra tu proyecto de Next.js 15 a 16. Novedades principales, breaking changes, y pasos para actualizar sin romper tu app.
Testing en Next.js con Vitest y Playwright
Configura testing en tu proyecto Next.js. Unit tests con Vitest, E2E con Playwright, y como integrarlos en tu pipeline de CI/CD.
React Server Components: Guia Practica y Patrones
Guia practica de React Server Components. Cuando usarlos, patrones de composicion, data fetching, y como combinar Server y Client Components en Next.js.