Deploy a Vibe Coded App: Vercel vs Railway vs Fly.io

· 5 min read · Guides

Deploy a Vibe Coded App: Vercel vs Railway vs Fly.io

To deploy a vibe coded app, use Vercel if it's a front-end or Next.js app, Railway if it has a backend and a database, and Fly.io if you want control over regions and are comfortable with Docker. For most first deploys, that means Vercel or Railway.

One catch: pricing and licence terms decide this as much as the tech does. Check them before you pick.

Pick by what your app is, not by what's popular

Your AI editor probably built one of three things. Each fits a different host.

  • A front-end or full-stack Next.js app with a hosted backend like Supabase or Firebase: Vercel.
  • An app with its own server, a worker or a database (Express, FastAPI, Django, a Postgres you want next to the code): Railway.
  • A containerised app, or one that should run close to users in specific regions: Fly.io.

If you can't say which one you have, ask your agent: "Does this app need a long-running server, or is it just pages plus serverless functions?" The answer usually settles it.

The quick comparison

VercelRailwayFly.io
Best forFront ends, Next.jsBackends plus databasesDocker apps, multi-region
Entry costHobby is free, personal use onlyFree plan with $1 of resources; Hobby $5/moPay as you go, no free tier
Deploy styleGit push or CLIConnect a GitHub repoCLI (flyctl) and a Dockerfile
Main gotchaFree plan bans commercial useUsage billing can climbShort trial, then a card

Vercel: easiest, with one rule that bites

Vercel is the path of least resistance for anything Next.js or static. Push to Git, get a live URL.

The rule people miss is that Vercel's fair use guidelines limit the Hobby plan to non-commercial personal use. Vercel's definition also covers taking payment from visitors, showing ads, and sites built mainly for affiliate links. If you plan to charge for your app, Pro costs $20 a month. Read the details in this breakdown of the Hobby plan terms.

Limits matter less than the licence, but they exist. Hobby includes 100 GB of Fast Data Transfer and 1 million function invocations a month, and hitting a limit pauses the project rather than billing you.

Vercel is a weaker fit for apps that need a process running all the time, like a bot, a queue worker or a websocket server. Put those somewhere else.

Railway: the "it has a backend" option

Railway suits the apps AI tools love to generate: an API plus Postgres plus maybe a worker, all in one project. You can deploy a GitHub repo in one click.

Railway's pricing docs list a Free plan at $0 with $1 of free resources, Hobby at $5/month, and Pro at $20/month. The subscription counts toward usage. On Hobby, if you use $3 in resources you pay $5, and if you use $8 you pay $8.

That's the trade-off. Billing is usage-based, so a service that sits at high CPU or RAM all day costs more than the headline number. Check the usage page after your first week, not after your first invoice.

Fly.io: more control, more setup

Fly.io runs your app as Machines you can place in chosen regions. It supports any language or framework via Dockerfiles, so it's a good fit when you already have a container or want one.

Costs first. Machines are billed by the second from $2.19 a month, with no free tier. The trial is up to 2 hours of Machine runtime or 7 days, whichever comes first, with no card, and this review notes that a card is required after it. Some older sources mention a $5 trial credit, so check Fly's own pricing page before you sign up.

The flow is usually fly launch to generate config, then fly deploy. If you've never touched a Dockerfile, expect a learning curve. Your agent can write one, but you should read it.

Before you deploy: the checklist that saves you

Most failed first deploys aren't about the host. They're about the code assuming it's still on your laptop.

  1. Move secrets into environment variables. Search the repo for API keys, database URLs and tokens pasted straight into code.
  2. Add a .env.example with names but no values, so you remember what to set on the host.
  3. Run a production build locally. npm run build (or your equivalent) catches errors that dev mode hides.
  4. Read the port from the environment. Many hosts assign the port. Hard-coding 3000 can break the deploy.
  5. Don't rely on local files. Uploads saved to disk may vanish on redeploy. Use object storage or a database.
  6. Check the database. A SQLite file that worked locally often needs a hosted database or a persistent volume.
  7. Turn off debug mode and open CORS only to your real domain.

A prompt to paste into your agent

Run this in Cursor, Claude Code or whatever you use, before you touch the host:

Audit this project for deployment to [Vercel / Railway / Fly.io].
1. List every environment variable the code reads and any secrets hardcoded in the repo.
2. Confirm the production build command and the start command.
3. Check that the server reads PORT from the environment and listens on 0.0.0.0.
4. Flag anything that writes to the local filesystem or uses SQLite.
5. Create .env.example and the minimal config file the host needs.
Do not change app behaviour. Show me a diff and explain each change.

The last line matters. Agents like to "improve" things while they're in there, and a deploy is the wrong time for surprises.

The first deploy, step by step

  1. Push the project to GitHub. Make sure .env is in .gitignore and was never committed.
  2. Create the project on your host and connect the repo (on Fly.io, run fly launch from the project folder).
  3. Add your environment variables in the host's dashboard.
  4. Deploy, then open the live URL and test the main flow by hand: sign up, save something, reload.
  5. Read the logs. If something fails, paste the exact error into your agent along with the build command and the host name.
  6. Only then add a custom domain.

Cost sanity check

Set a spending limit or alert if the host offers one. Usage-billed platforms charge for what your app consumes, including a runaway loop or a bot hammering your API. One credible pricing review warns that without a configured hard limit, charges accrue with no ceiling. That's a third-party claim about Railway, so check what controls your own account gives you.

Also remember that the database is often the real bill. Fly's managed Postgres is listed at $38/mo for the Basic tier by one review site, so confirm current prices on Fly's site before you commit.

FAQ

Can I deploy a vibe coded app for free?

Sometimes. Vercel's Hobby plan is free but only for personal, non-commercial projects. Railway has a free plan with a small $1 resource credit, which suits experiments. Fly.io has no free tier for new accounts, only a short trial. If you're charging users, plan to pay.

Which is easiest for a total beginner?

Vercel, if your app is Next.js or static. Railway is the next easiest when you have a backend, because you connect a repo and add variables in a dashboard. Fly.io asks the most of you, since it leans on the CLI and Docker.

Why does my app work locally but break after deploy?

Usually environment variables, the port, or local files and databases that don't exist on the host. Run the audit prompt above, check the host's build and runtime logs, and paste the exact error to your agent instead of describing it.

Cover photo: Kevin Ache on Unsplash

// the weekly drop

5 app ideas nobody built yet. Every week.

Real problems people complain about, who would pay, how hard it is to build, and the prompt to start with. Free.

One email a week. Unsubscribe in one click.