Cómo usar CSS en tu aplicación
Next.js ofrece varias formas de usar CSS en tu aplicación, incluyendo:
Módulos CSS
Los Módulos CSS (CSS Modules) limitan el alcance del CSS localmente generando nombres de clase únicos. Esto te permite usar la misma clase en diferentes archivos sin preocuparte por colisiones de nombres.
Para empezar a usar Módulos CSS, crea un nuevo archivo con la extensión .module.css
e impórtalo en cualquier componente dentro del directorio app
:
CSS Global
Puedes usar CSS global para aplicar estilos en toda tu aplicación.
Crea un archivo app/global.css
e impórtalo en el layout raíz para aplicar los estilos a cada ruta de tu aplicación:
Nota importante: Los estilos globales pueden importarse en cualquier layout, página o componente dentro del directorio
app
. Sin embargo, como Next.js usa el soporte incorporado de React para hojas de estilo e integración con Suspense, actualmente no elimina las hojas de estilo al navegar entre rutas, lo que puede causar conflictos. Recomendamos usar estilos globales solo para CSS verdaderamente global, y Módulos CSS para CSS con alcance limitado.
Hojas de estilo externas
Las hojas de estilo publicadas por paquetes externos pueden importarse en cualquier lugar del directorio app
, incluyendo componentes colocalizados:
Nota importante: En React 19, también se puede usar
<link rel="stylesheet" href="..." />
. Consulta la documentación delink
en React para más información.
Orden y fusión
Next.js optimiza CSS durante las compilaciones de producción fusionando automáticamente las hojas de estilo. El orden de tu CSS depende del orden en que importas los estilos en tu código.
Por ejemplo, base-button.module.css
se ordenará antes que page.module.css
ya que <BaseButton>
se importa antes que page.module.css
:
Recomendaciones
Para mantener un orden predecible del CSS:
- Intenta contener las importaciones de CSS en un único archivo de entrada JavaScript o TypeScript
- Importa estilos globales y hojas de estilo Tailwind en la raíz de tu aplicación.
- Usa Módulos CSS en lugar de estilos globales para componentes anidados.
- Usa una convención de nombres consistente para tus módulos CSS. Por ejemplo, usa
<nombre>.module.css
en lugar de<nombre>.tsx
. - Extrae estilos compartidos en componentes compartidos para evitar importaciones duplicadas.
- Desactiva linters o formateadores que ordenan automáticamente las importaciones como
sort-imports
de ESLint. - Puedes usar la opción
cssChunking
ennext.config.js
para controlar cómo se agrupa el CSS.
Desarrollo vs Producción
- En desarrollo (
next dev
), las actualizaciones de CSS se aplican al instante con Fast Refresh. - En producción (
next build
), todos los archivos CSS se concatenan automáticamente en archivos .css minimizados y divididos por código, asegurando que se cargue la mínima cantidad de CSS para una ruta. - El CSS aún se carga con JavaScript desactivado en producción, pero se requiere JavaScript en desarrollo para Fast Refresh.
- El orden del CSS puede comportarse diferente en desarrollo, siempre verifica la compilación (
next build
) para confirmar el orden final del CSS.