guias·7 min de lectura

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:

bash
npx @tailwindcss/upgrade

Esto escanea tu proyecto y:

  • Actualiza los paquetes a v4
  • Convierte tailwind.config.js a 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:

javascript
// 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:

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

v3v4Razon
bg-opacity-50bg-black/50Opacidad como modificador
text-opacity-75text-white/75Mismo patron
flex-shrink-0shrink-0Nombre mas corto
flex-growgrowNombre mas corto
overflow-ellipsistext-ellipsisMas intuitivo
decoration-clonebox-decoration-cloneMas explicito

Content detection automatico

v4 detecta tus archivos automaticamente. Ya no necesitas:

javascript
// ESTO YA NO ES NECESARIO
content: ["./app/**/*.tsx", "./components/**/*.tsx"],

Si necesitas incluir o excluir paths especificos, usas @source en CSS:

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

css
@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:

html
<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:

css
@import "tailwindcss";
 
@custom-variant dark (&:where(.dark, .dark *));
html
<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:

bash
npm install @tailwindcss/typography@latest

En v4, los plugins se importan en CSS:

css
@import "tailwindcss";
@plugin "@tailwindcss/typography";

Checklist de migracion

  1. Correr npx @tailwindcss/upgrade
  2. Verificar que los colores custom se migraron correctamente a @theme
  3. Buscar y reemplazar clases renombradas que la herramienta no detecto
  4. Eliminar tailwind.config.js si ya no lo necesitas
  5. Probar la app completa visualmente -- los cambios de spacing o bordes pueden ser sutiles
  6. 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.

#tailwind#css#migracion#nextjs#frontend

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.