“The UI is dead. Or so I keep hearing.” That is how a PostHog essay opened in August, and I keep hearing it too. Components are dead. Design systems were a phase. The model will write the screen, or skip the screen and answer in a chat box, and the work a lot of us spent years on can be quietly retired.
I understand where it comes from. A prompt can produce a page that looks finished in a minute, and I use these tools every day. But “looks finished” is doing a lot of work in that sentence. Lately the screens I see have a different problem. They look finished, and they look like each other.
Everything has the same face
This is now measurable. In September, Designpixil fetched the homepages of 409 apps from the Made with Lovable showcase and 423 Y Combinator startups from the 2025 and 2026 batches, then read their stylesheets. 40% of the Lovable-built apps carried at least three of five default design markers. Among the YC startups it was 8%.
Homepages, Sept 2026
The number I keep coming back to is the smallest one. A third of the generated apps ship a corner radius of exactly 0.5rem, the value the default shadcn/ui theme comes with. That is one number in one file, and it changes how every card, button, and input feels. Nobody chose it. It was accepted.
Defaults
The study is careful about its limits, and they matter. It measured code, not appearance. It looked at homepages only. Plenty of YC startups use AI tools too. So this is not AI against humans. It is defaults against decisions, which is the more useful line anyway.
Even the model maker says so
Anthropic has written about this in a post on frontend design. Without guidance, it says, Claude will almost always reach for Inter, purple gradients on white, and minimal motion. It calls the cause distributional convergence. Safe choices dominate the training data, so the model samples from the safe center. The fix it ships is a prompt that tells the model to avoid its own defaults, and the same prompt warns that the model drifts to new favorites, like Space Grotesk, once the old ones are ruled out.
I find that more convincing than any hot take. When the people who build the tool write instructions to stop it making everything look alike, the sameness is not a matter of taste.
The fair counterpoint is that this is not new. Sites looked alike in the Bootstrap years, and every template wave since. True. What changed is speed and reach. A default that used to take a team a sprint to ship now ships in a minute, to everyone at once, and nobody had to like it first.
The interface is where the decisions live
UI was never the buttons. It is the set of decisions about what a person sees first, what they can change, what happens when the data is late, and what the screen says when something goes wrong. Those decisions do not disappear when a model writes the markup. They get made anyway, by default, by whatever was most common in the training data.
A chat box is also an interface. So is a generated dashboard, a streaming answer, and the confirmation before an action you cannot undo. If anything there is more UI now, arriving faster, with fewer people having thought about it.
Review more, not less
When producing a screen was slow, the slowness was a kind of review. Someone sketched it, someone argued about it, someone built it and noticed the empty state was missing. Generation removed most of that friction. The thinking it used to force now has to be done on purpose.
Researchers at the University of Washington and Microsoft Research reach the same place in a paper on design homogenization in vibe coding. They argue that the push for frictionless generation makes homogenization worse, and propose productive friction: deliberate points where a creator is asked to challenge the default instead of accepting it. A good UI review is exactly that kind of friction.
So I want UI review to get more time than it ever has. Not a glance at a screenshot in a pull request. A real pass:
- Does this screen fit our product, or would it fit any product?
- What does it look like empty, loading, failed, and full of real data with long names?
- Did it use the system we already have, or invent a near copy of a component we already ship?
- Which values were chosen, and which were accepted? Font, radius, primary color, gradient.
- Can someone use it with a keyboard, at 200% zoom, on a bad connection?
- Is there one idea here that a person had, or is it the average of every landing page?
That last question is the one I care about most.
I like the human parts
The best work I have been part of did not come out of a first draft. It came out of a whiteboard erased three times. A debate about whether a token was a color or a meaning. A component we shipped, watched people misuse, and redesigned. A naming argument that went on too long and was worth it.
Mistakes were part of that, and so was what we learned from them. A team that once broke a table on a small screen remembers to check the small screen. A designer who shipped a confusing empty state writes a better one the next time. That memory is the craft. It is also the part a model does not carry from one prompt to the next.
We built a lot of apps that way, and we enjoyed it. Brainstorming the odd idea that did not fit the template. Building the design system that made the next app faster. Arguing about spacing because spacing was how the product felt. I do not want to hand that to a default and call it progress.
Use the tools, keep the taste
None of this is an argument against the models. They are good at the first draft, the boring variant, the rename across forty files. Let them do that. Then put a person in front of the result who has opinions and the time to use them.
Components are not dead either. They matter more now. A model composing from a system you designed gives you your product, faster. A model composing from nothing gives you everyone's product.
