Skip to main content

Back4App Ranked 10 Heroku Replacements — Where Render, Railway, and Fly.io Actually Land

12 min readDora NodaDora Noda
Share
On this page

On February 6, 2026, Heroku's chief product officer published "An Update on Heroku" and made it official: sustaining engineering model, no new features, no new Enterprise contracts for new customers. Within weeks, Back4App updated its Heroku-alternatives guide — last revised February 2026 — ranking ten replacements against a platform that is no longer evolving. If you are an ex-Heroku team picking a landing zone, three names appear on every shortlist: Render, Railway, and Fly.io. Here is where they actually land on the three axes that decide it, and what the same real workload costs on each versus a flat-rate box you own.

AxisWinnerRunner-upThe catch
Usable free tierRender (750 hrs/mo)Nobody — the other two have noneRender sleeps after 15 min idle
Cheapest always-on floorFly.io (~$2/mo)Railway (Hobby $5 + usage)Fly.io pricing needs a spreadsheet
Closest Heroku UX matchRenderRailwayFly.io wants a Dockerfile

The rest of this post is the evidence behind that table, plus the recompute the ranking doesn't do: one 4vCPU/8GB small-production envelope priced on all three 2026 entry tiers against a Hetzner CX22 at €4.35 a month under Cluster API — and the structural tax the three cheapest hosted answers all share.

Why this ranking matters now​

Heroku's February 2026 announcement changed the migration question from "should we leave" to "where do we land." The platform still runs — existing apps, pipelines, and add-ons are unaffected — but the roadmap is frozen, and new Enterprise contracts are gone. The economics were already pushing teams out: Heroku killed its free tier in November 2022, paid dynos start at 5amonthforanEcodyno,aStandard1Xwith512MBruns5 a month for an Eco dyno, a Standard 1X with 512MB runs 25 a month, and realistic production starts around $85–100 a month before add-ons. Add the operational ceilings teams kept hitting — the 30-second request timeout, daily dyno restarts, AWS-only regions — and the sustaining-mode news landed as a deadline, not a surprise.

Back4App's guide is the most current systematic ranking of the exits: ten platforms compared on pricing, free tiers, and migration notes — Back4App, Sevalla, Render, Fly.io, DigitalOcean App Platform, Railway, Vercel, Upsun, Coolify, and AWS Elastic Beanstalk. This post zooms in on the three general-purpose PaaS names that dominate ex-Heroku shortlists, because they represent three genuinely different answers: Render's Heroku-like managed simplicity, Railway's usage-based minimalism, and Fly.io's edge-first Docker control.

Axis 1: who still has a usable free tier​

Only one of the three has an ongoing free tier, and it comes with a nap schedule.

Render's free tier gives 750 hours a month for web services — enough to run one service full-time — plus a free Postgres database. The catch is the sleep: free services spin down after 15 minutes of inactivity, and the first request after that takes on the order of a minute to answer. For a side project with sporadic traffic, that is annoying but free. For anything with users, it is a trial, not a tier.

Railway has no free tier at all. It removed the free plan in 2023 and replaced it with a one-time 5trialcreditthatrequiresnocreditcard—enoughtokickthetiresfordaystoweeks,thenyouareonHobbyat5 trial credit that requires no credit card — enough to kick the tires for days to weeks, then you are on Hobby at 5 a month (which includes $5 of usage) or you leave.

Fly.io is the subtlest case. It deprecated the plans that included a $5 monthly free credit for any organization created after October 7, 2024. New accounts get a short trial — 2 VM hours or 7 days, whichever ends first — then pay from the first dollar of usage with a credit card on file. Only grandfathered older accounts keep any free allowance.

Verdict: Render wins this axis unopposed. If your migration plan starts with "run staging for free while we evaluate," Render is the only one of the three that lets you.

Axis 2: cheapest always-on floor​

Flip the question from "free" to "cheapest to keep awake 24/7," and the ranking inverts.

Fly.io wins the floor outright. A shared-cpu-1x Machine with 256MB RAM running around the clock costs roughly 2.02amonthat2026rates,billedpersecond.Nothingelseinthiscomparisontouchesthatnumberforanalways−onprocess.Thecaveatsarereal—per−componentbillingacrossMachines,volumes(2.02 a month at 2026 rates, billed per second. Nothing else in this comparison touches that number for an always-on process. The caveats are real — per-component billing across Machines, volumes (0.15/GB a month), egress, and IPs means predicting a full stack's bill takes a spreadsheet, and there is no free credit softening the first invoice — but the floor itself is undisputed.

Railway sits in the middle with a floor that depends on appetite. Hobby is 5amonthincluding5 a month including 5 of usage, metered at 0.00000772pervCPU−secondand0.00000772 per vCPU-second and 0.00000386 per GB-second with egress at 0.05/GB.Atinyalways−onserviceplusadatabaselandsaround0.05/GB. A tiny always-on service plus a database lands around 5–10 a month in practice. Note the sharp edge: Railway has no hard spending cap, so usage billing keeps going past your included credits — set alerts.

Render's floor is the highest and the most predictable: Starter at 7amonthperservice,alwayson,nocoldstarts,nometeranxiety.Oneservice,7 a month per service, always on, no cold starts, no meter anxiety. One service, 7. The price of that predictability shows up the moment you have more than one service, which is exactly what the recompute below measures.

Verdict: Fly.io at ~2amonth,lessthanathirdofRender′s2 a month, less than a third of Render's 7 Starter, with Railway's ~$5–10 in between.

Axis 3: closest Heroku UX match​

Back4App names Render the closest Heroku UX match, and the day-to-day evidence supports it. Render is git-push deploy with native buildpacks — push code, the platform detects the runtime and builds it — plus a dashboard-first workflow with no CLI to learn and no Dockerfile to write. That is the Heroku muscle memory, preserved almost exactly: dyno-like services, managed Postgres with point-in-time recovery and replicas, preview environments as full infrastructure copies.

Railway is a close second for a different kind of Heroku nostalgic. railway up from the terminal is arguably even faster than git push heroku main for the first deploy, Railpack/Nixpacks auto-detects the stack without a Dockerfile, and PR previews auto-create and auto-delete on merge. Where it diverges is billing philosophy — pure usage metering instead of dyno sizes — and Postgres, which is containerized with an experimental HA add-on rather than Render's fully managed offering.

Fly.io finishes last on Heroku-ness by design. It is flyctl-first, effectively requires a Dockerfile, and hands you Machines, volumes, regions, and a playground of knobs. That control is the product — global edge deployment, scale-to-zero Machines that wake on request, per-second billing — but nobody migrating off Heroku for simplicity lands here for the workflow. You land here for the bill and the edge network.

Verdict: Render, then Railway, then Fly.io — the exact reverse of the floor-price ranking. Cheap and Heroku-like are opposite ends of this shortlist.

The recompute: one 4vCPU/8GB envelope, four bills​

Rankings price plans. Teams pay for stacks. So here is the same small-production envelope — web service, background worker, Postgres, Redis, serving roughly 500 requests a minute — priced the way each platform actually bills it in 2026, against the same stack consolidated on owned hardware. First, the envelope, stated explicitly so the comparison is checkable:

SliceProvisioned
Web (1 service)1 vCPU / 2 GB
Worker (1 service)1 vCPU / 2 GB
Postgres1.5 vCPU / 3 GB
Redis0.5 vCPU / 1 GB
Total provisioned4 vCPU / 8 GB

On the hosted side, each slice is billed as its own service or metered separately. Render lands around 50–60amonth:twoStandard−ishservicesat50–60 a month: two Standard-ish services at 25 each plus Postgres on a flexible plan (compute from ~6plus6 plus 0.30/GB of storage) and Redis. Railway meters the same footprint at roughly 25–40amonth,becauseusagebillingchargesactualconsumption—anidlingworkersipsvCPU−secondsinsteadofrentingadyno.Fly.iocomesinaround25–40 a month, because usage billing charges actual consumption — an idling worker sips vCPU-seconds instead of renting a dyno. Fly.io comes in around 20–35 a month with a self-managed Postgres Machine — or materially more if you want managed Postgres, whose Basic plan starts at $38 a month before storage. (These hosted rows track the July 2026 same-app estimates published by Techsy, re-checked against live vendor pricing that month; your traffic shape moves each number, but not the ordering.)

Now the fourth bill. That same stack's measured average draw — not its provisioned slices, but what it actually consumes at ~500 requests a minute — sits around 0.5–1 vCPU and 1.5–2GB of RAM. It fits comfortably on a single Hetzner CX22 (2 shared vCPU, 4GB RAM, 40GB NVMe, 20TB of included traffic) at €4.35 a month, run as a Cluster-API-managed node where the PaaS layer handles scheduling and orchestration. The comparison is hosted-PaaS versus self-managed-PaaS on owned machines — not a raw SSH box. The provisioned-vs-actual gap is not a trick in this table; it is the mechanism being priced. Hosted platforms bill the slices. The flat box absorbs the actuals.

PlatformSame 4vCPU/8GB envelopeBilling logic
Render~$50–60/moPer-service flat rates
Railway~$25–40/moMetered actuals, $5 Hobby base
Fly.io~$20–35/mo (self-managed PG)Per-second Machines + volumes + egress
Hetzner CX22 under Cluster API€4.35/mo ($5)Flat box, stack consolidated

Before anyone calls the single data point flattering, here is the sensitivity row. Step up to a Growth-tier shape — 2 web services, a worker, Postgres, Redis at ~2K requests a minute — and the hosted column roughly triples: ~130–175onRender, 130–175 on Render, ~80–120 on Railway, ~$60–90 on Fly.io. The flat side steps up one or two box sizes and stays an order of magnitude below the cheapest hosted row. The gap widens with scale; it does not close.

And the honest caveats, because the flat number is real but not free: the CX22's vCPUs are shared cores, not dedicated; you operate Postgres yourself — backups, replication, point-in-time recovery are your runbook now, not a checkbox; and one box is a single point of failure until you add a second node and fail over. Anyone quoting €4.35 without those three sentences is selling something.

The structural tax: per-service multiplication​

Look at the recompute table again and notice what happens when the stack grows by one. Add a second worker, a staging copy, or a small internal tool, and Render adds another $7–25 a month. Railway and Fly.io add their metered share — smaller, but still a new line item scaling with the service count, plus egress and storage per mouth. Every hosted answer multiplies with services. The flat box multiplies with nothing until it is full: the marginal cost of the next small service on a half-empty node is zero.

Usage-based billing softens this tax but does not remove it. Railway's meter and Fly.io's per-second Machines both track consumption beautifully — idle services cost little — yet each service still carries its own base load: its runtime overhead, its volume, its share of egress at 0.05/GB(Railway)or0.05/GB (Railway) or 0.02–0.12/GB by region (Fly.io). The meter taxes every mouth; the box taxes none until capacity runs out. That is the structural difference, and no pricing restructure changes it — Render's April 2026 workspace overhaul and Railway's plan tuning move numbers between rows without touching the shape.

This is also why the free-tier axis and the floor-price axis point at different winners. Free tiers and cheap floors optimize the first service. Per-service multiplication punishes the tenth. Ex-Heroku teams should price the stack they will have in a year — web, worker, staging, Postgres, Redis, the internal tool nobody admits to — not the single dyno they start with.

Which landing zone for which team​

The three axes refuse to agree, which is the point. Pick by what you optimize:

  • Render if the priority is Heroku-likeness and predictable bills: git-push deploys, buildpacks, managed Postgres, $7-per-service math you can do in your head. Pay the per-service premium knowingly.
  • Railway if the priority is usage simplicity: the fastest first deploy of the three, metered billing that rewards idle services, Postgres that is good but not fully managed. Watch the uncapped meter.
  • Fly.io if the priority is cost at scale or global edge: the lowest floor and the cheapest Growth-tier row, scale-to-zero Machines, at the price of Dockerfiles and spreadsheet bills.
  • A flat box under a PaaS layer if the priority is cost control with PaaS ergonomics: the whole small-production envelope for roughly the price of one Render Starter, with you holding the Postgres runbook.

Heroku taught a generation that deployment should be a git push, not a project. Sustaining mode ends the platform's evolution, not the idea — every option above keeps the push-to-deploy contract. The question was never whether the idea survives. It is how much per-service multiplication you pay for it.

Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own. Star the repo on GitHub or deploy your first app today.

Related articles

Check your move before you migrate

Free browser tools: check a render.yaml or your Render scripts against bex, or turn a Heroku app or docker-compose.yml into a draft render.yaml. Nothing you paste leaves your browser.

Open the migration tools