v0: What Engineers Actually Found in Production
A practitioner's honest look at v0 by Vercel after months of real frontend work. What it nails, where it breaks, and who should bother.
The Promise vs The First Hour
Most teams who tried v0 in the first six months describe the same arc. You sign in, type something like “build me a settings page with a sidebar nav, dark mode toggle, and a billing section,” and within 30 seconds you get a clean shadcn/ui layout with Tailwind classes that actually compiles. The first reaction, judging by the r/vercel and r/Reactjs threads from late 2024 and into 2025, was genuine surprise at how close the output sat to production-quality starter code.
That surprise wears off. What follows, in the words of one developer on HN, is “the long tail of fiddling.” You ask for a small change, the model rewrites half the component. You ask it to add a loading state, and you get one in three places and miss it in the fourth. The community consensus, pulled from dozens of practitioner posts, is that v0 is genuinely impressive for the first 10 percent of a project and noticeably less impressive for the next 40.
Where v0 Actually Delivers
The strongest signal across YouTube comment sections and dev blogs is around three specific use cases.
First, scaffolding marketing pages and landing sections. Practitioners consistently report that v0 produces clean, responsive hero sections, pricing tables, and feature grids in a single shot. One frontend lead on Reddit said his team cut their landing page turnaround from two days to about four hours, with most of the remaining time spent on copy and brand tweaks rather than layout.
Second, internal dashboards and admin panels. The combination of shadcn/ui primitives, Tailwind, and Lucide icons that v0 defaults to is well-suited to CRUD interfaces, settings pages, and data tables. Teams building B2B tools have posted before-and-after screenshots showing v0 output that needed only minor prop adjustments before integration.
Third, form-heavy flows. Multi-step forms, validation states, conditional fields. The model handles these well because the patterns are common in its training data. A senior engineer on the Vercel Discord mentioned that v0 generated a four-step onboarding wizard with proper error states in under two minutes, a task that would have taken her half a day to build from scratch.
Latency-wise, the first generation typically returns in 15 to 30 seconds for a moderate component. Iterations are faster, usually 5 to 10 seconds, because the model has the existing context. That feels responsive in practice, and several practitioners noted that the iteration speed is what makes the tool feel different from older code generation attempts.
Where It Breaks Down
The complaints cluster around four areas.
Complex state management. Ask v0 to build something with Zustand, Redux, or a custom context provider and the output gets unreliable. Developers on r/LocalLLaMA noted that v0 tends to invent its own state patterns rather than follow the architecture you specify. One thread had a developer complaining that v0 generated six different state management approaches across six iterations of the same component, none of which matched the codebase conventions.
Accessibility. The default output frequently misses ARIA labels, keyboard navigation, and focus management. A practitioner blog post from March 2025 walked through a v0-generated modal that couldn’t be closed with Escape and had no focus trap. The author estimated about 30 percent of generated components had at least one accessibility regression that needed manual fixing before shipping. For teams with WCAG compliance requirements, this is a dealbreaker.
Animations and transitions. Anything beyond basic hover states tends to break or get over-engineered. Practitioners report v0 adding Framer Motion when not asked, or producing CSS transitions that conflict with the existing design system. One team lead mentioned spending more time undoing v0’s animation choices than they saved by using the tool in the first place.
Non-React stacks. The model is heavily tuned for Next.js and React. Ask it to build something in Svelte, Vue, or Astro and the output quality drops noticeably. A HN commenter who tried v0 for an Astro project said the generated code used React patterns ported awkwardly to Astro components, which defeated the purpose of using a lighter framework in the first place.
The Cost Curve Nobody Mentions
This is the part that catches teams off guard. The per-message pricing looks reasonable on the Vercel pricing page, but the actual workflow is iterative. You don’t generate a component once. You generate it, screenshot it, ask for changes, regenerate, ask for more changes, and so on. Each iteration costs tokens, and the costs compound.
A team lead on Reddit tracked his usage over a month. He spent about $180 on v0 credits while building a single SaaS dashboard. His estimate was that the same work, done manually, would have cost his hourly rate of about $90/hour for 12 hours, so roughly $1,080. The savings were real, but they were not 10x. They were closer to 6x, and that was before factoring in the time spent reviewing and refactoring generated code.
Another pattern: teams who give v0 access to their codebase through the project context feature report higher quality output but also higher token usage per generation. One startup founder mentioned his monthly v0 bill jumped from $50 to $300 after he started using the project context feature heavily. He considered it worth it, but called it “the meter nobody warns you about.”
A third cost vector is the hidden engineering time. Practitioners consistently report that v0 output looks finished but isn’t. You need to review it for accessibility, refactor it to match your codebase patterns, add tests, and integrate it with your state management. One engineering manager estimated that for every hour of v0 generation, his team spent about 40 minutes on cleanup. That ratio is better than building from scratch, but it’s not the “10x productivity” picture that early marketing suggested.
Who It Fits (And Who Should Skip)
Based on the practitioner reports, v0 fits a specific profile well.
Solo founders and small teams of one to three people building MVPs in the Next.js, Tailwind, and shadcn/ui stack. The time savings are most pronounced here because there is no senior engineer to hand off the scaffolding work to, and the founder is doing everything themselves.
Frontend teams at companies that have already standardized on the Vercel ecosystem. If you are already deploying to Vercel, using shadcn/ui, and writing Tailwind, v0 slots in cleanly. The defaults match your conventions, and the output rarely needs to be rewritten to fit your stack. If you are on a different stack, the friction increases fast.
Teams that treat v0 as a starting point, not a finish line. The developers who get the most value are the ones who spend roughly 20 percent of their time on v0 and 80 percent on manual refinement. The ones who try to ship v0 output directly tend to post the most frustrated threads about accessibility regressions, inconsistent styling, and architectural drift.
Who should skip it: teams working on highly customized design systems, projects with strict accessibility requirements, anything outside the React ecosystem, and teams that already have a fast frontend workflow. If your average landing page takes a competent developer half a day, v0 might save you two hours, which may not justify the iteration overhead and the cleanup tax.
It’s also worth noting that v0 does not work well for teams who want tight architectural control. The model makes its own decisions about component structure, prop naming, and file organization, and those decisions don’t always match your team’s conventions. If you have a strong opinion about how a component should be structured, you’ll spend more time fighting v0 than you save.
What Teams Pair It With
The most common pairing pattern in the community is v0 for scaffolding, then Cursor or Claude Code for the deeper refactoring pass. Several practitioners described a workflow where they generate a component in v0, paste it into Cursor, and use the AI editor to add tests, fix accessibility issues, and integrate with the broader codebase. This combination reportedly gives you the visual generation speed of v0 with the codebase awareness that Cursor and Claude Code bring.
For design-heavy work, teams report using v0 alongside Figma Make or Galileo AI. The workflow is to generate the visual direction in one tool, then port it into v0 for code generation. A few design-focused teams mentioned using v0’s screenshot-to-code feature to convert Figma mockups into React components, with mixed but generally positive results.
Some teams have moved away from v0 entirely and adopted Claude Code or Cursor’s agent mode for full-stack generation. The reasoning, per a thread on HN from April 2025, is that the agent-based tools can read the existing codebase and maintain architectural consistency in a way v0 cannot. v0 is treated more as a “blank canvas generator” than a “codebase-aware assistant.” For greenfield projects, v0 wins on speed. For existing codebases with established patterns, the agent tools win on consistency.
A smaller group of practitioners use v0 primarily as a learning tool. They ask it to generate a component, then study the output to learn patterns they wouldn’t have thought of. This is a niche use case but it came up enough in the threads to be worth mentioning.
The Honest Verdict
v0 is a genuinely useful tool with a specific sweet spot. It produces high-quality scaffolding for the React, Tailwind, and shadcn/ui stack, especially for marketing pages, dashboards, and forms. It is fast, the output compiles, and the defaults are sensible enough that you rarely need to start from a blank file.
It is not a replacement for a frontend developer. It cannot maintain architectural consistency across a large codebase, it struggles with complex state, it misses accessibility roughly a third of the time, and the iteration costs add up faster than the pricing page suggests. Practitioners who treat it as a junior developer who needs supervision tend to get the most value. Practitioners who treat it as a senior developer tend to get burned within a week.
If you are a solo founder or a small team building in the Vercel ecosystem, v0 is worth the monthly subscription. The time savings on scaffolding work are real, and the cleanup overhead is manageable. If you are a larger team with strict standards, treat it as a prototyping tool and budget for a manual cleanup pass on everything it generates.
The tool is also evolving quickly. The project context feature, the screenshot-to-code capability, and the recent improvements to state management handling suggest Vercel is investing in closing the gaps the community has flagged. Whether they close them fast enough to keep pace with Cursor and Claude Code is the open question, and one that practitioners are watching closely.
For now, v0 is a solid addition to a frontend workflow, not a replacement for one. Use it for the parts it does well, pair it with tools that handle the parts it doesn’t, and don’t ship its output without a review pass.
If you’re working through which tools belong in your stack, book a 60-min Omni Audit — https://calendly.com/sam-mckay/discovery-call