Great question!

Arguments against CSS-in-JS mostly focus on complexity. CSS Modules is a simpler pattern with less boilerplate than most CSS-in-JS implementations. If you’re working on a small team and / or a small application, and can tightly enforce style patterns such as BEM or SMACSS, that’s probably best. I’ve followed those patterns for smaller projects and had a lot of success.

In my experience with larger applications and teams has been that the level of effort to enforce manageable style practices grows really quickly. If styles seems unmanageable in a CSS Module pattern, I would recommend a CSS-in-JS pattern instead where predictable behavior is built-in. But that’s the tradeoff, simplicity vs. predictability.

design systems @workday

design systems @workday