June 1, 2026

Vibe-Coded Products Look Shipped But Feel Broken — Why AI-Generated Apps Still Need Design Thinking

By Drawbackwards

Share
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*
*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*

Shipping has never been faster. A founder with a clear prompt and an AI coding tool can generate a working interface in an afternoon — screens, buttons, forms, even reasonable-looking layouts. It feels like the future. And in some ways, it is.

But here's what we keep seeing: the product looks shipped and feels broken. The screens exist, but the experience doesn't. Flows dead-end in unexpected places. Navigation patterns contradict themselves from one page to the next. The app does things, but users can't figure out which things to do first, or why. The code compiles. The product doesn't cohere.

This is the gap that vibe coding doesn't close — and the gap where products actually succeed or fail.

What exactly is vibe coding, and why is it everywhere?

The term "vibe coding" describes a workflow where developers (and increasingly non-developers) use AI tools to generate application code from natural-language prompts. Instead of writing logic line by line, you describe what you want, and the model produces it. The approach has gone mainstream at a pace that surprises even its advocates. According to a recent Hashnode survey, 92% of US developers now use AI coding tools daily, and 46% of code committed in 2025 is AI-generated.

That velocity is real and worth respecting. For founders operating with thin budgets and tight runways, vibe coding compresses the distance between idea and artifact. You can test concepts faster. You can show investors something tangible before you've hired an engineering team. The barrier to building has dropped to nearly zero.

But a barrier and a standard are different things. The barrier to building dropped. The standard for what users will tolerate didn't.

Why does trust in AI-generated code keep falling?

Here's a number that should give founders pause. Developer trust in AI-generated code dropped from 77% to 60% in a single year. The people closest to the output — the ones reviewing it, debugging it, shipping it — are growing less confident in it, not more.

This tracks with what we observe in practice. AI models are exceptional at generating plausible-looking solutions. They are not exceptional at generating coherent ones. A large language model will produce a login screen, a dashboard, a settings page, and a checkout flow that each look reasonable in isolation. What it won't do is ensure those pieces tell a consistent story, guide the user through a logical sequence, or reflect the actual priorities of the people using the product.

On Hacker News, a thread about a client who "took over development by vibe coding" resonated because the scenario is becoming common: a functional codebase riddled with deep UX debt. Multiple developers noted that LLMs "never push back on adding things." Every prompt gets a yes. Every feature request gets implemented. The result is what one commenter called "an engineered mess no user can make sense of."

This is the pattern. Vibe coding is an additive process by nature. The model builds what you ask for. It doesn't ask whether you should be asking for it.

What's actually missing from a vibe-coded product?

The gap isn't code quality, though that matters. The gap is design judgment — the set of decisions that determine whether a product works for people, not just whether it works.

Three specific disciplines are absent when you skip from prompt to product:

Research. A vibe-coded app reflects the founder's assumptions about what users need. Those assumptions might be right. They're more often incomplete. Design research — interviews, observation, usability testing — reveals the behaviors, motivations, and mental models that no prompt can encode. You can't describe what you don't know, and you can't prompt for what you haven't observed.

Information architecture. This is the structural layer that most vibe-coded products lack entirely. How is content organized? What's the hierarchy of actions on each screen? Where does the user go after completing a task, and where do they go when they get stuck? AI will generate pages. It won't generate the relationships between them — at least not in a way that reflects how real people think about the problem your product solves.

Pattern consistency. Good products feel predictable. Not boring — predictable. The same type of action looks and behaves the same way everywhere. Navigation follows a logic you absorb without thinking about it. Vibe-coded apps, built prompt by prompt, tend to introduce subtle inconsistencies that compound as the product grows. Each screen was generated fresh, so each screen makes slightly different assumptions about how things should work.

The cumulative effect is what we call experience rot — except instead of accumulating over years of unmanaged feature additions, it's baked in from day one.

Can't you just iterate with more prompts?

This is the most common counterargument, and it's worth taking seriously. If the first output isn't right, why not keep refining? Prompt, review, prompt again. Iterative improvement through conversation with the model.

You can, and for certain surface-level problems, it works. Adjusting layouts, changing copy, fixing visual hierarchy — these are areas where prompt-driven iteration can genuinely improve the output.

But iteration without evaluation criteria is just motion. If you don't know what good looks like for your specific users, you're navigating by feel, hoping each change brings you closer rather than further away. We've seen this firsthand: teams that iterate enthusiastically on AI-generated prototypes, making dozens of changes, yet never closing the gap between "looks right" and "works right" — because they're optimizing the surface while the structure underneath remains flawed.

We saw this dynamic play out differently when working with Hyper to build an operating system for distributed manufacturing. The instinct was to jump straight to software. But the real work started with mapping the manufacturing processes themselves — understanding how people actually moved through their workflows before writing a single line of code. Process design before software design. That sequencing matters whether you're writing code by hand or generating it from prompts.

Where does vibe coding actually fit in the design process?

We're not arguing that AI coding tools are useless. That would be a foolish position and a wrong one. What we're arguing is that these tools belong at a specific point in the process — and that point isn't the beginning.

Think about the sequence that produces products people genuinely want to use. It starts with understanding: who are the users, what are they trying to accomplish, where are they struggling today? Then it moves to structure: what's the right information architecture, what are the core flows, what are the decision points? Then it moves to patterns: what interaction models will make this feel intuitive and consistent? Then, and only then, does it move to implementation — where AI coding tools can accelerate production dramatically.

We think about product experiences through what we call the Experience Success Ladder: Functional, Usable, Comfortable, Delightful, Meaningful. Vibe coding is remarkably good at reaching the first rung. It produces functional output. The challenge is that users don't stay with products that are merely functional. They stay with products that are usable, comfortable, and — in the best cases — meaningful. Each rung above "functional" requires design decisions that emerge from understanding people, not from generating code.

When we worked with Acclaris to simplify complex HSA experiences for 1.4 million account holders, the core problem wasn't technical. It was conceptual. Health savings accounts are inherently confusing, full of rules and edge cases that make people anxious about making mistakes. The design work involved translating that complexity into an experience that felt manageable and clear — work that drove 10x enterprise sales revenue. No prompt would have surfaced the specific anxieties and mental models that shaped those design decisions. That came from research. The technology followed.

What should founders do right now?

If you've vibe-coded a prototype and you're wondering why users seem confused, the answer probably isn't more features or more prompts. It's stepping back to do the work that should have preceded the code.

Start with five user conversations. Talk to real people who represent your target audience. Watch them try to use what you've built. Note where they hesitate, where they tap the wrong thing, where they ask "what happens if I click this?" Those moments are design problems that more code won't fix.

Audit your information architecture. Map every screen and every flow in your current product. Ask: does this structure reflect how users think about this problem, or how the prompts happened to organize it? If you can't articulate the logic behind your navigation, your users can't either.

Establish pattern rules before you generate more code. Decide how your product handles recurring interactions — confirmations, errors, navigation, empty states — and apply those decisions consistently. This is a design system in miniature, and it's the difference between an app that feels like one product and an app that feels like twelve features looking for a home.

Use AI tools for acceleration, not for architecture. Once you've made the structural and strategic decisions, AI coding tools can help you implement them faster than ever. That's a genuine advantage. The mistake is letting the tool make the decisions it isn't equipped to make.

We helped Tuft & Needle reduce support contacts by 50% not by adding features but by identifying where the experience itself was generating confusion — and fixing it. The lesson applies directly here: when users struggle with your product, the answer is usually less about what you've built and more about how it's organized and presented.

The speed is real. The shortcut is an illusion.

Vibe coding has changed the economics of getting to a prototype. That's significant, and founders are right to take advantage of it. But a prototype that looks shipped isn't a product that works. The research, architecture, and design judgment that separate the two have never been things you could skip. The tools have changed. The work hasn't.

When user success is at the forefront of everything you build — not just the code, but the thinking behind it — business success follows. That's true whether you're writing every line by hand or generating it from a prompt. The question isn't how fast you can ship. The question is whether what you shipped is worth using.

If you're staring at a vibe-coded product and sensing the gap between what it does and what it should feel like, that instinct is worth following. The best next step isn't another prompt. It's a conversation about what your users actually need — and how to design backward from there.

Get Educated

Get monthly insights on innovation and UX.

Read Next

AI Makes Average Design Cheap — That's Why Taste and Strategy Are More Valuable Than Ever

Ask Drawbackwards
What's your biggest product challenge right now? We'll show you relevant work and explore how we can help.