02/08/26

Heroku Is Gone, Here's Where Developers Are Going

Heroku moved to maintenance mode. Here's where teams are migrating and why.

5 Min Read

Heroku recently moved to a "sustaining engineering model." No new features, no new enterprise contracts. The platform stays running for existing customers, but active development has stopped.

Heroku launched in 2007 and was acquired by Salesforce for $212 million in 2010. After removing its free tier in November 2022 and years of slowing feature development, the February 2026 announcement made the trajectory official.

For teams planning a move, the biggest shift is toward infrastructure ownership: deploying to your own AWS or GCP account rather than renting another managed platform. But there are several directions and here's what each option offers.

Encore Cloud

If you want to replicate Heroku's git push workflow while owning your infrastructure, Encore Cloud provisions managed resources in your own AWS or GCP account (powered by Encore, an open-source framework with 11k+ GitHub stars). You declare infrastructure as type-safe objects in your TypeScript or Go code, and Encore provisions the corresponding managed services. Everything else is standard TypeScript or Go.

import { SQLDatabase } from "encore.dev/storage/sqldb"; import { Topic } from "encore.dev/pubsub"; import { CronJob } from "encore.dev/cron"; // These declarations are all Encore needs to provision your infrastructure. // Everything else in your codebase is standard TypeScript (or Go). const db = new SQLDatabase("main", { migrations: "./migrations" }); const events = new Topic<OrderEvent>("events", { deliveryGuarantee: "at-least-once" }); const _ = new CronJob("daily-cleanup", { schedule: "0 0 * * *", endpoint: cleanup });

On AWS, this provisions RDS, SNS/SQS, and CloudWatch Events. On GCP, it provisions Cloud SQL, Pub/Sub, and Cloud Scheduler. Networking, IAM, encryption, and backups are configured automatically following cloud provider best practices.

Infrastructure from Code: define resources in TypeScript, deploy to AWS or GCP

Deployment works like Heroku: git push encore main. The infrastructure runs in your account, visible in the AWS or GCP console. Local development runs everything with encore run, every pull request gets an automatic preview environment, and built-in distributed tracing and metrics come included.

For teams using AI agents like Cursor and Claude Code, infrastructure-from-code means infrastructure doesn't drift from application logic. When AI changes your code, infrastructure updates automatically to match, and guardrails like type validation and compile-time checks are built in so there's no separate Terraform or YAML falling out of sync.

Companies like Groupon already use this at scale with TypeScript and Go, deploying to both AWS and GCP (Azure is not yet supported).

Managed Platforms

Render

Render is the most direct Heroku replacement. The concepts are nearly identical: git-push deploys, managed Postgres, background workers, cron jobs. If you want the smallest possible change from your current workflow, Render is the shortest path.

The mental model carries over cleanly as you connect a Git repo, define services in render.yaml or through the dashboard, and push to deploy. Render handles SSL, load balancing, and auto-deploys from your branch, and preview environments work similarly to Heroku Review Apps.

The main tradeoff is that you're still on someone else's infrastructure. If Render changes direction, raises prices, or gets acquired, you're in a similar position to where you are with Heroku. Per-service and per-seat pricing can also add up for larger teams running multiple services.

Fly.io

Fly.io takes a different approach. Instead of abstracting away infrastructure, it gives you lightweight VMs (Machines) in 30+ regions worldwide. The deployment workflow has a similar feel (fly deploy and your app is live) but the underlying model is closer to running containers than Heroku-style dynos.

Fly.io is well-suited for applications where latency matters, with fast cold starts, automatic placement near users, and a global Anycast network. The community is active and the team is responsive on support.

The managed Postgres offering has had some reliability challenges, though the team is actively improving this with their new MPG product. Pricing is usage-based, which can make monthly bills harder to predict compared to Heroku's flat per-dyno model.

Railway

Railway focuses on modern developer experience. The dashboard is clean, deploys are fast, and the project model is intuitive. It supports any language via Docker or Nixpacks (similar to Heroku buildpacks) and deploys from GitHub, a CLI, or templates.

Railway stands out for teams: paid plans include unlimited seats, which is a meaningful differentiator over Render and Heroku where each team member adds to the bill. Support for monorepos and multi-service projects is solid.

Like Render and Fly.io, you're on Railway's infrastructure. It's a managed platform with the same category of tradeoffs around ownership and portability.

Self-Hosted: Coolify, Dokku, Dokploy

Tools like Coolify, Dokku, and Dokploy run a Heroku-like experience on your own VPS. The typical setup is a Hetzner or DigitalOcean server with one of these tools installed. You get git-push deploys, automatic SSL, and database provisioning.

This path gives you the most control at the lowest price. Dokku is the most mature option (built in 2013, supports Heroku buildpacks directly). Coolify and Dokploy offer web dashboards for teams that prefer a GUI.

The tradeoff is operational responsibility. You manage the server: OS updates, security patches, backups, monitoring. For side projects and internal tools this is fine. For production applications that need high availability, it takes significantly more effort.

How to Choose

If you need...Consider
Infrastructure ownership, complianceEncore Cloud (your AWS/GCP)
Fastest migration from HerokuRender
Global edge performanceFly.io
Modern DX, unlimited team seatsRailway
Lowest possible costSelf-hosted (Coolify/Dokku)

Heroku's concepts (dynos, Postgres, worker processes, config vars, pipelines) map cleanly to every alternative. The migration is more about choosing the right destination than dealing with technical complexity.

For step-by-step migration guides:

Ready to escape the maze of complexity?

Encore Cloud is the development platform for building robust type-safe distributed systems with declarative infrastructure.