Tailwind CSS

Planning our first real client pilot for Tailwind CSS

TW

After spending a weekend with Tailwind CSS shortly after its 1.0 release, enough of the team came away curious that we are scoping a proper client pilot for early next year rather than leaving it as an internal-only experiment. A weekend of enthusiasm is not the same as evidence a framework works under real client constraints, and this pilot is specifically designed to generate that evidence deliberately rather than accumulate it accidentally over the course of unrelated client work.

Choosing the right project to pilot it on

We have picked a small marketing site rebuild with a design that leans on a fairly restrained, consistent visual system — a good fit for Tailwind's config-driven design tokens for spacing, color, and typography, since it should let us encode the client's design system directly into the Tailwind config rather than scattering custom values through component styles. We deliberately avoided picking a larger or more complex project for this first real pilot, since we want to isolate how Tailwind itself performs under real conditions without a second, unrelated source of project risk muddying the results.

What specifically we are trying to learn from this pilot

  • Whether encoding a real client's design system into Tailwind's configuration is as clean in practice as it looks in a demo, or whether real design systems have enough inconsistency and edge cases to make the theoretical benefit harder to realize than expected
  • How a developer without our current weekend's worth of hands-on familiarity ramps up on the utility-first approach, since we want evidence beyond our own already-somewhat-converted team's experience
  • Whether the production build's final CSS size and load performance live up to the promise, once real production constraints like browser support requirements and integration with the rest of our build pipeline are accounted for

The PurgeCSS question specifically

We are also planning to properly evaluate PurgeCSS integration for production builds, since keeping the shipped CSS small is the main open question we still have about using it for real client work. Our internal weekend project was small enough that this was never seriously tested — a handful of pages does not meaningfully stress-test a purging step the way a larger, more dynamically rendered client site with content coming from multiple sources will, and we want real confidence that the purge step will not accidentally strip a class name that only appears in a JavaScript-generated string before we depend on it for something a client is paying for.

How we are structuring the pilot to catch problems early

Rather than committing to the full rebuild upfront, we are structuring this as a staged pilot: build the site's shared component library first, get real client sign-off on the visual result, and only then move to full page assembly. This gives us a natural checkpoint to evaluate whether the approach is working before the bulk of the project's actual page-building effort is sunk into it, and it mirrors the staged, cautious approach we have applied to other new-technology adoptions in the past — the same incremental caution that shaped how we approached CSS Grid and Kubernetes before recommending either for broader client work.

What would make us call this pilot a success

We are defining success narrowly and concretely before starting, rather than leaving it as a vague "did it feel good" assessment afterward: comparable or better development speed than our existing component-class approach for an equivalent design, a production CSS bundle under a specific target size, and no meaningful client-facing bugs traceable to the styling approach itself in the weeks following launch. Having this defined in advance should keep us honest about the actual result rather than letting initial team enthusiasm bias how we read the outcome after the fact.

What is next

We will report back once the pilot is further along, but this is the clearest a new CSS approach has felt to us in a while, and the team's genuine curiosity after just one weekend is itself a signal worth taking seriously, even as we deliberately build in enough structure to catch the ways that early enthusiasm might not hold up once real client constraints are involved.

Setting client expectations honestly about the experimental nature of this project

We were direct with the client about this being our first real production use of a genuinely new tool, rather than presenting it as a routine, fully de-risked technology choice, and priced the project with a small contingency buffer specifically to account for the added uncertainty. The client, notably, was enthusiastic rather than hesitant about this framing, since their own team had independently heard positive early buzz about Tailwind and appreciated the transparency about where we genuinely stood in our own evaluation of it rather than an overconfident sales pitch.

Choosing rollback criteria before starting, not after a problem appears

As part of the pilot's planning, we defined specific conditions under which we would abandon the Tailwind approach partway through and fall back to our established component-class approach, rather than leaving that as an undefined, purely reactive judgment call to be made under pressure if something went wrong mid-project. Agreeing on this upfront, while everyone was still calm and no actual problem had occurred yet, removes any temptation to push forward with a struggling approach purely due to sunk-cost thinking once real time and client money are already invested in it.

How this pilot fits into our broader pattern of cautious technology adoption

This staged, deliberately narrow approach to evaluating Tailwind mirrors how we approached CSS Grid a couple of years ago — extended internal experimentation, a narrowly scoped first production use, and only then a broader default recommendation once real production evidence backed up the internal enthusiasm. That pattern has served us well before, and we see no reason to skip a step of it just because Tailwind's weekend demo felt unusually compelling compared to some other tools we have evaluated and ultimately passed on after a similarly cautious look.

← Back to the journal

Have a project in mind?
Let’s talk.

Tell us where you are and where you want to go. We'll map the fastest route between the two.

Currently accepting new clients