We were Tailwind sceptics for a long time. The utility-first approach felt like inline styles with extra steps. Then we used it on a real project and changed our minds.
What we liked
Design consistency without a design system maintenance burden. When every spacing value comes from a shared scale, your UI automatically coheres. No more "is this 12px or 14px" debates. The constraint is the feature.
Development speed was genuinely faster once we stopped context-switching between HTML and CSS files. Shipping a component went from 20 minutes to 8 minutes on average.
What we did not like
HTML readability suffers when a div has 15 class names. We mitigated this with component extraction in Twig and React, but it requires discipline. Tailwind also adds build complexity — you need PostCSS and a purge step that can catch you off guard in production.
Our verdict
Tailwind wins for component-heavy projects with a consistent design system. Custom SCSS wins for editorial themes where designers frequently iterate on global styles. For our studio site (heavily component-based), Tailwind was the right call.