dev.to
It's almost 2026: Why Are We Still Arguing About CSS vs ...
Excerpt
Compare that to writing three media queries. Yeah. The parts that make me want to scream: 1. HTML looks like a crime scene. Have you seen a Tailwind component after you’ve added dark mode, responsive breakpoints, and hover states? It looks like alphabet soup had a baby with a regular expression. 1. You need a build step. I just wanted to style a button. Now I’m configuring PostCSS, installing dependencies and praying my code tailwind.config.js doesn't break. This is violence. 1. Debugging is a nightmare. When something breaks in plain CSS, I open DevTools and see .button { background: red; }. Easy. With Tailwind, I see 47 utility classes fighting for specificity supremacy. Good luck. 1. It’s not actually that reusable. Everyone says “just make a component!” but then you’re essentially rebuilding CSS with extra steps. If I’m making a React component anyway, why am I doing this to myself? **What Nobody Tells You About Plain CSS The good parts (and why I can’t quit):** … Change one variable, update your entire site. Tailwind wishes it could. The parts that make me sad: 1. Naming things is still hard. Is it .btn or .button? .card-header or .header-card I've been doing this for years, and I still don't know. 1. Consistency requires discipline.
Source URL
https://dev.to/toboreeee/its-almost-2026-why-are-we-still-arguing-about-css-vs-tailwind-291fRelated Pain Points
Excessive tooling configuration overhead for new projects
5Setting up production-ready Vite applications requires understanding and configuring multiple separate tools (testing, linting, formatting, bundling, scaffolding, task running), creating a steep learning curve and complex project setup.
Complex debugging with multiple conflicting utility classes
5When styles break, developers must scan through many utility classes fighting for CSS specificity instead of viewing a single clear rule. Browser DevTools shows 47+ utility classes rather than straightforward CSS rules.
Misleading bundle size metrics and increased HTML payload
5While Tailwind markets tiny CSS bundles (<10kb), the actual HTML files grow 2-3x larger due to numerous utility classes per element. One project saw CSS shrink 45kb→8kb but HTML grow 120kb→340kb, resulting in a net 183kb increase, contrary to marketing claims.
Inadequate naming conventions and semantic CSS decision paralysis
3Plain CSS requires developers to make consistent naming decisions (e.g., .btn vs .button, .card-header vs .header-card), creating maintenance burden and consistency challenges across projects and teams.