The Complete Vibe Coding Production Checklist: From Prototype to Live Product
A five-phase checklist for taking any vibe-coded app from prototype to production. Covers security, reliability, code quality, deployment, and launch readiness — with links to tool-specific guides.
You've built your app with an AI coding tool. It works. It looks good. Now you want real users on it. The problem is that every AI tool — Lovable, Bolt, Cursor, Replit, v0 — optimises for getting you to a working prototype. None of them optimise for production.
This checklist covers the five phases between "it works" and "it's ready for real users." Work through them in order.
Phase 1: Security
Security gaps are the highest-risk issues in vibe-coded apps. Fix these first.
- [ ] No secrets in client-side code — API keys, database URLs, and tokens must be server-side only. The only acceptable client-side keys are public keys explicitly designed for browser use (like Supabase's anon key).
- [ ] Input validation on every endpoint — Every form, every API route, every server action that accepts user input must validate it. Client-side validation is for UX. Server-side validation is for security.
- [ ] Authentication on protected routes — Verify that every page and API route that should be behind auth actually requires a valid session. AI tools frequently miss routes.
- [ ] Row Level Security enabled (if using Supabase) — Ensure every table has RLS policies that restrict access by
auth.uid(). This is the most common security mistake in Lovable apps and affects other tools too. - [ ] HTTPS enforced — No HTTP access. All traffic encrypted.
- [ ] Security headers configured — Content-Security-Policy, Strict-Transport-Security, X-Frame-Options, X-Content-Type-Options at minimum.
- [ ] Rate limiting on public endpoints — Authentication routes, form submissions, and any public API must have rate limits to prevent abuse.
For a deeper security review, use our 15-point security checklist.
Phase 2: Reliability
A working prototype handles one user on a good day. Production handles many users on bad days.
- [ ] Error boundaries installed — A single component failure shouldn't crash the entire app. Wrap major UI sections in error boundaries.
- [ ] Error monitoring configured — Install Sentry or equivalent. Get alerted when errors happen in production, not when users complain.
- [ ] Loading and empty states — Every data fetch needs a loading state. Every list needs an empty state. AI tools almost always skip these.
- [ ] Session expiry handled — What happens when a user's auth token expires mid-session? If the answer is "the app breaks," fix it.
- [ ] Database queries optimised — Add indexes on frequently queried columns. Add pagination to list endpoints. Use connection pooling.
- [ ] No SQLite in production — If your Replit or Bolt app uses SQLite, migrate to PostgreSQL before launch. SQLite can't handle concurrent writes.
- [ ] Graceful degradation — If a third-party service goes down (analytics, email, payment provider), the core app should keep working.
To understand why AI-generated apps crash, read why your AI-generated app keeps crashing.
Phase 3: Code Quality
You don't need perfect code, but you do need code you can safely modify without breaking things.
- [ ] TypeScript strict mode enabled — Turn on
strict: trueintsconfig.json. Fix the resulting errors. Each one is a potential runtime bug. - [ ] No
anytypes on boundaries — Removeanyfrom API responses, form inputs, and database queries. These are where type safety matters most. - [ ] Tests on critical paths — Authentication, payments, and data mutations need test coverage. You don't need 100% coverage. You need confidence that the important things work.
- [ ] Dead code removed — AI tools generate code they later don't use. Remove unused components, functions, and imports.
- [ ] Consistent patterns — Pick one way to do data fetching, error handling, and validation. Apply it everywhere. AI tools often use different patterns in different parts of the same app.
- [ ] Dependencies audited — Run
npm audit. Update any packages with known vulnerabilities. Remove packages you're not actually using.
For a look at specific issues in Cursor-generated code, read what a senior dev finds in Cursor code.
Phase 4: Deployment
Don't deploy by copying files or running commands manually. Set up a proper pipeline.
- [ ] Code in version control — Git repository on GitHub, GitLab, or Bitbucket. Not just on Replit or in a StackBlitz sandbox.
- [ ] CI/CD pipeline configured — Every push runs lint, type-check, and tests. Passing CI triggers deployment automatically.
- [ ] Environment variables configured — All secrets set in your hosting provider's dashboard. Nothing hardcoded. Different values for staging and production.
- [ ] Preview deployments enabled — Every pull request gets its own URL for testing before merging.
- [ ] Hosting provider chosen — Vercel for Next.js, Railway for Node.js/Express, Fly.io for custom setups. Match the host to your stack.
- [ ] Custom domain connected — With HTTPS enforced and DNS properly configured.
- [ ] Database backups — Automated backups on a schedule. Test that you can actually restore from them.
Tool-specific deployment guides
Each AI tool has unique deployment considerations. Follow the guide for your tool:
- How to Deploy a Lovable App to Production
- How to Deploy a Bolt App to Production
- How to Deploy a Cursor Project to Production
- How to Deploy a Replit App to Production
- How to Deploy a v0 App to Production
Phase 5: Launch Readiness
The technical work is done. Now make sure the product is ready for actual humans.
- [ ] Tested on real devices — Open the app on a real phone, not just browser dev tools. Test every flow: sign up, core features, settings, payment (if applicable), log out.
- [ ] Analytics installed — Track page views, sign-up conversion, key feature usage, and error rates from day one.
- [ ] SEO basics configured — Title tags, meta descriptions, Open Graph images, canonical URLs, sitemap.
- [ ] Performance acceptable — Core Web Vitals passing. Page loads under 3 seconds on mobile. No layout shifts.
- [ ] Legal pages in place — Privacy policy and terms of service. Required by law if you collect any user data.
- [ ] Feedback channel available — Users need a way to report bugs and request features. Even a simple email address works.
For advice on launching effectively, read how to launch your AI-built app on Product Hunt.
The reality
Most vibe-coded apps need 1-3 weeks of focused hardening work before they're genuinely ready for production. This gap is real, and skipping it leads to the crashes and security incidents that give AI-built apps a bad reputation. But it's fixable.
If you want to check whether your specific app is production-ready, request a free audit. We'll review your app and give you a prioritised list of exactly what needs fixing before launch.
Get articles like this in your inbox
Practical tips on shipping vibe-coded apps. No spam.
Keep reading
Want to know where your app stands?
Get a free 5-point security snapshot from our dev team — no strings attached.