Tailwind CSS Debate: Another Cool Tool Dissed by Web Purists
Earlier this week, Matt Rickard wrote a post entitled “Why Tailwind CSS Won,” which got to the front page of Hacker News. Inevitably, it kicked off the latest round of polarized opinions on social media about a popular web development tool. Surprise, surprise: some people love Tailwind, and others hate it.
Where’s the Beef?
Tailwind CSS as a framework for developers is pretty easy to understand. Basically, it allows you to embed CSS styling code into your HTML code — to, as Tailwind’s tagline puts it, “rapidly build modern websites without ever leaving your HTML.” So it saves developers from having to context-switch from HTML to a CSS stylesheet.
Tailwind’s own documentation points out a common objection to this approach: “isn’t this just inline styles?” Those of you from the 1990s will remember having to add styling markup to your HTML files back in the day, before the CSS revolution took hold. But according to Tailwind, its “utility class” approach offers more functionality than inline styles — including the ability to do responsive design (mobile-friendly designs).
So ease of use — especially compared to coding and then maintaining a CSS file — and the ability to do your styling inside HTML are the primary reasons why many developers love Tailwind. In his post, Matt Rickard added “copy-and-pastable,” “fewer dependencies, smaller surface,” and “reusability” as key strengths of the framework.
As for its critics, the overall theme of their dislike for Tailwind is that it somehow “disrespects the platform it sits on,” as Jared White put it in a recent post. When I queried him about this, he pointed me to an earlier post of his that outlines his specific critiques. To quickly sum them up: he thinks Tailwind “promotes ugly-ass HTML,” he doesn’t like that “CSS files built for Tailwind are non-standard (aka proprietary) and fundamentally incompatible with all other CSS frameworks and tooling,” he believes that “Tailwind forgets that web components exist,” and, finally, he thinks it “encourages div/span-tag soup.”
In a nutshell, Tailwind has ugly markup and is non-standard — that seems to be the core complaint of Jared White and other critics of Tailwind. Jeff Sandberg mentioned similar complaints in his recent blog post arguing against Tailwind. Sandberg concluded with a larger point about the rise of Tailwind at the expense of writing CSS directly: “Tailwind is a symptom of what I feel to be a larger problem in development. There’s been a rapid deterioration in pride-of-craftsmanship in development.”
So Who’s Right…
Tailwind’s creator, Adam Wathan, has no doubt debated people many times on platforms like X/Twitter. I trawled through some of the recent threads, but this GIF he posted of Macho Man Randy Savage seems to sum up his stance:
It’s tempting to look at this debate about Tailwind as yet another “Cool Tool vs. Web Purists” argument (which typically means nobody will ever agree on anything the other side says).
On the one hand, I don’t blame any practicing web developer for wanting to use the easiest tool available and also one that plugs in nicely with other tools — for instance, Tailwind can be used with Next.js. This is the pragmatist approach to web development; and in some cases, developers may not even have a choice, if a project already uses Tailwind and they’ve just joined the team.
On the other hand, deviating from existing web standards (however subtly) can become a problem further down the road. If you’re no longer working directly with CSS files, and instead working with an abstraction like Tailwind, doesn’t that mean you’re less likely to understand the underlying technology?
I think Google’s Una Kravets summed it up nicely, during a recent X/Twitter debate about Tailwind. “Tailwind can be a great solution,” she tweeted in June. “The issues arise when folks think they don’t need to learn CSS if they learn Tailwind, which ultimately limits them.”
Comparing the Tailwind Debate to the React Stoush
The Tailwind debate is slightly different from the one we’ve been having over React for the past several years. There’s good evidence that React actually is harmful to the web, primarily because of the large load it puts on browsers — which can mean performance issues for many users.
In the case of Tailwind, though, there doesn’t appear to be any damage to the end user. What Tailwind’s critics are complaining about is partly the aesthetics (“ugly markup”) and partly what Tailwind is allegedly doing to the craft of web development (the non-standard approach).
Web developer Paul Scanlon had a snappy retort to the Tailwind critics when I asked him about this debate. “I’ve been writing CSS for nearly 20 years and it’s terrible and always hard to maintain, and so is yours,” he said. “Tailwind at the very least standardized what terrible looks like.”
I can attest to the difficulties in dealing with CSS files — I was recently studying the multiple CSS files of my Web 2.0 tech blog, ReadWriteWeb, and was amazed at how convoluted those files were. But that was 15 or so years ago, and CSS has improved since then. Or, at least, Jeff Sandberg thinks so. “I’ve seen other engineers, of all levels, stuck in a mire of bad CSS, and so to them maybe Tailwind seems like a lifesaver,” he wrote in his post. “But CSS is better now. It’s not perfect, but it’s better than it’s ever been, and it’s better than tailwind.”
Sandberg implores developers to give CSS “another try.” And perhaps they will, after they’ve finished their day’s paid work in the cool tools of Next.js and Tailwind.