Vibe Coding: The Prototype That Finally Behaves

Vibe coding is what happens when a designer stops drawing a picture of an interaction and starts building the interaction itself. Instead of a click-through mockup that approximates how a panel might slide open, the designer describes the panel in plain language to an AI coding tool, watches it appear as working code, and taps it on an actual phone. The gap between “this is what I mean” and “this is what it does” — the gap that used to swallow entire sprints — is starting to close.

1. Why This Matters Now

For as long as software has had a design phase, there has been a translation problem. A designer specifies a scroll behavior, a hover state, a spring-loaded transition; a developer reads the spec, makes reasonable assumptions, and builds something close but not quite it. Multiply that by every micro-interaction in a product and you get the quiet, compounding drift between what was intended and what shipped. Redlines, annotation layers, and Figma prototypes with click-triggered overlays were all attempts to narrow that gap, but they were still describing motion with static tools — a losing proposition.

What changed is that large language models got good enough at writing functional front-end code that the description and the implementation can now be the same act. When a designer types “make the card expand on tap, with the image cross-fading as the text slides up,” a tool like Vercel’s v0 doesn’t produce a picture of that — it produces a React component that actually does it. The scroll timing, the easing curve, the state change on tap: none of it has to survive a second, lossy retelling by someone else. This is the underlying shift — not that designers are becoming engineers, but that intent and implementation have collapsed into a single conversational step.

Traditional prototyping

Static frames or click-through overlays approximate motion. Real timing, physics, and edge cases are described in specs and reinterpreted later by a developer.

Vibe coding

Natural-language prompts generate functioning code. The designer tests the actual scroll, hover, and state behavior on a real device before anyone writes production code.

The difference isn’t fidelity — it’s whether the thing you’re testing is real.

2. The Tools Making It Possible

None of this works without a specific generation of tools that treat natural language as a legitimate input for production-grade code, not just boilerplate. Vercel’s v0 takes a text prompt or an uploaded image and returns a working React component, styled and interactive, that a designer can keep refining conversationally. Replit and Bolt go a step further on convenience: both let you generate, run, and deploy a working app straight from the browser, with no local environment to configure — which matters enormously for designers who don’t want to become part-time DevOps engineers just to see their idea move.

For designers working inside an existing product rather than starting from a blank canvas, Cursor and Claude Code serve a different purpose. Both work conversationally against a real codebase, meaning a designer can ask for a specific screen’s transition to be adjusted in context — using the actual components, tokens, and data the product already runs on — rather than reinventing it from scratch in an isolated sandbox. The choice of tool isn’t really about which is “best”; it’s about whether you’re testing an idea in isolation or refining something that already lives inside a real system.

3. The Designer’s Process

Vibe coding is not “type a prompt and ship it.” The designers getting real value from it follow something closer to a disciplined loop, and the discipline is the part that’s easy to skip.

Define exactly what you’re testing — a single interaction or state change, not the whole flow. Vague prompts produce vague prototypes.

Describe the layout and state changes in plain language, being specific about triggers, timing, and what happens on failure or reversal.

Generate a first draft and click through it on a real device, not just a browser window — touch targets and scroll physics behave differently on glass.

Iterate with short, targeted follow-up prompts rather than re-describing the whole thing each time.

Once the interaction feels right, share the validated intent with developers — not the raw generated code as a finished deliverable.

The loop is short by design: define, describe, test on device, refine, hand off intent.

That last step is where a lot of the value — and a lot of the risk — lives. A vibe-coded prototype proves that an interaction works and feels right. It is not, on its own, evidence that the code behind it should go anywhere near a production branch.

💡 Pro tip — Hand developers the validated interaction, not the file. A short annotated recording or a live link paired with a plain-language description of the behavior travels better than a pull request full of AI-generated code nobody on the team has reviewed.

4. The Mistake That Undermines the Whole Point

The most common failure mode isn’t technical — it’s a trust problem. Because AI-generated interfaces tend to look finished, it’s easy to mistake “this looks like a real screen” for “this is a real screen.” Accessibility is usually the first casualty: missing focus states, no keyboard path through a modal, contrast that was never checked, alt text that was never written. None of it shows up when you’re tapping through a demo on your own phone, and all of it shows up the moment a real user with a screen reader or a keyboard-only workflow tries to use what shipped.

Edge cases hide the same way. A generated prototype will happily demonstrate the happy path — the empty state, the error state, and the slow-network state are rarely part of the prompt, so they’re rarely part of the output. A plausible-looking screen is not the same thing as a correct one, and the fluency of AI-generated code makes it unusually easy to stop scrutinizing it. Treating a vibe-coded prototype as anything more than a validated hypothesis — production-ready, accessible, or complete — is the mistake that turns a genuinely useful shortcut into a genuinely dangerous one.

The loop tightens — but the responsibility for what’s actually built doesn’t move with it.

Closing thoughts

What’s genuinely new here isn’t that prototypes can look more real — Figma prototypes have looked real for years. It’s that the thing you’re testing can now be the actual mechanism, not a simulation of it. That’s a meaningful upgrade to how design intent survives contact with engineering. But the tools that make prototyping faster don’t make judgment optional; if anything, they make it more necessary, because the output is more convincing than it’s ever been. Vibe coding is best understood not as a way to skip developers, but as a way to arrive at them with a question already answered — and to be honest about which questions it never asked.

Design Daily Life · Notes on design, daily

한국에 온 외국인 친구가 있나요? 메뉴 번역·택시 요금·약국 카드가 한 앱에 있는 K-OREA를 알려 주세요.

Visiting Korea? K-OREA puts menu scanning, taxi fare guidance and a pharmacy card in one app. Get it on the App Store.

댓글 남기기