CSS: The Pain Is Real · Jens Oliver Meiert

June 24, 2025

complex HTML code with many utility classes.

Thesis: Proponents of utility CSS * (presentational HTML) have never performed a CSS-only redesign †.

One could be tempted now to try to state the opposite for proponents of strict separation of concerns between structure, presentation, and behavior—but they haven’t usually, either.

The pain of maintaining CSS is real. ‡

Source: CSS: The Pain Is Real · Jens Oliver Meiert

The last decade or so has seen the emergence of competing paradigms for managing CSS Code. From the late 1990s to around 2012, the central tenet of ‘separation of concerns’ held sway. HTML was for structured semantic content, CSS for appearance, and JavaScript for additional interactivity.

Something happened in the early teens. In response to the arrival of native iPhone and Android apps, the web aimed to compete with the interaction patterns of  those platforms. RESTful stateless multipage architectures give way to the Single Page Architecture, where rendering was done on the client, and state was managed on the client as well.

The concept of separation of concerns gave way to CSS-in-JS approaches, and to utility CSS, most well known now from Tailwind.

Here Jens Meiert proposes that each reflects a different philosophy, and that both are fine

The preferences seem based on two different conclusions: Life isn’t easy, so let’s make it as easy as we can, vs.—life isn’t easy, so let’s deal with it.

And that’s fine.