v0 builds projects with Next.js and publishes them on Vercel. To publish the same project on Ai to App, get the code as a zip; Ai to App builds it as a Next.js server application and opens it at your-project.aitoapp.com. The only thing that does not come with the code is the values kept on Vercel: environment variables and integration keys.
Get the Code From v0
| Download ZIP | Via GitHub | |
|---|---|---|
| Where | In the ⋯ menu at the top right of the chat, choose Download ZIP. | Create a repository with Project menu ⋯ → Settings → GitHub, then on GitHub choose Code → Download ZIP. |
| When | For a one-time copy. | If you will update the project often. |
| Watch Out | In 2026, zips that downloaded empty or incomplete were reported in the Vercel community. Open the zip and check that package.json is there. | The repository stays in your account; every change in v0 is written there. |
Check the Zip Before Uploading
package.jsonand theappfolder are at the root. If they are not, the zip downloaded incomplete; use the GitHub route.pnpm-lock.yamlorpackage-lock.jsonis there. Ai to App installs the packages with the same package manager.- If the
next.configfile saysoutput: 'export', the project is published as a website and no server is needed. If it does not, it is published as a server application.
Drop the zip into the box on the home page. The pre-check examines the project without you creating an account.
Move the Values Left on Vercel
The variables v0 uses are stored on Vercel and do not go into the zip. You can see all of them in v0 on the Project menu ⋯ → Settings → Environment Variables screen. On Ai to App, go to the My Apps page, press Environment Variables on the app's card, enter the values and press Save and Republish.
| Variable | Note |
|---|---|
Neon, Supabase, Upstash values (DATABASE_URL, NEXT_PUBLIC_SUPABASE_URL, KV_REST_API_URL…) | Enter the value as it is. Your database stays where it is, and the app connects to it from Ai to App. |
AI_GATEWAY_API_KEY | This key is not needed on Vercel, because Vercel's own session token is used there. Outside Vercel, AI features do not work without this key. Create it on the AI Gateway → API Keys screen in the Vercel dashboard. |
BLOB_READ_WRITE_TOKEN | File uploads keep going to Vercel Blob. |
Values with the NEXT_PUBLIC_ prefix | They are embedded in the code during the build, and every visitor can see them. Always republish after changing them. |
Vercel-Specific Features
- Vercel Analytics
@vercel/analyticscollects data only on Vercel. On Ai to App it does not break the page, but it does not count visits.- Scheduled Jobs
- Cron definitions in
vercel.jsondo not run on Ai to App. If a job needs to run regularly, call the app's relevant address with an outside scheduler. - Publish Button
- Publish in v0 publishes only to Vercel. The copy on Ai to App does not change until you upload the new zip.
Common Problems
There is no package.json in the zip; it downloaded incomplete from v0. Connect the project to GitHub and download the zip from there.
Next.js generates some pages during the build and looks for the variable at that moment. Enter the missing value in the panel and press Save and Republish.
The AI Gateway connection that works on Vercel needs a key outside it. Enter the AI_GATEWAY_API_KEY value.
The old address is still in the sign-in settings. Update the NEXTAUTH_URL value in NextAuth and the Redirect URLs list in Supabase with the new address.
Later Versions
Make the change in v0, download the zip again and upload it from the same app's card. Your address and the information in the database stay the same.
