Nobody builds decisions.
shadcn is the standard AI builds UIs with. Its marketplace still sells 2019 landing pages.
The other day I wanted a quick interface. The modern way, so I asked the AI. Got shadcn back. Always do. Then the friendly nudge to just pick something from “6,167+ production-ready blocks.” Hero, Pricing, CTA, Dashboard and more. Copy, paste, ship.
And that is where it snagged.
shadcn won. It is the standard half the world assembles UIs with now, AI agents included. And yet everything sold around it is aimed at someone who barely exists anymore: the human hand-clicking a landing page. Nobody clicks one by hand today. The machine builds, the human decides whether it is any good.
The standard changed its audience. The market around it keeps selling to the old one.
Is that so?
Afraid so. I counted. Not the marketing promise, one real catalog end to end.
That is how many real primitives shadcn/ui ships in its registry. button, card, dialog, badge, alert, collapsible, progress, and so on. Small, ordered, no redundancy. This layer is genuinely good. This is explicitly not a “shadcn is rubbish” article.
That is how many blocks sit in that one catalog, shadcnblocks.com, across roughly 101 categories. Sounds like abundance. It is repetition. 247 hero variants, one outcome. 311 “feature” variants, one outcome. Collapse the outcome-identical ones and 1,816 blocks become about 19 archetypes. It is not 1,816 things. It is the same 61 atoms, restacked into marketing furniture 1,816 times.
That is how many of them are a decision surface. Not one block helps a human make the call a machine just put in front of them. Zero.
61 primitives. The real vocabulary. Small, ordered, finite.
Hero 247 · Feature 311 · Pricing 96 · Bento 53 · Footer 44 · … · 101 categories, ~19 archetypes
Not one block carries the anatomy of a decision.
What happened here?
The catalog is sorted along the wrong axis. Picture a toolbox organized by color instead of by function. Looks like choice, does nothing for you when you need to turn a screw.
- It is sorted by “how does it look”, not “what is it for”.
- hero, pricing, testimonial, stats-grid: none of these categories answers a question a human has at the moment of deciding.
- For an AI building from it, that is not abundance, it is fragmentation. Block 4325 here, 3421 there, same result, different code. No agent builds a consistent system out of 1,816 ways to do the same thing.
So what does it mean?
Not “curate the best 60”, that measures on the same wrong axis. Instead: build a vocabulary for decisions. And it falls out of a single question. What does a human need to decide well with a machine?
- The proposal. As a commitment, not a menu. The menu is already the surrender.
- The why. Only the causal facts, not the whole log.
- The confidence. And above all, where it gets shaky.
- The rejected alternatives. So you can see the machine did not tunnel.
- The consequence. Visible before you say yes.
- The reversibility. The most important thing, and almost never shown.
- Your move. Accept, edit, escalate, defer.
The kicker: you build all of it from the exact 61 atoms already there. The proposal is Card plus Button plus Badge. Confidence is a Badge. Alternatives are a Collapsible, closed by default. Consequence is an Alert before the commit. No new package, no new dependency. You add nothing, you restack the same bricks around the decision instead of around the landing page. That is the actual job: leaving things out. Not the pretty minimalism of white space and big type, but throwing out everything that is not the decision.
And what does it not mean?
- Not “shadcn is bad”. The 61 atoms are exactly right. The problem sits one layer up, in the marketplace.
- Not “less is automatically better”. An empty catalog helps nobody either. It is about the axis, not the number.
- And before anyone counters: the 19 archetypes are a structural comparison over the public catalog, not a line-by-line code diff, the code is behind a paywall. And yes, “checkout is a decision”. Sure. But the checkout blocks ask “which credit card”, not “is this right, and what happens if I do it”. Those are forms, not decision surfaces. The zero stands.
So now what?
Look at your own product. Count the moments where a human approves, rejects or overrides what a machine proposed. Then count how many components you have for exactly that moment. Probably zero. Like the rest of the industry.
That is where the work is, and the edge. The catalog will not hand it to you, it is selling to the wrong audience.
tl;dr
Not too many blocks, the wrong taxonomy. The machine does not decide, good design is what it leaves out.
How you actually build a decision surface, one that leaves out instead of piling on, is the next post. With code, not opinion.
Objections, additions, a catalog that gets it right after all? Bring them on.