Development··3 min read

Building Frontend with v0: How Far Can It Go?

I fed a real project's UI into Vercel's v0 and found the limits

"Can't We Just Have v0 Do This?"

We needed a new admin dashboard at work. The designer handed over 18 pages of Figma mockups. While I was staring at them, a colleague said, "v0 is supposed to be good now -- want to try it?"

I was skeptical. AI building frontend? But we had some time before the deadline, so I decided to experiment. Fed v0 the most complex page -- the dashboard main view.

First Result: Better Than Expected?

I wrote a fairly detailed prompt. "Dashboard layout with sidebar, four KPI cards at top, two charts in the middle, recent orders table at bottom. Dark theme. Use shadcn/ui."

Results appeared in 7 seconds. The layout was correct. KPI cards, charts, all present. The overall structure was about 70% similar to the Figma mockup. A genuine "oh?" moment.

But this is where the problems started.

Details Fall Apart

Colors were off. Figma had primary as #2563eb but v0 generated #3b82f6. Subtly different, but designers notice immediately. Font sizes were wrong. Card spacing, padding, border radius -- everything "close but different."

I tried feeding the Figma URL directly. "Make it exactly match this design." Results improved slightly, but still not pixel-perfect. Fixing the differences took 2 hours. Building from scratch would have taken about 3 hours. Time saved: 1 hour. (Is that meaningful?)

Responsiveness Is Especially Bad

Desktop layout was passable. But mobile view was a mess. Sidebar just vanished, or charts overflowed off-screen. Adding "make it work well on mobile" as a follow-up prompt broke the desktop layout.

Ended up doing all responsive work manually. Setting Tailwind breakpoints one by one remains the most accurate approach. This seems to be an area AI hasn't cracked yet.

What About Code Quality?

I dug into the generated code. TypeScript types were mostly any or missing entirely. Component separation? Everything crammed into one 400-line file. Can't ship this to production.

The upside: it used shadcn/ui components appropriately. Button, Card, Table were all well-utilized. But anything requiring custom logic degraded sharply. State management especially -- useState everywhere, unnecessary re-renders scattered throughout.

So Where Is It Actually Useful?

My conclusion:

Prototyping. For showing a product manager "roughly this direction" -- it's perfect. A plausible-looking screen in 5 minutes. Our team actually started generating v0 prototypes before planning meetings and the reaction was positive.

Design exploration. "What would this layout look like?" for quickly testing ideas. You can generate multiple variations fast.

Production code. Not yet. Code quality, responsiveness, accessibility -- all require manual work.

One Month Later, Honest Assessment

The admin dashboard ended up being 90% hand-coded. What v0 contributed was the initial layout idea and some UI patterns. I could have built it without v0.

But one thing I'll acknowledge: starting becomes easier. The moment of staring at a blank file thinking "where do I begin?" disappears. v0 generates something, and you iterate from there. Psychologically, that's comfortable. (Something like blank canvas anxiety.)

I'll try it again in six months. It's improving fast. But right now, my hands are still faster and more precise.

Related Posts