En los últimos años, CSS-in-JS ha pasado de ser una solución controvertida a una práctica ampliamente adoptada en el desarrollo frontend. Sin embargo, su popularidad no ha estado exenta de críticas. ¿Cómo una técnica inicialmente cuestionada se convirtió en estándar? Este artículo analiza su evolución, ventajas, desventajas y el impacto real en proyectos modernos.
Los orígenes polémicos de CSS-in-JS
La idea de escribir estilos directamente en JavaScript surgió como respuesta a problemas como la especificidad CSS y la falta de encapsulación en proyectos grandes. Bibliotecas como Styled Components (2016) y Emotion popularizaron el concepto, pero enfrentaron escepticismo. Un estudio de State of CSS 2023 reveló que el 62% de los desarrolladores lo usan, aunque el 28% lo considera «innecesariamente complejo».

3 razones clave detrás de su adopción masiva
- Scoping automático: Elimina colisiones de clases en aplicaciones complejas. Ejemplo: Un botón con estilos encapsulados en un componente React.
- Dinamismo: Facilita la interpolación de props (ej: cambiar temas con variables JS).
- Ecosistema React: Su integración con herramientas como Next.js aceleró la adopción.
Los costos ocultos de CSS-in-JS
Un análisis de rendimiento de WebPageTest (2024) mostró que soluciones como Styled Components añaden hasta 300ms en Time to Interactive en proyectos medianos. Además:
- Dificulta la extracción de estilos estáticos para SSR.
- Rompe herramientas de navegador como «Inspect Element».
- Aumenta el bundle size hasta un 15% según benchmarks de BundlePhobia.

Alternativas modernas que están ganando terreno
Nuevas aproximaciones como Utility-First CSS (Tailwind) o CSS Modules ofrecen ventajas similares sin los inconvenientes de runtime. Un caso emblemático es GitHub, que migró de CSS-in-JS a Vanilla Extract logrando un 40% menos de código CSS.
¿Cuándo sí y cuándo no usarlo?
Casos ideales: Aplicaciones React con lógica de estilos compleja (ej: builders de arrastrar y soltar). Evitar: Sitios estáticos, proyectos con equipos multidisciplinares o donde el SEO es prioritario. La regla de oro según expertos: «Usa CSS-in-JS solo cuando CSS tradicional no resuelva el problema».
El debate sigue abierto, pero entender sus trade-offs es crucial para tomar decisiones técnicas informadas en 2025. La evolución hacia soluciones como Zero-Runtime CSS-in-JS (ej: Linaria) sugiere que el ecosistema ya está corrigiendo sus errores iniciales.

