Vibe Liftoff

You built it with AI. Here is where to host it, what it costs and how to fix what breaks. Every price is sourced and dated.

Which tool did you build with?

AI builders with the easiest and cheapest host for each
Builder What it is Easiest host Cheapest host
Lovable Browser-based AI app builder Easiest: Netlify Cheapest: Cloudflare Pages
Bolt.new Browser-based AI app builder Easiest: Netlify Cheapest: Cloudflare Pages
Cursor AI code editor (desktop) Easiest: Vercel Cheapest: Cloudflare Pages
Claude Code AI coding agent (terminal) Easiest: Railway Cheapest: Cloudflare Pages
Replit Browser IDE + AI Agent + hosting Easiest: Stay on Replit Cheapest: Render
v0 Vercel's AI app builder Easiest: Vercel Cheapest: Cloudflare Pages
Windsurf AI code editor (desktop) Easiest: Netlify Cheapest: Cloudflare Pages

Four stops to a live app

  1. Your builder 2 steps

    First, check your project type and get the code onto GitHub.

  2. The host 2 steps

    Then import the repo on the host and confirm the build settings.

  3. Settings 3 steps

    Next, add env vars, the refresh fallback and login redirect URLs.

  4. Your domain 1 step

    Last, point your own domain at the host.

Every guide follows these eight steps for its builder and host. Try Lovable to Netlify, Bolt.new to Netlify or all 28 guides.

The settings you will actually touch

Most broken launches come down to two things: environment variables that stayed behind in the builder, and a host that does not know your app is a single page. This is what they look like for Lovable, Vercel and Netlify.

Netlify: Project configuration → Environment variables (add them before the first build)
Environment variables to copy fromLovable
Key Value
VITE_SUPABASE_URL Copy from Lovable
VITE_SUPABASE_PUBLISHABLE_KEY Copy from Lovable
VITE_SUPABASE_PROJECT_ID Copy from Lovable
SUPABASE_URL and SUPABASE_PUBLISHABLE_KEY (server-side, TanStack Start projects) Copy from Lovable

Changed a value? Rebuild. Vite bakes variables in at build time. Blank page after deploying?

vercel.json Vercel
{
  "$schema": "https://openapi.vercel.sh/vercel.json",
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}

Stops the 404 on refresh. Vercel details

public/_redirects (ends up in dist/_redirects) Netlify
/*  /index.html  200

Stops the 404 on refresh. Netlify details

What hosting costs

Free tiers and entry prices, checked 17 Oct 2026 against each host's own pricing page.

Host Free tier Paid from Commercial use on free
Vercel Free tier Hobby: $0 — 100 GB data transfer, 1M CDN requests, 1M function invocations / month $20/mo No
Netlify Free tier Free: $0 forever — 300 credits/month $9/mo Unverified
Cloudflare Pages Free tier Free: unlimited sites, seats, requests and bandwidth for static assets $5/mo Unverified
Railway Limited free Free Trial: $5 one-time credit for 30 days; then Free plan with $1/month of usage $5/mo Unverified
Render Free tier Hobby workspace $0: free static sites + free 512 MB web service that sleeps after 15 min idle $7/mo Unverified
Fly.io Trial only No free tier — free trial of 2 VM hours or 7 days, whichever comes first ≈$2.19/mo n/a
DigitalOcean App Platform Free tier Free: 3 static-site apps, 1 GiB outbound transfer per app per month $5/mo Unverified
Hostinger No free tier No free tier — prepaid plans with a 30-day money-back guarantee $2.99/mo n/a

Full pricing with databases and auth

Errors that break launches

Supabase warns “RLS disabled” — your table is public Your Supabase public key is shipped to every visitor's browser — that's by design. Row Level Security (RLS) is what decides which rows each visitor may touch.

“new row violates row-level security policy” (42501) RLS is on (good) but there is no INSERT/UPDATE policy that allows this user to write this row — or the user isn't signed in on the deployed site, so auth.uid() is null.

Page works, but refreshing it gives a 404 Single-page apps (React + Vite, React Router) have one real file — index.html. Routes like /dashboard exist only in JavaScript. When you refresh, the host looks for a file called /dashboard, doesn't find one and returns 404.

Blank page or “supabaseUrl is required” after moving off the builder Builders inject keys for you; your .env file is (correctly) not in Git, so the new host builds without them.

Google login sends you back to localhost (or “redirect_uri_mismatch”) Two lists must include your live URL: your auth provider's allowed redirect URLs (Supabase's Site URL defaults to http://localhost:3000) and, for Google, the Authorized redirect URI in Google Cloud, which must be Supabase's callback URL.

Deploy succeeds but shows a blank page or “Page not found” The host built your project but served the wrong folder. Vite outputs dist/, Create React App outputs build/, Next.js static export outputs out/. A wrong setting serves your raw source (blank page) or nothing.

Firebase: “This domain is not authorized for OAuth operations” Firebase only allows sign-in from domains on the Authorized domains list. Your new hosting domain isn't on it. Projects created after April 28, 2025 also don't include localhost by default.

Clerk: “Development keys” warning or sign-in broken in production Clerk development instances are for local testing and have usage limits. Production needs a production instance with its own keys, your own domain verified via DNS, and your own OAuth credentials for social providers.