The best vibe coding tools, ranked by what they ship
Every list of vibe coding tools ranks them by speed and features. We ranked them by what actually ends up in production — the defaults, the secrets, the exposed surface.
Every “best vibe coding tools” post you can find on Google ranks the tools the same way: by what they let you build fastest, with the shiniest features, and how well they handle TypeScript autocomplete. Useful if you’re picking a tool. Less useful if you’re trying to figure out which one is going to leak your customer database next quarter.
This post does the other ranking. Same tools, same writers (the people behind Patchable scan apps built with all of these). The question we answer: when one of these tools ships your app to production, what does it actually ship?
The TL;DR ranking, then the reasoning:
- Claude Code — best defaults, most honest, takes the longest.
- Cursor (chat mode) — same code Claude writes, faster turnaround.
- v0 / Vercel AI — safe-by-default for components, less so for full apps.
- Cursor (agent mode) — fast and capable, prone to “make the error go away” anti-patterns.
- Bolt.new — fastest to demo, the demo is what ships.
- Lovable — easiest to ship, easiest to ship a public database.
- Replit Agent — most autonomous, also most likely to commit a
.envto git.
Now the why.
What “ships better” actually means
A few axes we evaluated each tool on:
- Default secret handling. When you ask the tool to integrate with a third-party API, where does it put the secret? Server-side env? Client bundle? Hard-coded literal?
- Default database posture. When it provisions or connects to Supabase / Postgres / Firebase, does it enable security on tables it creates?
- Default auth pattern. When you ask for a privileged page, does the protection it generates work server-side, or is it UI-only?
- Honesty. When you ask “did you actually do X?” after a change, does the tool tell you the truth?
- Reversibility. If the tool makes a mistake, can you tell from the diff?
A tool that scores well on these is one we trust to ship. A tool that doesn’t is one we use, but with a checklist after every deploy.
1. Claude Code
The most boring “best in class” rating possible, but it’s deserved. Claude Code’s defaults are the best of the bunch. It pushes back on shortcuts that ship problems. It’s transparent about what it just did. When it doesn’t know something, it asks.
The only knock is speed. It plans, then writes, then explains, and the loop is slower than Cursor’s agent mode. For a prototype you’ll throw away tomorrow, that’s overhead. For a thing that’s going to production, it’s exactly the overhead you want.
See Vibe coding with Claude for the three patterns Claude still gets wrong, and the system prompt that catches them.
2. Cursor (chat mode)
Same underlying model in most cases (Claude Sonnet/Opus or GPT). The difference is workflow. Chat mode is “AI suggests, you review, you accept.” That review step catches the same patterns the system prompt catches, just at the human layer.
If you can discipline yourself to use chat mode for everything that touches auth, payments, or the database — and only switch to agent mode for boilerplate UI work — Cursor is roughly tied with Claude Code in security posture.
3. v0 / Vercel AI
v0 is a different category from the others — it generates components, mostly, not full apps. That narrower scope is what saves it. Generating a React component doesn’t tend to introduce secrets-in-bundle issues, because there are no secrets to put anywhere.
When v0 generates full-app scaffolds, it inherits all the Next.js patterns, which are mostly good. The trap is that the patterns that work for v0’s official examples — getServerSideProps, route handlers — sometimes get blended with patterns from older React tutorials in the model’s training data. Read the auth code yourself.
4. Cursor (agent mode)
Same engine as chat mode, no human review step. This is where the “make the error go away” patterns come in — disabling RLS to make a query work, smuggling service role keys into the client, setting CORS to * to unblock the call. See Vibe coding with Cursor for the rules file we use to prevent these.
We don’t recommend against Cursor agent mode. We use it. We just don’t use it for anything that touches production data without the rules file in place and a scan afterward.
5. Bolt.new
Bolt’s superpower is going from prompt to deployed demo in under a minute. It’s a remarkable engineering accomplishment. The trade-off: the demo is the product. There’s no staging, no review, no human-in-the-loop. What Bolt builds is what ships.
What Bolt builds, in our experience, is functional. It also tends to:
- Hard-code API keys “for the demo” and then forget to move them server-side when you ask for a “real” deploy.
- Skip auth scaffolding entirely unless you mention it specifically.
- Default to maximally permissive everything because the goal is the demo working.
We’ve seen Bolt-built apps shipped with the OpenAI key in plain JS more often than any other tool except Replit Agent.
6. Lovable
Lovable lands here for one reason: every Lovable app uses Supabase, and Supabase has Row-Level Security, and Lovable does not reliably enable it. The combination is “the database is public” more often than any other class of issue we see.
This isn’t to say Lovable is bad. Lovable is the easiest tool to ship an actually-functional app from, and that matters a lot. It just requires the Lovable security checklist every time you deploy. If you do the checklist, you’re fine.
7. Replit Agent
Replit Agent is the most ambitious of the group — fully autonomous, end-to-end, no human in the loop unless you ask for one. That ambition is great for first-time builders. It’s also why Replit-built apps top our incident list.
The full breakdown is in Vibe coding with Replit Agent. The short version: when the agent’s loop optimises for “feature works,” the path of least resistance is “remove the thing that’s preventing the feature from working.” Often that thing is the security check.
A note on the tools we didn’t rank
GitHub Copilot, Codex, Aider, Continue — we use these. They’re not on the list because they don’t really “build apps” in the same way the seven above do. They write code at smaller granularity, you review more, the failure modes are different. The patterns in this post don’t apply the same way.
What this list is for
If you’re choosing a tool: pick the one whose trade-offs match how you ship. There’s no “best” here, only “best for what.” Claude Code if you want defaults you can mostly trust. Cursor if you want speed with a review step. Lovable if you want to ship today and check what you shipped tomorrow.
If you’re worried about what you already shipped: don’t pick a different tool. Run Patchable on the app you already built. We tell you what’s actually exposed — regardless of which tool wrote it — and give you the fix as a prompt your AI can run. Free to scan. You only pay if there’s something to fix.
The best vibe coding tool is the one that ships the app you want. Patchable is the one that tells you what your app is actually shipping. Run the scan.
Related reading
- The vibe coding security guide — the pillar piece.
- Vibe coding security risks — the 7 patterns across AI tools.
- Is vibe coding bad? — the honest answer.