Fly.io abandoned its planned integration with Supabase to build Fly MPG, a managed PostgreSQL service based on Percona infrastructure. This decision ended a potential collaboration that would have brought Supabase’s multi-region Postgres clusters directly onto Fly Machines. Instead, Fly is now shipping its own "managed" database, superseding the unmanaged Fly Postgres that users previously operated themselves. For developers relying on Supabase Edge Functions, this shift means the underlying infrastructure landscape has fragmented rather than converged. You no longer need to guess if your backend will run on shared hardware or dedicated micro-VMs; the platforms are now distinct products with separate operational models.
Divergent architectural paths
Supabase continues to power Edge Functions with new capabilities like Background Tasks and WebSockets, allowing long-running workloads up to 400 seconds on paid plans. These functions run on Deno and can access ephemeral storage in the /tmp directory for intermediate results. Meanwhile, Fly.io focuses on full Node.js compatibility and native WebSocket support within its Firecracker micro-VMs. The two platforms solve latency differently: Supabase relies on HTTP-based APIs and connection pooling via Supavisor, while Fly uses direct TCP connections to its local NVMe volumes. I find the Supabase approach cleaner for serverless patterns, but Fly’s model offers lower cold-start variance for stateful applications.
| Feature | Supabase Edge Functions | Fly.io Managed Postgres |
|---|---|---|
| Runtime | Deno (V8 Isolates) | Node.js (Full) |
| Database Access | HTTP/REST + RPC | Direct TCP |
| Max Execution Time | 400s (Paid) | N/A (Persistent VM) |
| Storage Model | Ephemeral /tmp | Persistent NVMe Volumes |
The separation creates a gap in developer experience. Supabase does not offer raw TCP connections from its edge runtime, forcing developers to use the supabase-js client over HTTP. This adds a few milliseconds of latency compared to a pooled TCP connection, which is acceptable for most web apps but noticeable in high-frequency trading or real-time gaming scenarios. Fly’s new MPG service addresses this by providing a standard Postgres endpoint that integrates deeply with their security logic and machine scheduling.
Operational trade-offs and costs
Supabase remains the default for solo developers because its free tier includes two projects with 500 MB of storage each. Paid plans start at $25 per month, bundling auth, storage, and realtime subscriptions. In contrast, Fly’s pricing is more granular, with a small SQLite app costing about $9.20 per month including volume and egress fees. However, Fly’s managed Postgres requires selecting a specific plan and storage configuration separately, making cost prediction harder than Supabase’s flat rate. One criticism of Supabase is that its connection pooling via Supavisor can introduce complexity when using ORMs like Prisma, which require specific query modes to avoid prepared statement errors.
Fly’s reliability history also weighs on its reputation. Multi-hour control-plane incidents in 2023 and 2024 reminded users that PaaS is not synonymous with SLA guarantees. Supabase avoids this risk by running on major public clouds where recovery tools are mature. If you need database branching for CI/CD workflows, Neon offers a better fit than either platform, as Supabase’s branching feature is younger and geared toward preview environments. The question remains whether Supabase will develop a native edge-distributed database to compete with Turso’s sub-10ms read latency, or if it will continue to rely on centralized Postgres instances accessed via HTTP.
