# v0 hosting: put what v0 built at your own address

v0 generates Next.js with React, TypeScript, Tailwind and shadcn/ui. That is a project, not a page, so one build has to happen before a static host can serve it. This page covers the export, the static-export setting Next.js needs, and the two things that break first.

## What v0 outputs

A Next.js project. v0 builds applications with Next.js, React, TypeScript, Tailwind CSS and shadcn/ui, so what you export is source code with a package.json and a dependency list, not a page a browser can open.

That matters more here than with most generators, because Next.js is a framework with a server in it. Its default build produces a server application, and a static host has nothing to run it with. The fix is a setting rather than a rewrite: Next.js has a static export mode that renders every page to plain HTML at build time and writes the result to an out folder. Set it, build, upload that folder, done. The Next.js deploy guide has the exact configuration line.

There is one case where none of this applies. If you asked v0 for a single component and it gave you one file that imports nothing but React, save it as a .jsx and upload that on its own. It is transformed in the visitor browser at the published address, with no build and nothing installed. The moment a shadcn/ui import appears in the file, that path is closed and you are back to building the project, because those components live in your project rather than on a public CDN.

## Which of the two paths you are on

Open what you exported. The answer is visible in about five seconds and everything else on this page follows from it.

### One file, no build

You copied a single component out of v0 and it imports nothing but React. Save it as a .jsx or .tsx file and upload it.

- React, the JSX runtime and a Tailwind runtime are served from our own edge, so the file runs as it is.
- Nothing is installed and nothing you upload runs on our servers. We serve static files.
- A @/components/ui/... import means this path is closed: those are shadcn/ui files that live in the project.
- The single-file runtime is described in full here, including what it declines to do.

### A project, one build first

You exported the whole thing and there is a package.json in it. Run the static export once, then upload the folder it writes.

- Set output: 'export' in next.config.js, then run npm install and npm run build.
- Upload the out folder, as a folder or zipped. Not the project folder, and not .next.
- Route handlers, server actions and anything under app/api do not survive a static export. Next.js will tell you which ones at build time.
- Full command and configuration in the Next.js deploy guide.

## Getting the code out of v0

v0 documents two ways off the platform. The GitHub route is the one its own docs describe in detail, and it is the one to use if the download ever gives you a repository containing only a README.

1. **Open the project in v0.** Not a single message in a chat: the project, so you get the whole file tree rather than the block that is currently on screen.
2. **Download the ZIP, or sync to GitHub.** Open the project menu and choose Download ZIP; the browser offers a Save As dialog where it supports one. v0 also has a bi-directional GitHub integration, which is the better route if you intend to keep changing the project in both places.
3. **Install and check it runs.** Run npm install, then npm run dev. If it does not run locally it will not run as a static build either, and finding that out now is cheaper.
4. **Switch Next.js to static export.** Add output: 'export' to next.config.js. Next.js then refuses to build any route it cannot render ahead of time, which is the fastest way to discover what in the generated app was server-side.
5. **Build, then upload the out folder.** Run npm run build and drop the out folder here. Pick a name and the page is live over HTTPS.

Source: Stack from v0's own FAQ documentation at v0.app/docs/faqs, read 8 September 2026, which states that v0 builds with Next.js, React, TypeScript, Tailwind CSS and shadcn/ui, that you can export the code to work locally, and that it offers bi-directional GitHub integration. The Download ZIP label and its location are from v0's own changelog, also read 8 September 2026: the entry of 28 August 2026 states that Download ZIP shows a native Save As dialog where the browser supports it, and the entry of 19 June 2026 states that view-only members can download a chat's code as a ZIP from the project menu. Menu labels can change.

## What breaks, and why

Four failures cover almost every v0 upload that does not work first time. The first two are specific to what v0 generates; the rest are true of any generated project.

### The build fails on a route that uses a server feature

Why: v0 scaffolds Next.js applications, and Next.js applications often contain route handlers, server actions or dynamic rendering. A static export has no server to run any of it, so the build stops and names the route.

Fix: Either delete the server-side route if it was scaffolding you never used, or accept that this part of the app is not static. Only the static half can be published here. The Next.js guide covers which features survive an export.

### A single .jsx you copied out of v0 renders blank or names a missing package

Why: The component imports shadcn/ui, lucide-react or another package. Those are not fetched from a public CDN on your visitors' behalf, because that would run third-party code in their browser and hand that CDN their IP address.

Fix: The live page lists the missing packages by name rather than rendering a blank screen. Export the whole project and build it instead: the imports resolve at build time, which is where they were meant to resolve.

### Every route except the home page returns a 404

Why: The app routes in the browser, so /about exists only once JavaScript has run. A static host asked for /about looks for a file at that path, does not find one, and answers 404 before your code loads.

Fix: Turn on the Single-page app switch in the site settings. Unknown paths are then served the root index.html and the client router takes over. Free on every plan, applied without a redeploy, and off by default because a multi-page site wants real 404s.

### The API keys the tool wrote into the code are now public

Why: AI tools fill in the value they can see, and a key in front-end code is readable by anyone who opens the page. No host can fix that: a published page is public by definition.

Fix: The deploy-time security check names the key it found. Rotate it, then move the call behind something that can hold a secret. Every plan, free included, and it never blocks the publish.

## What the free plan includes

Publishing a generated build costs nothing, which matters here more than elsewhere: most v0 projects are shown once and then regenerated.

- 1 live site on a real free plan, not a trial of a paid one, with HTTPS and no card to start.
- Up to 25 MB per upload and 25 MB of storage across the account.
- 5,000 visits and 5 GB of traffic a month.
- Up to 25 publishes a day, which is the number that matters when you are regenerating.
- The Single-page app switch, so a client-routed build works without paying for anything.
- The deploy-time security check, which warns about a stray .env file, a .git folder, a private key or an API key left in your JavaScript.
- A small Droply badge in the corner of the page. Removing it starts on Starter.
- Free sites are served noindex, so search engines do not list them. Search visibility starts on Starter.

## How this compares with the other host built for AI output

Static.app has the deepest content in this category and a page for v0 of its own. The rows below are the ones its own pricing and documentation make checkable.

- **A Next.js static export.** Droply: Upload the out folder as a folder or a ZIP. Static.app: Accepted as a ZIP of built output.
- **Runs the build for you.** Droply: No. You build once locally and upload the result. Static.app: No.
- **Client-side routing.** Droply: One free Single-page app switch, applied to the live site with no redeploy. Static.app: Not documented as a per-site setting.
- **Password protection.** Droply: From Starter, enforced at the edge. Static.app: Not listed on any of its plans.
- **Loose .html file accepted.** Droply: Yes, dropped on its own with nothing around it. Static.app: No. Its Claude page states a loose .html file is not accepted and must be zipped.
- **Single .jsx or .tsx without a build.** Droply: Yes. It is transformed in the visitor browser at the published address. Static.app: No. Its Claude page says React-based artifacts need a self-contained HTML version first.
- **Free plan.** Droply: 1 site, 25 MB storage, no card, and a plan rather than a trial. Static.app: A 7-day trial with no credit card, then paid. 1 site and 50 MB during it.
- **Security check on every publish.** Droply: Every plan, free included: leaked keys, a stray .env, a committed .git folder. Static.app: Not offered.

Static.app figures checked 8 September 2026 on its own pricing page (free tier: 1 site, 50 MB, a 7-day trial with no credit card; Starter $5 a month or $60 a year for 2 sites and 500 MB with a custom domain; Medium $10; Large $15) and on its Claude hosting page, which states that a loose .html file is not accepted and must be zipped, that React-based artifacts need an extra step because you have to ask the model for a self-contained HTML version, and that Import from URL takes claude.ai and claude.site links. Product plans can change.

## When Droply is the wrong choice

Much of what v0 generates is a real application, and calling it a website does not make it static. Recognizing that before you upload is cheaper than discovering it afterwards.

- Your v0 app uses server actions, route handlers or a database. Those need a runtime; the static export drops them and the features that depended on them stop working.
- You want the project rebuilt every time you regenerate it in v0. There is no Git integration and no CI here: each version is a build you run and an upload you make.
- The generated app has a database, a login screen or server actions. Those need a runtime; only the static half of it can be published here.
- You want a build to run here, on upload or on every push. There is no build step and no Git integration: you build locally and bring the output.
- You are running WordPress or another PHP application. A static export of it can be hosted here, but the application itself cannot.

## Frequently asked questions

### Can I host a v0 project without Vercel?

Yes. Export the code, set Next.js to static export, run the build, and upload the out folder here. The result is a normal static site on an HTTPS address, with no account on the original platform involved.

### Does v0 give me the code?

Yes. Download ZIP from the project menu gives you the files directly, and a bi-directional GitHub integration keeps a repository in sync with the project if you would rather work that way. Both are documented by v0 itself.

### What does v0 actually generate?

Next.js applications built with React, TypeScript, Tailwind CSS and shadcn/ui, per v0's own documentation. That is a project with a package.json, not a single page.

### Do I have to run a build?

For a project, yes, once, on your machine. For a single component file that imports nothing but React, no: save it as .jsx and upload it, and it is transformed in the visitor browser at the published address.

### Which folder do I upload?

The out folder that a static Next.js export produces. Not the project folder and not .next. The Next.js deploy guide names the configuration line that produces it.

### Why does every page except the home page 404?

Because the routes are resolved by JavaScript in the browser, and a static host asked for a path it has no file for answers 404 first. Turn on the Single-page app switch in the site settings and unknown paths are served the root index.html instead. It is free and applies without a redeploy.

### Will my shadcn/ui components work?

Yes, after a build. They are source files inside your project, so the build compiles them in. They do not work in the single-file path, because there is no project for them to be compiled from.

### Can the published site call an API?

Only an API that already exists somewhere else and allows browser requests under its own CORS rules. There is no server here, so anything v0 scaffolded under app/api does not run.

## Other AI tools

- [bolt.new hosting](https://droply.host/bolt-new-hosting)
- [Lovable hosting](https://droply.host/lovable-hosting)
- [Cursor hosting](https://droply.host/cursor-hosting)