
Latest issue
Deprecation Is a Process, Not an Announcement
10/26/2026
Shopify's checkout.liquid stopped rendering on information, shipping, and payment pages on a single day — August 13, 2024 — and every app built against it broke at once, no overlap, no grace period. Compare that to Polaris, Shopify's own component library, which is currently runn…
Recent posts
A tab list broke in a DeFi frontend: the markup pointed aria-controls="panel-send" at an element that didn't exist, and arrow-key navigation didn't work at all — a manual role="tab…
A client review goes sideways two weeks before launch. The designer signed off. The engineer signed off. Then the client opens the app and says it doesn't look like what they were…
In 2023, GitHub's Primer team ran into a wall that should sound familiar to anyone maintaining a design system past a certain scale: as component counts grew on a page, their CSS-i…
Ask five design system leads who should be allowed to submit a new component, and four of them will say "anyone, through a contribution process." Ask what happens when two teams su…
Here's a scene that plays out constantly in startup codebases. A developer needs to pass a single value — say, an active state flag — from a parent component down to a leaf. The de…
Here's the failure mode: you build a clean three-tier token system. Primitives hold raw values. Semantic tokens map intent to those primitives. Component tokens reference semantics…
Here's a scene worth sitting with. A designer needs a testimonial block for a landing page going live in 48 hours. She opens the Figma library and finds three options: Testimonial…
Here's the failure sequence, and you've probably lived it: you build a clean Card component. Compound pattern, properly decomposed — Card.Header, Card.Body, Card.Footer. Consumers…
Here's a scene worth sitting with: one developer opens a ticket, finds a piece of state that needs to travel four levels down the component tree, and reaches for React Context. Ano…
Three weeks ago I wrote about premature semantic layers — the failure mode where teams build elaborate alias hierarchies before they have enough product surface to justify them. To…
Here's the trap: you spend a sprint building a token naming system that reads like a sentence. color-action-primary-bg-hover. Clean. Grammatical. As one practitioner framing the ap…
Here's the failure mode nobody talks about until they're already in it: you start with a clean three-tier token architecture — reference, semantic, component — and six months later…
Here's a failure mode that shows up in almost every growing component library: a team adopts composition patterns to escape prop explosion, and six months later they've traded one…
Here's the failure mode I keep seeing: a team hits prop drilling pain, reaches for Context, and then six months later they're debugging mystery re-renders across half the component…
Here's the failure mode: you spend a week naming tokens correctly. color-action-primary, color-feedback-danger, color-surface-overlay. The names communicate intent. They survive a…
Here's a scene that should feel familiar: you open a codebase and search for Button. You find ButtonPrimary, ButtonSecondary, ButtonDanger, ButtonGhost, ButtonLink, ButtonSmall, Bu…
Here's the failure mode I keep seeing: a team spends two weeks debating whether a CardWithAvatar is a molecule or an organism. They update the Figma library, they update Storybook,…
Here's a failure mode that plays out on a predictable schedule, and I've watched it happen enough times to recognize the stages. A team adopts semantic token naming — color-surface…
Here's a pattern that ships in nearly every component library: a provider at the root, a useContext hook inside each component, and a clean API that hides all the wiring. It looks…


















