hostfleet /v2
deploy-ai-apps

We deployed the same Lovable app to 5 hosts. Here is what broke.

By Alex Harmon ·

Lovable, Bolt.new, and v0 ship full apps in minutes. What almost nobody tests: where does that generated code actually run well? The generator is the easy part — the host is what breaks at 2am.

We took a real Lovable-built invoice tracker (React + Vite + Supabase, ~2.4 MB bundle) and deployed the exact same build to five platforms. Same git tag, same env vars, same Supabase project. Only the host changed.

The contenders

PlatformBuild commandOutput dirRegion routing
Vercelnpm run builddist/Global edge
Netlifynpm run builddist/Global edge
Cloudflare Pagesnpm run builddist/330+ POPs
Fly.ioDockerfile + Nginx/usr/share/nginx/htmlfra only
Rendernpm run buildStatic siteUS-East by default

Results — first build, cold

PlatformFirst buildBundle served gzippedTTFB EU (Frankfurt)TTFB US (Ashburn)Notes
Cloudflare Pages42 s38 ms41 msBrotli out of the box
Vercel58 s44 ms36 msBrotli, smart routing
Netlify71 s52 ms47 ms
Fly.io2 m 18 sgzip only29 ms119 msSingle region bit us in US
Render1 m 04 sgzip only88 ms54 msFree tier US-East

Cloudflare and Vercel are effectively a tie for a static Lovable app. Fly is fastest in-region but it is a single region by default — if your users are global, skip Fly for static.

What broke

Vercel — everything worked. Auth callback URL needed vercel.app added to Supabase allowed origins.

Netlify — SPA rewrites needed an explicit _redirects with /* /index.html 200. Lovable does not generate one. Silent 404 on every subroute until that was added.

Cloudflare Pages — same _redirects issue. Also: if your Lovable build embeds env vars at build time, CF needs them defined before the first deploy, not after. You cannot re-run the last build with new env vars; you have to push a new commit.

Fly.io — the generated Dockerfile copies dist/ to Nginx but Lovable apps with client-side routing need an explicit try_files $uri $uri/ /index.html;. Without it, hard reloads on /settings give 404.

Render — the free static tier is US-East only and it spins down the preview environments after 15 minutes. Fine for a demo, bad for a paying customer.

What it actually costs

For an AI-generated SaaS with modest traffic (say 100 MAU, 50k page views / month):

  • Cloudflare Pages — $0. Unlimited bandwidth, unlimited requests.
  • Vercel Hobby — $0 until you hit 100 GB bandwidth. Will push you to Pro ($20/mo) as soon as something goes mildly viral.
  • Netlify — $0 until 100 GB. Pro tier is $19/mo.
  • Fly.io — ~$2-5/mo for one 256 MB VM + small bandwidth. Scales differently.
  • Render — $0 on static, but spin-down on free tier makes it unusable for anything but demos.

Verdict for AI-generated apps

If your AI builder outputs static + client-rendered (Lovable, Bolt, v0 default) and you have no budget — Cloudflare Pages, full stop. Unlimited bandwidth alone makes the math unbeatable.

If you already live in Vercel’s ecosystem and use their AI SDK, Edge Functions, or Postgres — Vercel is worth the price.

Netlify is competitive but loses on bandwidth caps and the SPA rewrite footgun.

Fly and Render are excellent for specific shapes (regional compute, containerized backends) but wrong defaults for a Lovable static deploy.


We verified these numbers 2026-04-20 with a real deploy. Methodology and build logs are on our GitHub — see the about page.