How to Deploy a Cursor or Bolt Project to Vercel
Cursor builds code on your computer. Bolt builds it in your browser. Either way you end up with a normal web project (usually Vite or Next.js) that Vercel can build and host. The free Hobby plan works for personal projects.
Pick your route
| Route | Best for | Updates automatically? |
|---|---|---|
| A. GitHub → Vercel | Anything you’ll keep improving | Yes. Every push to main deploys |
B. Vercel Drop (drag a .zip) | A quick Bolt demo | No. Each new drop on vercel.com/drop creates a new project and URL |
| C. Vercel CLI | Cursor users happy in a terminal | When you run the command |
If in doubt, use Route A. It’s the one that keeps working as your app grows. (Vercel: Deploying Git repositories)
Before any route: two minutes of prep
- Make sure it builds. In Cursor, run
npm run buildand fix any errors first. In Bolt, make sure the preview has no errors. - List your environment variables. Write down every key your app reads (Supabase URL and key, Stripe keys, AI keys). You’ll add them on Vercel. Not sure which are public? Read environment variables and API keys explained.
- Keep secrets out of Git (Cursor). Check that
.envand.env*.localare in.gitignore, then rungit statusbefore pushing and make sure no.envfile with real keys is listed.
Route A: GitHub → Vercel (recommended)
A1. Get your code onto GitHub
From Bolt (official steps from Bolt’s docs):
- Open your project and click the GitHub icon in the top-right corner.
- Click Log in to GitHub, then Authorize.
- Click Install the GitHub App, choose All repositories or Only select repositories, then Install & Authorize.
- Click the GitHub icon again, enter a repository name and click Create repository.
The new repository starts private, on a main branch, and Bolt commits automatically every time you make a change that doesn’t break the project. (Bolt: GitHub for version control)
From Cursor (or any local project): create an empty repository on GitHub, then in Cursor’s terminal:
git init
git add .
git status # check: no .env files with secrets listed!
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/YOUR-USERNAME/YOUR-REPO.git
git push -u origin main
A2. Import it into Vercel
- In the Vercel dashboard, click New Project (top right).
- Pick your repository from the list. Connect GitHub first if Vercel asks.
- On the configure screen you can set the project name, Framework Preset, Root Directory, build output settings and Environment Variables. Vercel usually detects Vite or Next.js by itself. Only change the root directory if your app lives in a subfolder.
- Add your environment variables here now, then click Deploy.
From then on, every push to your production branch (usually main) creates a Production deployment, and pushes to other branches or pull requests get their own Preview URL.
Hobby plan gotcha: you can’t deploy a Hobby project from a private repository that belongs to a GitHub organization. Keep the repository under your personal GitHub account, make it public, or upgrade to Pro. (Vercel: Deploying Git repositories)
Route B: Vercel Drop (fastest Bolt demo)
- In Bolt, click the project title in the top left, then Export → Download. You get a
.zip. - Go to vercel.com/drop and drag the
.ziponto the page. No need to unzip it. - Choose your Vercel team, enter a project name and click Deploy. Vercel detects the framework, builds it and publishes it to production.
- Add your keys. Bolt’s export doesn’t include the values from its Secrets panel. Recreate them in your Vercel project’s environment variables and redeploy.
(Vercel: Bolt + Vercel Drop · Vercel Drop docs)
A dropped project has no Git connection. To update it later you can drop a new folder onto the project in the Vercel dashboard. For ongoing work, switch to Route A so every change deploys automatically and your URL stays the same.
Route C: Vercel CLI (Cursor)
npm i -g vercel # install the CLI
vercel login # sign in
vercel # first run links the project and makes a preview deployment
vercel --prod # deploy to production
Running vercel creates a Preview deployment and vercel --prod creates a Production one. vercel env pull downloads your Development variables into a local .env file. (Vercel CLI · Vercel: Environment variables)
Environment variables on Vercel
- Open the project and select Environment Variables in the sidebar.
- Add the Name and Value, then choose the environments (Production, Preview, Development).
- Click Save, then redeploy. Changes only apply to new deployments.
(Vercel: Managing environment variables)
Remember the prefix rule: a value that browser code needs must start with VITE_ (Vite) or NEXT_PUBLIC_ (Next.js), and so it becomes public. Never put a secret key behind those prefixes.
Add your custom domain
- In your project, open Settings → Domains and click Add Domain.
- Enter
yourdomain.com. Vercel will suggest addingwww.yourdomain.comtoo. Add both and redirect one to the other. - Set DNS at your registrar to exactly what the dashboard shows:
- Apex domain (
yourdomain.com): an A record. - Subdomain (
www,app): a CNAME record. Each project gets its own unique CNAME value. - Or switch the domain to Vercel’s nameservers. If you do, first copy your existing records over, especially MX (email) and any verification TXT records.
- Apex domain (
- If the domain shows an invalid configuration, look for conflicting
A,AAAAorCNAMErecords on the same name and remove them.
CLI alternative: vercel domains add yourdomain.com your-project-name. (Vercel: Add a custom domain)
After the domain works: update your logins
- Supabase Auth: set the Site URL to
https://yourdomain.comand add your Redirect URLs. Supabase suggestshttp://localhost:3000/**for local dev and a wildcard pattern for Vercel previews. Use exact paths for production. (Supabase: Redirect URLs) - Google/GitHub sign-in: add the production callback URL in each provider’s console.
- Stripe: point your live webhook at your production domain and store its signing secret as a server-only variable.
Troubleshooting first deploys
| Symptom | Likely cause and fix |
|---|---|
| Build fails on Vercel but works locally | A missing environment variable at build time, or an import whose upper/lower case doesn’t match the file name. Read the build log |
A variable is undefined in the browser | Browser code needs the VITE_/NEXT_PUBLIC_ prefix. Only do that for public values, then redeploy |
| Changed a variable, nothing happened | Redeploy. Old deployments keep their old values |
| Refreshing a sub-page gives 404 (Vite single-page app) | The app needs a rewrite to index.html. Ask your AI to “configure SPA routing for Vercel” |
| Domain stuck on invalid configuration | Conflicting DNS records. Match exactly what your project’s Domains page shows |
Before you share the link, run through the pre-launch security checklist.
Official sources used: Vercel: Deploying Git repositories · Vercel Drop · Vercel: Bolt + Vercel Drop · Vercel: Environment variables · Vercel: Add a custom domain · Vercel CLI · Bolt: GitHub · Supabase: Redirect URLs. Checked October 2026.
Want the whole launch path in one place?
The Ship It Kit bundles copy-paste prompts, step-by-step deploy guides and a pre-launch checklist for Lovable, Bolt, Cursor and Replit apps. One-time $19. Launch price: $19 $17 until November 14, 2026.