How to Migrate from Bolt.new to Lovable (Step-by-Step Guide)
Bolt.new and Lovable are both AI-first web app builders, and they share a lot in common — React, Tailwind CSS, shadcn/ui, and a conversational interface. But they diverge significantly in backend strategy and long-term development workflow.
Bolt.new runs entirely in a browser-based WebContainer — it's fast to start but limited by the sandbox. Lovable connects to a real Supabase PostgreSQL database, provides proper GitHub sync, and handles production-grade auth out of the box. If you've built a UI in Bolt and want to graduate to a real backend and proper deployment pipeline, this guide is for you.
Key Differences: Bolt vs Lovable
| Feature | Bolt.new | Lovable |
|---|---|---|
| Execution environment | Browser (WebContainer) | Hosted (Supabase-backed) |
| Database | In-memory / mock | Supabase PostgreSQL |
| Authentication | Mock only | Supabase Auth (email, Google, etc.) |
| GitHub sync | One-way push | Bi-directional sync |
| Custom domain | Via Netlify/Vercel export | Built-in via Lovable |
| AI model | Claude Sonnet | Claude Sonnet (GPT-4 fallback) |
| Pricing | Token-based credits | Monthly subscription |
Step 1: Export Your Bolt Project
Option A — GitHub Export (preferred):
- In your Bolt workspace, click the GitHub icon in the top toolbar
- Authenticate with GitHub and push to a new repository
- Copy the repository URL
Option B — ZIP Download:
- In the Bolt file panel, click the three-dot menu
- Select Download Project as ZIP
- Extract the ZIP to a local folder
- Create a new GitHub repository and push it manually
Step 2: Audit What Your Bolt App Actually Does
Before importing into Lovable, catalogue your app clearly:
- Which pages exist and what each one does
- What data is currently hardcoded or mocked
- Which features are UI-only vs need real backend logic
- Any external API calls that are already wired up
This audit becomes your Lovable migration brief.
Step 3: Create a New Lovable Project
- Go to lovable.dev and click New Project
- Describe your app comprehensively in the first prompt:
I'm migrating an existing React app from Bolt.new.The app is a [describe your app — e.g., task management tool for remote teams].
It currently has these pages: [list pages].
The tech stack uses React, Vite, Tailwind CSS, and shadcn/ui.
I need a real Supabase backend with auth and a proper database.
Please scaffold the project structure first before I import components. - Connect your Supabase project when prompted (or create a free one at supabase.com)
Step 4: Import Your Bolt Components into Lovable
Copy each major React component or page from your Bolt project and paste it into Lovable's chat one at a time:
Here is my existing TaskList component from my Bolt project.Please integrate it into the app. Replace any hardcoded task arrays
with real Supabase queries using TanStack Query.
Keep all styling exactly as-is — do not change any Tailwind classes or layout.
[paste component code]
Important: Import components one at a time rather than dumping everything at once. This gives Lovable's AI time to wire each component to the real backend properly.
Step 5: Replace Mock Data with Supabase
Bolt apps typically have hardcoded data arrays. For each one, tell Lovable:
"The tasks array in TaskList is currently hardcoded mock data.Create a Supabase 'tasks' table with fields: id, title, description,
status (todo/in_progress/done), due_date, created_by.
Replace the mock array with a real-time Supabase query.
Apply RLS so users can only see their own tasks."
Step 6: Add Real Authentication
Bolt doesn't have real auth. Lovable + Supabase gives you production-grade auth in one prompt:
"Add Supabase authentication:
- Email + password sign up and login
- Google OAuth
- Protected routes — redirect unauthenticated users to /login
- A user profile page showing their account details
Sign out button in the navigation"
Step 7: Handle Bolt-Specific Code Patterns
Bolt sometimes generates code that assumes a browser-sandbox environment. Watch for:
- StackBlitz WebContainer APIs — any import from
@webcontainer/apineeds to be removed or replaced - Relative imports that don't resolve — Bolt's file structure may differ; use Lovable's file panel to verify paths
- Mock service workers — Bolt sometimes uses MSW for API mocking; ask Lovable to replace with real Supabase calls
Step 8: Set Up Custom Domain
Lovable provides a free preview subdomain. For a custom domain:
- In Lovable, go to Project Settings → Custom Domain
- Add your domain and follow the DNS configuration instructions
- SSL is automatically provisioned
Migration Timeline
| App Complexity | Estimated Time |
|---|---|
| Simple landing page or tool | 30–60 minutes |
| Multi-page app with CRUD | 2–4 hours |
| Complex app with many features | 4–8 hours |
What You Gain by Moving to Lovable
- A real database — not browser memory. Data persists across sessions and devices.
- Production authentication — Supabase Auth handles JWTs, sessions, OAuth providers, and row-level security.
- Bi-directional GitHub sync — edit in Lovable's chat or directly in your code editor; changes sync both ways.
- Custom domain and SSL — deploy your real product URL without configuring a separate hosting provider.