- Lovable
- Lovable projects usually break at the Supabase edge: environment variables that never reached production, or row-level security left open on a table that holds real customer data.
- Bolt
- Bolt ships fast and leaves the build config behind. The deploy fails on a missing package, a Node version, or an API key that only ever existed in the preview.
- Replit
- Replit apps run fine in the workspace and 500 on a real domain: ports, file paths and secrets that were never wired up for the deployed process.
- Cursor
- Cursor edits confidently across files it has not read. Two features end up disagreeing about the same state, and the bug moves every time you fix it.
- v0
- v0 gives you the interface, not the wiring. Forms post to nothing, server actions are still stubs, and auth is a component rather than a session.
- Windsurf
- Windsurf refactors reach further than intended. Imports, types and routes drift apart until the build stops on something unrelated to what you changed.
- Base44
- Base44 apps hit their ceiling at data and roles: the model that fit the demo cannot carry a second kind of user without redoing what sits underneath it.
- Claude Code
- Claude Code writes real code, which means real dependencies, migrations and tests. When it breaks, it breaks somewhere prompting cannot reach.