On February 6, 2026, Salesforce moved Heroku into sustaining engineering: security patches and stability fixes, no new features, no new Enterprise contracts. Eight months later, FlightFormation's Heroku-alternatives guide — updated October 2026, written by a vendor that literally sells a Heroku autoscaling add-on — gives Docker-ready teams leaving the frozen platform a clear steer: Fly.io, for its lightweight regional VMs and a CLI the guide calls excellent. Pick your regions, get far more control than Heroku ever gave you, keep a great developer experience.
It is good advice as far as it goes. But "regions plus a great CLI" is a shape, not a vendor, and the same shape prices very differently depending on who owns the regions. Here is one reference stack — a small production app in two regions with Postgres and 100GB of monthly egress — priced three ways. The rest of the post is the teardown behind each cell.
| Heroku (frozen baseline) | Fly.io (the guide's pick) | Two Hetzner boxes + Render-compatible API | |
|---|---|---|---|
| App compute, 2 regions | 2× Standard-1X dynos at $25/mo: $50/mo — and Common Runtime still only runs in the US and EU | 2× shared-cpu-2x·512MB at $4.39/mo: $8.78/mo, any of 35+ regions | 2× CPX22 (2 vCPU/4GB) at $7.99/mo: ~$16/mo across 2 of 6 Hetzner locations |
| Postgres | Heroku Postgres billed separately on top | Managed Postgres Basic: $38/mo (shared 2x CPU, 1GB RAM) + $0.28/GB storage | Self-run Postgres on the same boxes: $0 marginal + your ops time |
| 100GB egress | Included (dyno bandwidth model) | NA/EU egress at $0.02/GB: $2/mo | Included (20TB per box): $0 |
| Realistic total | ~$50/mo + Postgres, single-region-per-app in practice | ~$53/mo all-in for two regions | ~$16/mo + ops time for two regions |
Scope box before anyone forwards the table: Counted: the monthly platform bill for the reference stack as defined above, with Hetzner euros converted roughly at par. Not counted: the engineering time to operate self-run Postgres and the boxes (the Hetzner column's real price), domain registration, and anything outside the stack. And the reconciliation line the table needs: Heroku cannot actually run this reference stack — Common Runtime apps get the US or the EU, and more regions require enterprise Private Spaces — so its column is the price of not having multi-region, which is precisely why the guide steers people away.
What the guide gets right about ex-Heroku teams
FlightFormation's diagnosis of what departing teams miss is sharper than its prescription, and worth quoting: Fly.io runs "your app in lightweight VMs close to your users: pick your regions, and their network routes each request to the nearest one," built "by people who clearly care about infrastructure (the CLI and the engineering blog are both excellent)," with "far more control than Heroku ever gave you." Strip the vendor name and that is a perfect description of the unmet need: control without toil. Heroku's deal was never just git-push — it was git-push without thinking about regions, runtimes, or routing. Teams leaving don't want their servers back; they want Heroku's simplicity with the two things Heroku withheld: real multi-region deployment and runtime control.
The guide is also honest about why Render — "the platform most people mean when they say Heroku successor," with Starter at $7 and Standard at $25 after dropping per-user pricing in April 2026 — isn't its pick for this segment. Render replicates Heroku's simplicity-first shape; Fly.io offers what Heroku never did. For Docker-ready teams, the binding constraint was never "make deploy easy" but "let me pick regions and touch the runtime," and a Heroku clone doesn't fix that. The guide's cons list for Fly.io is equally candid: steeper learning curve, no add-on marketplace, more manual setup all around.
That tradeoff framing is the right lens. The question is whether the regional-VM-plus-great-CLI pitch survives contact with its own meter — and what the same pitch costs when the regions are datacenters you rent by the box.
Where Fly.io's meter runs fastest
Fly.io's October 1, 2026 price list rewards small VMs and taxes everything around them. The compute itself is genuinely cheap: shared-cpu-1x with 256MB at $2.19 a month, 2x at $4.39, all the way to performance-16x at $528. Billed by the second, auto-stop available, a shared IPv4 and unlimited Anycast IPv6 free with every app. For the app tier of the reference stack, $8.78 for two regions is barely a line item — one-sixth of Heroku's dyno bill for a capability Heroku can't offer at any price on Common Runtime.
The meter bites in three places, and the sensitivity analysis lives there:
Postgres dominates the bill. At $38 a month for the Basic plan plus $0.28 per provisioned GB, managed Postgres is 4x the app compute in the reference stack. That ratio inverts as apps grow — a performance-2x fleet dwarfs its database — but for the small-team shape the guide targets, the database is the bill. Fly.io knows it: this is the standard managed-everything tax, and teams that self-run Postgres on a Fly volume (or anywhere else) delete most of the delta at the cost of owning backups and failover.
Egress scales with success, asymmetrically. North America and Europe egress at $0.02/GB is gentle — 100GB costs $2 — but Asia-Pacific, Oceania, and South America run $0.04 and Africa and India $0.12. A team that takes "pick your regions" literally and serves real traffic in Johannesburg or Mumbai pays 6x the egress rate of its Frankfurt traffic. This is the standard cloud-egress story in miniature, and it compounds with region count: every region you add for latency also adds a metered egress surface.
Regions multiply the small numbers, not just the big ones. Volumes bill $0.15/GB provisioned (not used), snapshots $0.08, a dedicated IPv4 $2 a month. None of this matters once; across three or four regions with attached storage it becomes a second Postgres. The guide's "granular pay-as-you-go pricing if you want fine control" is real — it is also a meter on every axis simultaneously.
None of this invalidates the pick. Roughly $53 a month for a two-region app with managed Postgres is a fine price for what Heroku charged $50 in dynos alone without delivering. It just means the pitch to price is "regions plus CLI plus managed Postgres at 4x your compute" — and that last clause is where the owned-hardware comparison gets interesting.
The same shape on hardware you rent by the box
Now re-price "regions plus CLI" with Hetzner datacenters as the regions and a Render-compatible API as the CLI's backend. Two CPX22 boxes (2 vCPU, 4GB RAM each) at $7.99 a month — one in Falkenstein, one in Ashburn — cost about $16 all-in, with 20TB of included traffic per box and self-run Postgres as a container next to the app for zero marginal dollars. The git-push deploy, the preview environments, the TLS, the health checks: all of that lives in the platform layer on top, addressed through one API the same way flyctl addresses Fly.io's. The developer promise is identical — pick regions, ship from the CLI — while the cost structure flips from per-unit meters to flat boxes.
Run the sensitivity the table promised, because the two cost shapes cross in instructive places:
- Region count. A third region costs ~$4.39 on Fly.io (one more small VM) versus ~$8 on Hetzner (one more box) — the gap narrows as you add regions, because Fly.io's per-VM granularity beats per-box granularity at small sizes. But Hetzner only has six locations (Falkenstein, Nuremberg, Helsinki, Ashburn, Hillsboro, Singapore) against Fly.io's 35-plus, so the "add a region" game ends early on owned hardware. If your latency map needs São Paulo or Sydney, there is no Hetzner box to buy.
- Egress volume. At 1TB a month, Fly.io adds $20 (NA/EU) while Hetzner adds $0 against its 20TB allowance. Bandwidth-heavy workloads — media, downloads, chatty APIs — are where flat boxes win by the most, and the win grows with every gigabyte.
- Postgres posture. The $38 managed plan versus $0 self-run is the single biggest line in the comparison, and the only one priced in toil rather than dollars. Self-running Postgres on two boxes means you own backups, failover, and the 3 AM page. For a team with any ops comfort this is a solved problem (Patroni, Stolon, or just pgBackRest plus a runbook); for a team with none, it is the entire argument for paying Fly.io.
The honest summary: owned hardware wins the dollars by ~3x on the reference stack and more on bandwidth, while Fly.io wins the toil and the map. Which matters more is a staffing question, not a pricing question.
When to just pay Fly.io
A comparison that only prices the bill would be doing the guide's readers a disservice, because Fly.io's advantages don't fit in a cost table. Anycast global routing with automatic regional failover is a genuine capability, not marketing: traffic lands on the nearest healthy region without DNS games or a hand-rolled load balancer. Going from one region to five is a config change, not a procurement cycle, and Managed Postgres includes the backups, the failover, and the absence of a pager. And the CLI-plus-docs quality the guide praises is load-bearing — fly launch to fly deploy is a shorter path than provisioning boxes, joining them to a fleet, and installing a platform, however good that platform's own CLI is.
The decision splits cleanly. Take Fly.io if your users span continents Fly.io serves and Hetzner doesn't, if nobody on the team will own Postgres, or if multi-region needs to work this afternoon. Take the owned-hardware shape if your traffic concentrates in North America and Europe, your bandwidth bill has a pulse, and someone can own a database. And note the escape hatch the guide itself hints at: these aren't lifetime commitments, because a Render-compatible deploy API means the app manifest moves between shapes without a rewrite — start on per-unit meters, graduate to flat boxes when the egress line crosses the box line, keep the same CLI muscle memory throughout.
Heroku taught a generation that deploy could be boring, and its freeze doesn't un-teach that — it just moves the boring to new vendors. FlightFormation is right that Fly.io's regions-plus-CLI is the closest thing to Heroku's soul with the control Heroku withheld. It is also right that every platform fits somebody and fails somebody else. Price the Postgres, price the egress, count your regions — then pick the shape whose meter matches your traffic, not the one whose marketing matches your nostalgia.
Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own. The same regions-plus-CLI promise, with the regions as Hetzner datacenters and the meter as flat boxes. Star the repo on GitHub or deploy your first app today.



