Back to all blogs
#ai
#frontend
#claude
#react
#ux
July 29, 2025
6 min read
A blog post byThereallo

The Uncanny Valley of AI Frontends

LLMs are getting better at React, CSS and HTML, but something still feels off.

You know that feeling when you see a frontend and immediately think "AI made this website"? I get it every time.
Ever since modern LLMs like Claude 3.5, GPT-4.1, Gemini 2.5 Pro, and others dropped, AI has gotten genuinely good at Tailwind and CSS. But there's something plastic about it. Something repetitive. The latest models have improved things, but that uncanny feeling never goes away.

Just go to any AI coding tool, claude.ai artifacts, v0 by Vercel, bolt.new, or Lovable, and ask it to make something. Anything. The result will tell you that it is "AI" even if nobody told you it was generated. These have become the "vibe coding tools" of 2025. People on Twitter share AI creations constantly, and they all have this unmistakable feel.
The way AI uses shadows gives it away immediately. The element placement. The layouts. The button styling. It all feels robotic. It all says "AI made this React component."
I found that LLMs love colors way too much. Tell them to create a UI without proper instructions like "Create this UI using HTML and Tailwind classes" and they make something that looks like Pride month exploded on your screen. AI loves dropping shadows on everything too. I know real developers do this, but when AI does it, it feels mechanical. Easily spotted.
The signs are everywhere. Wrong padding choices. Incorrect font weights. Blur effects that end way too early. Buttons nested inside other buttons. The corner radius choices. The way it aligns items. Text that breaks without trimming because the string is too long. And those gradient backgrounds, AI has a distinct preference for purple-to-blue or pink-to-purple gradients that immediately tells you that it's AI-generated.

Here's what really bothers me about AI frontends: they're spaghetti code. Yes, they work. But you can't edit them because they're genuinely a mess. People who keep prompting a component or file end up with way too much tech debt. The product looks awful.
AI loves shadcn/ui. Whether it's Claude, v0, bolt.new, or Lovable, they all default to shadcn/ui. The training data has shadcn/ui in it. The pattern is always the same: use shadcn/ui components, then style them further based on user instructions. So they keep stacking Tailwind classes on top of the shadcn/ui button. People who "vibe code" keep prompting for changes. The tech debt grows and grows.
I think the fundamental issue is that most LLMs love Next.js and React. The training data is heavily biased toward React code. They can't get Svelte runes right 90% of the time without proper prompting. The ecosystem bias shows.

Hover animations are the biggest giveaway of all. Modern AI models love hover animations so much that they add them to every button. All those overly visible shadows and hover:scale-110 on hover. The entire button becomes the accent color. The glow they add to buttons. Huge giveaways.
I found that blur backdrop is where AI completely fails. It can't get blur backdrop right at all. The effect always looks wrong or doesn't work properly.
AI also has a font problem. It only knows two fonts: Inter and Geist. Vercel loves them, by the way. That's probably why they're so embedded in the training data.

Human designers come up with the vibe first. Maybe they use tools like tweakcn or customize the base shadcn/ui components. Real designers find the vibe first. They find the language for their projects. Fonts. Corner radius. Color schemes. Design systems.
AI can't do this. With proper prompting and correct guidance, LLMs can make decent frontends. But the spaghetti className situation and tech debt cannot be avoided. That requires a human to define a style first. Otherwise, they can't do anything meaningful.
LLMs are made to predict the next token, so they're just coming up with things that are common. That's why every frontend generated by AI looks the same. They default to patterns they've seen before.
Humans duct tape things. We use weird workarounds. AI knows that for backends. For frontends, it just does what it always does. It can't "duct tape" a frontend design the way humans can.

Don't get me wrong. AI has gotten way more powerful over the years. Modern models like Claude 4, GPT-4.1, Gemini 2.5 Pro, and specialized tools like v0 by Vercel, bolt.new, and Lovable are better at React/HTML frontend design. They know how to adhere to designs with good prompting.
The results look "fancier" now. In a robotic, AI, uncanny way. But they are fancier. Three.js has a really weird learning curve, and modern LLMs are amazing at it. React useState and useEffect plus frontend changes? They've gotten incredibly good.
But here's the thing. People "entering the field" are usually just people who don't even know how to code JavaScript in the first place. They mindlessly prompt over and over. "Vibe code" until a working product comes out. They're not learning. They're just generating.

I believe the uncanny valley will never fully disappear. Human instincts can't be replaced. If AI frontends become indistinguishable from human designed ones, it would be the end of my career as a frontend developer.
But I don't think that's happening soon. AI still sucks at creating 3D models. Although it knows Three.js, the 3D models are absolute trash. A human still needs to be present to make them. Same with SVGs. AI can't replace creatives.
Good design requires a skilled designer with taste. There are tiny details that matter. A button with glowing borders that follows your cursor. Check out jh3y on Twitter, ex-Vercel and Google employee, who makes amazing, interactive, and unique components. AI can't replicate that level of creativity and human touch.
AI-generated frontends will always be inferior. They're based on pattern matching, not understanding. They can't understand the psychology needed to create truly human-feeling interfaces.

The reason humans can spot AI-generated interfaces so easily comes down to similar design patterns. AI defaults to what it has seen before. It can't break rules creatively like humans do.
The uncanny valley tells us that good design is more than just following conventions. It requires intuition, taste, and understanding of human psychology that goes beyond predicting the next token.
That's why I still believe in human designers. While AI gets better at generating code, it will never replace the creative spark that makes interfaces feel alive and human. The plastic feeling will always be there, no matter how sophisticated the models become.
And honestly? I'm okay with that.