
Latest issue
The Wrapper Trap: When Composition Patterns Create the Friction They Were Supposed to Prevent
7/27/2026
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 kind of complexity for another. The components are more flexible, technically. They're also harder t…
Recent posts
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…
Here's a number that should give you pause: one Button component with four variants, six sizes, nine radius values, and a boolean flag produces north of four hundred valid combinat…
There's a reflex in startup codebases that goes like this: the team wraps a third-party component, the wrapper grows, someone complains it's "just extra indirection," and the next…
Here's a failure mode that plays out on a predictable schedule: a team names their primary action color coral because the brand is warm and the designer loves it. Eighteen months l…
There's a reflex in component library work: when you see props being passed through two or three layers, you reach for abstraction. A compound component, a context provider, a conf…
Here's a number that should bother you: 89% of design systems ship code examples, but only 37% include usage guidelines. The components exist. The props are typed. The Storybook st…
Most component APIs are designed for the demo, not the product. They look clean in Storybook, hold together in the docs, and then quietly fall apart the moment a second product sur…
Shopify's Polaris team made a call that most design system maintainers eventually face: deprecate the React-specific library and rebuild on web components. The technical rationale…
Most teams shipping with shadcn/ui believe they get accessibility for free. Radix handles the semantics, the ARIA attributes wire themselves up, keyboard navigation just works. You…
Most design system advice assumes you have a team. A dedicated engineer. A design systems lead. Maybe a Figma specialist. The implicit audience is always some company large enough…
Every design system eventually produces the same conversation. A product team needs something slightly outside the system's boundaries. The design system team says no. The product…
There's a specific kind of meeting that happens at growth-stage companies around the eighteen-month mark of a design system project. Someone from engineering asks why it takes thre…
There's a particular kind of design system meeting that happens at growth-stage companies. Someone has just joined from a larger org — maybe they came from a team that shipped a pr…

















