How to Move Your Project from Bolt.new to Cursor (Complete Migration Guide)
Bolt.new by StackBlitz is one of the fastest ways to go from zero to a working web app — it runs entirely in the browser, requires no local setup, and generates production-ready React or Next.js code with AI assistance. But when you outgrow Bolt's sandbox environment, Cursor is where most developers go next.
Cursor is a fork of VS Code supercharged with Claude and GPT-4 models. It understands your entire codebase, auto-completes multi-file edits, and runs in your local environment — giving you the power of a real development workflow without sacrificing AI assistance.
Why Developers Switch from Bolt to Cursor
- Bolt is browser-only: You can't run custom backend servers, access real file systems, or use native tools
- Limited package support: Bolt's WebContainer has restrictions on packages that require native binaries
- No real Git workflow: Bolt's GitHub export is one-way; real collaboration needs a proper Git workflow
- Compute limits: Bolt tokens run out fast on complex tasks
- Testing: Running test suites, linters, or CI pipelines isn't feasible in Bolt
Prerequisites
- Bolt.new project (with GitHub export enabled)
- Cursor installed — download at cursor.sh
- Node.js 18+ and Git installed locally
- A GitHub account
Step 1: Export Your Bolt Project to GitHub
- In Bolt, click the GitHub icon in the top-right toolbar
- Authenticate with your GitHub account
- Click Push to GitHub and create a new repository
- Copy the repository URL
If you don't see the GitHub button, use Download ZIP: Files icon → ⋮ menu → Download Project as ZIP.
Step 2: Clone the Repository Locally
git clone https://github.com/your-username/your-bolt-project.git
cd your-bolt-project npm install npm run dev
If the app runs — great. If not, note the errors; you'll address them in Cursor.
Step 3: Open the Project in Cursor
- Open Cursor
- File → Open Folder → select your cloned project directory
- Cursor will index your codebase (visible in the bottom status bar)
- Open AI chat with
Cmd/Ctrl + L
Give Cursor immediate context:
This project was built in Bolt.new — a browser-based AI coding tool.
It uses React with Tailwind CSS and shadcn/ui. Please read the codebase structure and confirm you understand the architecture.
Step 4: Set Up Your Environment Variables
Check your Bolt project's environment variables panel and recreate a local .env file:
touch .envAdd all keys Bolt was storing internally
VITE_SUPABASE_URL= VITE_SUPABASE_ANON_KEY= VITE_STRIPE_PUBLISHABLE_KEY=
Add .env to .gitignore:
echo ".env" >> .gitignore
git add .gitignore && git commit -m "chore: add .env to gitignore"
Step 5: Configure Cursor with .cursorrules
Create .cursorrules in your project root for persistent AI context:
# .cursorrules
Project
This app was migrated from Bolt.new. It is a [describe your app].
Tech Stack
- Framework: React 18 with Vite
- Styling: Tailwind CSS + shadcn/ui
- Backend: Supabase
- Package manager: npm
Code Style
- Use TypeScript strictly — no any types
- Components go in src/components/, pages in src/pages/
- Follow existing naming conventions
Do Not
- Modify .env files
- Change package.json scripts without asking
Introduce new dependencies without confirmation
Step 6: Fix Bolt-Specific Code Patterns
Bolt sometimes generates code with browser-environment assumptions that break locally. Ask Cursor:
> Scan the codebase for any imports or references that assume a browser-only environment
(like StackBlitz WebContainer APIs) and replace them with standard Node.js equivalents.
For mocked API calls:
> Find all fetch() calls that return mock/hardcoded data in Bolt.
List them and suggest how to replace each with a real backend implementation.
Step 7: Learn Cursor's Power Features
- Composer (Cmd+I): Multi-file edits — "Add a user authentication flow with Supabase Auth — create the login page, protected route wrapper, and auth hook"
- Chat (Cmd+L): Codebase-wide questions — "Why is the sidebar not rendering on mobile?"
- Inline AI (Cmd+K): Select code → Cmd+K → "Refactor this to use async/await instead of .then()"
- @Codebase: Prefix any chat message with @Codebase to search across all files
Step 8: Set Up Deployment
Bolt's preview URL is gone. Set up your own:
Vercel (best for React / Next.js):
npm install -g vercel
vercel login vercel
Add your environment variables at vercel.com → Project → Settings → Environment Variables.
Bolt vs Cursor: Key Differences
| Feature | Bolt.new | Cursor |
|---|---|---|
| Environment | Browser (WebContainer) | Local (full OS access) |
| File access | Virtual filesystem | Real filesystem |
| Terminal access | Limited | Full |
| Package support | Pure JS only | Any npm package |
| Git workflow | Basic export | Full Git integration |
| Pricing | Token-based credits | $20/month flat |
Tips for a Smooth Transition
- Don't rewrite — refine. Your Bolt code is good. Cursor's job is to extend it.
- Set up ESLint and Prettier early. Bolt code is often un-linted. Ask Cursor to add this.
- Commit often. You now have a real Git workflow — commit before every major Cursor change.
- Use Cursor's codebase indexing. Press
@Codebasein chat to search across all files.