
Exporting v0.dev code with its Tailwind and shadcn setup intact
Next.js + React + Tailwind
V0 output is Next.js. Static export mode gives the highest fidelity because every route is pre-rendered to HTML.
Quick answer
Download the v0 project as a ZIP or push it to GitHub — the Next.js app is statically rendered and converted into WordPress templates.
Where do I find the ZIP?
- Open your generation on v0.dev
- Use the Download / Export Code option (or Add to Codebase → GitHub)
- Keep the full Next.js structure: app/, components/, package.json
- Upload the ZIP or paste the GitHub repository URL
What your upload should contain
package.jsonapp/ or pages/components/next.config.jspublic/
V0.dev troubleshooting
Build fails on server components
Server actions and route handlers are removed by the Next.js patch layer; keep pages presentational for the best result.
Images are broken
next/image optimised URLs are decoded to the original files automatically. Keep images in public/ so they can be resolved.
Dynamic routes are skipped
Add generateStaticParams or link the routes from navigation so they can be discovered.

Best practices before exporting
- Set output: 'export' in next.config so the project builds to static HTML
- Avoid server actions and route handlers
- Use next/image with unoptimized: true for static export
- Give each route a metadata export with title and description
How to export
Method 1 — Next.js static export (best result)
- Add output: 'export' to next.config.js
- Run npm run build
- Zip the generated out/ folder
- Upload the ZIP
Method 2 — Download the V0 project ZIP
- Use the download code option in V0
- Keep the ZIP unmodified
- Upload it — the sandbox builds and renders it for you
Method 3 — GitHub repository
- Push the V0 project to GitHub
- Copy the repository URL
- Paste it into the converter
Accepted input
- ZIP archive
- GitHub repository
- Static export
- Source project
- Build output
Not recommended
- Old build folders from a previous version of the project
- Incomplete exports that are missing package.json or index.html
- Screenshots, Figma files, PSD files or design mockups
- node_modules — always exclude it, it makes uploads slow and adds nothing
Supported features
- App Router pages
- Tailwind and shadcn/ui
- Static images
- Client components
- Metadata API
Unsupported features
- Server actions
- Route handlers and middleware
- ISR and dynamic server rendering
Common mistakes
- Keeping server actions or API route handlers
- Using next/image optimisation without unoptimized: true
- Uploading only a single component instead of the project
Conversion tips
- Remove middleware.ts before export
- Convert dynamic routes to a fixed set with generateStaticParams
Readiness checklist
- Navigation — Use real anchor links with readable labels. Menus built purely from JavaScript state are harder to map to WordPress menu locations.
- Images — Reference images from your project folder (imports or /public). Images loaded from a temporary preview host may not be reachable at conversion time.
- Assets — Fonts, icons and CSS should live inside the project. Locally hosted assets are copied into the theme automatically.
- Forms — Standard form markup is converted to Contact Form 7 or WPForms. Custom JavaScript submit handlers are replaced by the WordPress form handler.
- Routing — Every route you want as a WordPress page must be reachable from the navigation, a sitemap or a route manifest.
- Animations — CSS animations and common libraries survive. Heavy scroll-timeline or canvas effects may render differently in WordPress.
- SEO — Titles, meta descriptions and canonical tags are extracted per page and mapped into the theme and your SEO plugin.
- Responsive — Breakpoints are preserved as-is. Check mobile before exporting — the converter never fixes a layout that was already broken.
V0.dev FAQ
Can I upload Next.js?
Yes. Static export mode is best, but we also build source projects in a sandbox.
Why are some pages missing?
Dynamic routes without generateStaticParams do not pre-render. Add it and export again.
Does v0 use Next.js?
Yes, App Router with React and Tailwind, which converts well through static export.
Do shadcn/ui components survive?
Yes, they render to plain HTML and Tailwind classes.
Are server actions converted?
No. Replace them with a standard form; it becomes a WordPress form plugin entry.
Do I need to install anything to convert a v0.dev project?
No. Everything runs server-side. You upload a ZIP or paste a repository URL and receive a WordPress theme ZIP plus a live preview in the browser.
Should I remove node_modules before uploading?
Yes, always. node_modules is reinstalled during conversion, so including it only makes the upload slow and can push you over the size limit.
Can I preview the result before paying?
Yes. The WordPress preview is free for every conversion. Payment is only required when you download the theme ZIP.
What happens to my forms?
Standard HTML form markup is mapped to Contact Form 7 or WPForms shortcodes. Custom JavaScript submit handlers are replaced by the WordPress form handler.
Will my SEO titles and meta descriptions survive?
Yes. Titles, meta descriptions and canonical tags are extracted per page and written into the theme templates so your SEO plugin can take over.