CSS-in-JS had a rough 2023-2025. The core issue: runtime CSS-in-JS libraries (styled-components, Emotion) inject styles into the DOM during render, which blocks React 18's concurrent features and adds 10-40ms to initial render on slower devices. Meta, Shopify, and Atlassian all published post-mortems on CSS-in-JS performance problems and their migrations away from it.
Tailwind CSS v4 (released early 2025) is the current default for new React projects. The new oxide engine (rewritten in Rust) reduces full build time from 5s to under 100ms. The CSS-first configuration (v4 moved away from tailwind.config.js to @theme directives in CSS) integrates cleanly with Vite and Next.js. Tailwind's utility-first model generates the smallest production CSS — only utilities actually used appear in the final bundle. The learning curve is real (you must internalize or look up class names), but after 1-2 weeks, most developers report faster iteration speed than writing custom CSS.
CSS Modules are the zero-friction alternative. They scope class names per file, work with any build tool, add no runtime overhead, and require zero buy-in to a methodology. CSS Modules are what Next.js recommends for teams not using Tailwind, and they're the right choice when designers provide custom CSS that doesn't map cleanly to utility classes.
vanilla-extract is the zero-runtime CSS-in-JS answer — TypeScript DSL that compiles to plain CSS at build time, no runtime injection. It's type-safe (className values that don't exist cause TypeScript errors), supports themes via CSS custom properties, and has no render overhead. The tradeoff: more verbose than Tailwind for simple styling, better than Tailwind for complex design systems with many token-driven variants.
Styled-components and Emotion still work for class-based styling and are appropriate for existing codebases. They're not recommended for new projects where performance is a concern and React 18 concurrent features are used.
Practical 2026 defaults: Tailwind CSS v4 for product UIs and design systems, CSS Modules for marketing sites with designer handoffs, vanilla-extract for library authors or teams who need TypeScript-safe tokens without runtime cost.