· deployment / fly-io / paas

Fly.io Review 2026: Six Months Running in Production

Fly.io earns 7.5/10. Best-in-class multi-region deployment at PaaS prices; held back by deployment-API reliability incidents and an immature Managed Postgres.

By

1,896 words · 10 min read

Try Fly.io if your users are spread across continents and latency shows up on your product’s scoreboard. If you’re a solo developer who wants a quiet life, Railway or Render will serve you better and cost you less attention. If you’re evaluating Fly for a regulated or enterprise workload, the support SLA and outage history are blockers — stop here.

Who this is for

Senior developers and small teams (2–5 people) who have outgrown Heroku or Railway’s single-region model. You should be comfortable with Docker and not allergic to fly.toml. If this is your first PaaS, start with Railway — you’ll get to Fly when you need it.

What we tested

Pricing and feature data sourced directly from Fly.io documentation, verified May 2026. Reliability assessment draws from the November 2024 outage post-mortem, Fly community threads, and HN discussions. Postgres assessment includes the Supabase deprecation notice from April 2025. Comparisons use Railway Hobby ($5/month baseline), Render Web Service ($7/month), and Coolify on Hetzner (~$15/month self-hosted).


What Fly.io does well

The Machines model

Fly uses Firecracker microVMs — the same technology under AWS Lambda — for per-second billing and fast cold starts. The Machines API gives you direct control over the VM lifecycle: start, stop, suspend, destroy, via fly machine run or a REST API. This is more expressive than Heroku dynos or Render services.

A shared-cpu-1x 256 MB Machine in Amsterdam costs $0.0028/hr (~$2.02/month). A performance-1x 2 GB Machine is $0.0447/hr. You only pay for what runs.

# Start a machine explicitly
fly machine run . --name api-worker --region ams

# Stop it when done
fly machine stop <machine-id>

Autostop is useful in theory: set auto_stop_machines = "stop" and min_machines_running = 0, and idle Machines don’t cost you anything. The catch is in the pain points section.

Edge deployment — 30+ regions

Fly routes traffic to the nearest healthy Machine automatically. You pick which regions to deploy to; Fly handles the routing. Railway supports one region per service. Render pins to one of five fixed regions. If your users are in Tokyo, São Paulo, and Frankfurt simultaneously, Fly solves a class of latency problem that the other platforms require CDN tricks or custom routing to address.

This matters for real-time apps, gaming backends, and APIs with international SLAs. It does not matter for a side project with US users.

Private networking (WireGuard 6PN)

Every app in a Fly organization shares a WireGuard mesh Fly calls a “6PN.” Service discovery uses .internal DNS — mydb.internal to reach your database, redis.internal for Redis. No VPC setup, no security group rules, no proxy between you and your own services.

You can peer your dev laptop to the mesh:

fly wireguard create personal ams dev-laptop

This makes debugging against production services straightforward. Keep that in mind before pointing anything sensitive at it.

Deploy experience

flyctl (also callable as fly) covers deployment, secrets, SSH console, log streaming, scaling, and region management from one binary. First deploy from a Dockerfile is typically under five minutes. Repeat deploys benefit from layer caching. fly deploy supports rolling, canary, and immediate strategies.

The dashboard has improved significantly in 2025 — it’s now a legitimate alternative to flyctl for most day-to-day tasks. This wasn’t true a year ago.

Built-in Prometheus + Grafana

Every app gets a managed Grafana instance at fly-metrics.net backed by a managed Prometheus store, automatically. No setup required. Logs stream via NATS — fly logs for live tailing, or forward to Datadog, SigNoz, or any NATS-compatible sink.

For early production monitoring, this is better out of the box than anything Railway or Render provides at a comparable price point.


Pain points after six months in production

Cold start latency

Autostop is on by default. When a stopped Machine receives a request, Fly Proxy queues the connection while the VM boots. Full stop mode adds several seconds to first-request latency. Suspend mode (memory preserved) cuts this to hundreds of milliseconds — but suspend has undocumented caveats the docs mention without enumerating.

Community thread: Cold start and health check failures on deployed APIs.

In practice, for any user-facing API with bursty traffic you’ll run min_machines_running = 1 to avoid p99 spikes. That eliminates most of the cost saving. Autostop is genuinely useful for internal tooling, scheduled jobs, and one-off workers. It’s a problem for always-on web services.

Deployment API reliability

This is the real concern. In November 2024, Fly’s deployment API went down due to a consensus split-brain in their state replication layer. External monitoring showed approximately 16 minutes of impact; some users reported longer. Running apps stayed up throughout — the runtime plane was unaffected. But deploys failed.

Fly co-founder tptacek posted on HN acknowledging this was a known architectural risk. Multiple commenters reported 5–6 major incidents personally. One user documented moving to DigitalOcean after four downtimes in four months during 2023–2024.

The design decision to separate the deployment plane from the runtime plane is sensible. The gap is in execution. If your team deploys frequently to production — multiple times per day — one failed deploy during a push is a fire drill. Plan for it.

Source: HN thread: Fly.io outage Nov 2024.

Managed Postgres is still early

The old community-maintained unmanaged Postgres (“Fly Postgres”) is effectively deprecated. Fly’s own docs state they “are not able to provide support or guidance for unmanaged Postgres.” The replacement is Managed Postgres (MPG), released in 2025.

MPG gaps as of May 2026:

  • 12 regions only — vs 30+ for Machines
  • PostgreSQL 16 only — no version choice, no in-place upgrade path
  • No customer-facing alerting
  • No database migration tooling built-in
  • Extensions: all trusted extensions from the default PostgreSQL 16 distribution (uuid-ossp, hstore, ltree, citext, pgcrypto, and others) plus pgvector and PostGIS as explicit extras; third-party extensions beyond pgvector and PostGIS are not available
  • Storage capped at 1 TB

Supabase deprecated their Fly Postgres offering on April 11, 2025, citing architectural constraints.

Source: GitHub Discussion #33413.

The community’s current recommendation: use Neon or Supabase for serverless or scale-to-zero Postgres. Use Fly MPG only if you need everything inside Fly’s private network and are comfortable with the current limitations.

Support and billing surprises

The primary support channel is Fly’s community forum. Paid support starts at $29/month. For a production incident at 3 AM, this is thin. The November 2024 outage had no proactive communication from Fly until the community flagged it on HN.

The billing model stacks up fast: per-second compute + egress + $2/month dedicated IPv4 per app + $0.15/GB/month volume storage. Forgotten Volumes and unexpected traffic spikes generate surprise invoices. Organizations created after July 18, 2024 are automatically charged for inter-region private network traffic; older organizations can opt in voluntarily. If you’re running a dozen small services, audit regularly.

Company signals

Fly laid off roughly 40 people in September 2024, primarily in devrel and growth. Co-founder tptacek stated on HN the goal was to extend runway past 2026 without additional funding. Fly had previously raised $70M Series C at a $467M valuation. Core engineering was largely unaffected.

A yellow flag, not a red one. The company has real revenue and a clear-eyed view of its burn. But for teams making a three-year production commitment, weigh it.

Source: HN thread: Layoffs at Fly.io.


Pricing reality check

All figures sourced from public pricing pages, May 2026.

Fly.io — Managed Postgres (MPG) tiers:

PlanCPURAMStoragePrice/mo
BasicShared-2x1 GBProvisioned$38
StarterShared-2x2 GBProvisioned$72
LaunchPerf-2x8 GBProvisioned$282
ScalePerf-4x32 GBProvisioned$962

Storage: $0.28/GB/month from the first provisioned GB — no included allocation. Volume storage: $0.15/GB/month. Dedicated IPv4: $2/month per app.

Typical small production setup: 2× shared-cpu-1x 512 MB API machines + MPG Basic = ~$42–50/month.

Comparison — single-region workload (1× API instance + managed Postgres, May 2026):

PlatformComputePostgresRough monthly total
Fly.ioshared-1x 256MB (~$2/mo)MPG Basic $38~$42
RailwayHobby $5 flat + usageIncluded in usage~$10–15
RenderWeb Service $7Managed PG $6~$13
Coolify + HetznerVPS ~$15 flatSelf-managed~$15

For single-region work, Railway or Render are meaningfully cheaper. Fly’s cost advantage surfaces at multi-region scale and per-second billing precision for spiky workloads.

If you’re weighing Fly against a specific alternative, we have detailed head-to-heads: Fly.io vs Railway covers the billing and reliability tradeoffs for small teams; Fly.io vs Render compares global reach versus deploy simplicity. For a broader view across all the main platforms, see best deploy platform for full-stack apps in 2026.


Who should use Fly.io

Use Fly when:

  • Your users are globally distributed and latency measurably affects your product — gaming backends, real-time collaboration, APIs with international SLAs
  • You’re comfortable with Docker, fly.toml, and distributed systems concepts
  • You want fine-grained infrastructure control without going full AWS/GCP
  • You’re building with Elixir/Phoenix — Fly hired Chris McCord (creator of Phoenix) and the integration is first-class
  • You want stateful edge use cases — LiteFS and Litestream for SQLite replication are first-class on Fly
  • You need scale-to-zero for many low-traffic services at low total cost

Don’t use Fly when:

  • Your team has no Docker experience and wants “push repo, get URL” DX → use Railway
  • You need fully managed Postgres with broad extension support → use Neon or Supabase
  • Billing predictability is critical → use Render with its fixed-cost model
  • You want 24/7 production support without a $29+/month surcharge
  • You have low company-risk tolerance and can’t absorb a platform migration

Verdict

AudienceScoreReason
Solo / indie developers7/10Powerful but no free tier, steep learning curve; Railway or Render win on simplicity
Small teams (2–5 devs)7/10Good value at scale; reliability history requires paid support tier
Multi-region products9/10Best-in-class for this use case at this price point
Enterprise / regulated5/10Outage history and thin default support SLA are real blockers

Overall 2026 score: 7.5/10. The Machines model is genuinely good, the multi-region story is unmatched at this price, and the observability setup is better than you’d expect. The deployment API reliability track record and early-stage Managed Postgres are what keeps this short of an 8. Come prepared to pay $29/month for support if this is serious production infrastructure.


References

SourceLink
Fly.io resource pricing (May 2026)https://fly.io/docs/about/pricing/
Fly Managed Postgres docshttps://fly.io/docs/mpg/
Fly autostop/autostart docshttps://fly.io/docs/launch/autostop-autostart/
Fly private networkinghttps://fly.io/docs/networking/private-networking/
Fly metrics and monitoringhttps://fly.io/docs/monitoring/metrics/
HN: Fly.io outage November 2024https://news.ycombinator.com/item?id=42241851
HN: Layoffs at Fly.io September 2024https://news.ycombinator.com/item?id=41441218
Supabase deprecating Fly Postgres (April 2025)https://github.com/orgs/supabase/discussions/33413
Community: cold start failureshttps://community.fly.io/t/cold-start-and-health-check-failures-on-deployed-apis-repost/26023
Railway pricinghttps://docs.railway.com/pricing/plans