Skip to main content
Back to blog

Tailwind CSS in practice: why I still reach for it

·3 min readWeb Dev

I have been using Tailwind CSS across multiple projects for a few years now. This site is built with it. Landbound uses it. Every new project I start, I reach for it without much deliberation. Here is why, and where I think the criticisms are valid.

The speed argument is real

The biggest advantage is how fast you can build UIs. You stay in your component file, add utility classes, and the design takes shape in real time. There is no context switching between HTML and a separate CSS file, no naming things, no hunting for where a style is defined.

For someone who cares about building the product more than crafting artisanal CSS, this tradeoff is worth it.

Consistency without effort

Tailwind's spacing scale, color palette, and responsive breakpoints give you a design system for free. Using p-4 and p-6 instead of arbitrary pixel values means your spacing is consistent across the entire app without thinking about it. The design system is baked into the utility classes.

Where it gets messy

Long class strings are genuinely hard to read. A div with 15 utility classes is not pleasant to look at. I deal with this by extracting components aggressively. If a class string is getting long, that is usually a sign the element should be its own component.

The other criticism I hear is that it couples your styles to your markup. That is true, and I think it is fine. In a component-based architecture, the markup and styles for a component change together anyway. Separating them into different files just means you have to update two places instead of one.

Tailwind v4 improvements

Tailwind v4 simplified the setup significantly. No more tailwind.config.js for basic usage. The @theme directive in CSS handles custom tokens. The new CSS-first configuration feels cleaner and more natural than the JavaScript config file.

When I would not use it

For content-heavy sites where you do not control the HTML (like a CMS rendering markdown), Tailwind's utility approach does not fit well. You would end up writing a prose style override anyway. The @tailwindcss/typography plugin helps, but it is essentially traditional CSS with extra steps.

For tiny projects where you are writing 50 lines of CSS total, Tailwind is overkill. Just write the CSS.

The bottom line

Tailwind is a productivity multiplier for component-based web applications. It is not the best tool for every situation, but for the kind of work I do, it has earned its place in the stack.

Sources

Enjoying the blog? Subscribe via RSS to get new posts in your reader.

Subscribe via RSS