You built something beautiful in v0, Lovable, or Bolt. Your client — who runs WordPress — wants it live by tomorrow. Here's the exact workflow, tool by tool, that gets an AI-generated design into a production WordPress theme without touching PHP.
Why this is harder than it looks
v0 generates Next.js components with shadcn/ui and Tailwind. Lovable deploys a React + Supabase app to Vercel. Bolt outputs a Vite + React app on StackBlitz. None of these are WordPress themes. None of them have a "export to WordPress" button.
The naive approach — copying the JSX and pasting it into a WordPress page — doesn't work. JSX is not HTML. Tailwind classes render unstyled without the compiled CSS. React components need a runtime to mount.
The professional approach used by agencies in 2026: deploy the AI design to its natural hosting environment, capture the fully rendered URL, package as WordPress. Here's how it works for each tool.
Starting from v0
Step 1: Get a public URL
v0 generates a shareable preview link at v0.dev/r/xxxxx. This renders the component in isolation. For a full page, you have two options:
- Option A (fastest): Open the v0 preview in browser, use v0's "Open in Vercel" or "Open in CodeSandbox" to deploy it. You get a public URL like
https://your-project.vercel.app. - Option B: Copy the code to a local Next.js project, run
next build && next start, and use a tunneling tool like ngrok to expose localhost publicly:ngrok http 3000.
Step 2: Convert to WordPress
- Go to StaticToWP.
- Paste your Vercel URL (or ngrok URL).
- Wait ~45 seconds.
- Download
wp-theme.zip.
What gets captured from v0
- Tailwind CSS — compiled to exact classes used on the page (the JIT output)
- shadcn/ui component styles — all CSS custom properties resolved
- Geist font or any other Next.js-loaded font — referenced by absolute URL
- All layout, spacing, typography, and color
What needs extra work
- shadcn/ui interactive components (Dialog, Sheet, Popover) that rely on Radix UI's React runtime → need vanilla JS equivalents or leave as static HTML
- Any Zustand or React Query state → static in the WordPress theme
Starting from Lovable
Step 1: Publish your Lovable project
In Lovable, click "Publish" (top right). This deploys to a URL like https://your-app.lovable.app. This URL is publicly accessible.
Important: Lovable deploys React + Supabase apps. The Supabase backend — auth, database — is entirely separate from what you're converting. You're capturing the visual front-end only.
Step 2: Convert to WordPress
- Paste
https://your-app.lovable.appinto StaticToWP. - The tool renders the page including all Lovable-generated CSS, animations, and layout.
- Download the theme zip — complete, self-contained WordPress theme.
Lovable-specific notes
- Lovable uses Tailwind heavily. All compiled classes are captured.
- Framer Motion animations used by Lovable compile to CSS keyframe animations — these are captured as static CSS and work without React.
- If Lovable added Supabase auth (login forms, protected routes) — these are preserved as HTML forms but need a WordPress auth plugin to function.
- Lovable's AI-generated copy is captured verbatim in the HTML. ACF fields are auto-generated for each heading and paragraph so you can edit content in WordPress admin without touching code.
Starting from Bolt.new
Step 1: Get a Bolt preview URL
Bolt runs on StackBlitz. In the Bolt editor, click "Deploy" → "Deploy to Netlify" or "Open in new tab" (which gives a StackBlitz preview URL). Either works:
- StackBlitz preview:
https://xxxx.stackblitz.io— publicly accessible - Netlify deploy:
https://xxxx.netlify.app— publicly accessible
Step 2: Convert to WordPress
- Paste the StackBlitz or Netlify URL into StaticToWP.
- Download the theme zip.
- Install in WordPress: Appearance → Themes → Upload → Activate.
Bolt-specific notes
- Bolt often uses Vite + React. The Vite build output has hashed filenames — the automated capture doesn't rely on these filenames because it captures computed styles directly from the running page, not from source assets.
- Bolt's component interactivity (modals, dropdowns, accordion menus) — basic patterns are re-enabled by the theme's built-in interactivity script. Complex React state needs vanilla JS equivalents.
What the WordPress theme contains
Every theme generated from an AI design URL includes:
style.css— WordPress theme header (required)front-page.php— Pixel-perfect homepage. WordPress uses this automatically for the static homepage.functions.php— Theme setup, script enqueuing, ACF JSON load paths, block pattern category registrationtheme.json— Disables WordPress's default styles from overriding yours; sets content/wide layout widthsassets/css/main.css— All captured CSS: Tailwind output, Lovable/v0/Bolt component styles, custom properties, animation keyframesassets/js/*.js— All external JS libraries bundled locally (no CDN dependency)patterns/*.php— Gutenberg block patterns extracted from detected sections (hero, features, FAQ, pricing, etc.)acf-json/*.json— ACF field groups for every editable heading, paragraph, and imageelementor-template.json— Importable Elementor template (for clients using Elementor)- Standard templates:
index.php,page.php,single.php,archive.php,search.php,404.php,header.php,footer.php
Installing in WordPress (2 minutes)
- In WordPress admin: Appearance → Themes → Add New → Upload Theme
- Upload
wp-theme.zip→ Install Now → Activate - Go to Settings → Reading → Your homepage displays → A static page
- Select any existing page as the homepage (or create one called "Home")
- Visit your site — the AI-generated design is live
For editable content: install the free ACF plugin. Go to Custom Fields in WordPress admin — your auto-generated field groups appear with every heading and paragraph pre-filled. Change text or swap images without touching PHP.
The 60-second demo
The workflow in practice: open StaticToWP, paste your v0/Lovable/Bolt URL, wait for the conversion, download the zip, upload to WordPress, activate, done. From URL to live WordPress site in under 2 minutes including the WordPress install step.
This is what closing the AI design → WordPress gap actually looks like in 2026.
FAQ
Can I keep updating the AI design and re-converting?
Yes. The theme is a snapshot of the design at conversion time. If the design changes, reconvert. Use the ACF fields for minor content edits to avoid a full reconversion for text changes.
What if my v0 component is just one section, not a full page?
Expand it into a full page first (v0 can do this — prompt it to "add a hero, nav, and footer around this component"), deploy, then convert. The conversion works best with a full page rather than an isolated component.
Does this work with private Lovable projects?
The URL must be publicly accessible. Publish the Lovable project first (it generates a public URL even if not a custom domain). After conversion, you can take the Lovable project back to private — the WordPress theme is self-contained.
Will my WordPress site be fast after conversion?
The theme's CSS is inlined into a single file loaded synchronously. JavaScript is bundled locally. There are no external CDN dependencies. For Core Web Vitals: LCP is the HTML text (already server-rendered by PHP), CLS is eliminated (all layout is static), INP depends on your remaining JS interactions. A standard caching plugin (W3 Total Cache, WP Super Cache) completes the performance picture.