Each vibe-coding tool has a personality — the defaults it ships with, the shortcuts it takes, the things it forgets to remind you about. Here's what we see over and over.
Lovable
Strong template, generous defaults, integrated Cloud. What ships broken most often: untouched meta descriptions ("Lovable Generated Project" still in the <title>), the blank-page placeholder left in on subroutes, and public tables where the "insert own" policy was created but the "select own" policy was forgotten. On the marketing side — headlines that describe a category ("A modern SaaS starter") instead of a promise.
Bolt
Great for speed, dev-server-first. What ships broken most often: env vars committed into the repo, the "Made with Bolt" badge still visible in production, and API keys pasted into client components because it was faster than wiring up a server function.
v0
Best UI polish out of the box, especially for landing pages. What ships broken most often: copy that reads like every other v0 landing page (the "Build faster. Ship faster. Iterate faster." rhythm), shadcn demo strings left in place ("This is a card component."), and no favicon.
Cursor
Cursor isn't a vibe-coding tool the way the others are — it's your IDE — but its output has its own tells. What ships broken most often: aggressive over-abstraction (nine files for a login button), inconsistent naming (camelCase and snake_case mixed in the same file), and comments that describe what the AI thinks it did instead of what the code does.
What none of them fix for you
Marketing. All four ship you a working web app with placeholder copy. Zero of them rewrite your headline for you at deploy time. That gap is 90% of what we roast.