Skip to content
Developer reviewing code deployment and infrastructure migration options on multiple screens

On April 30, 2025, Heroku's Heroku-20 stack officially reached end of life. Starting May 1, 2025, you can no longer deploy code changes to apps still running on Heroku-20. While your existing apps will continue to run, you're now locked out of pushing updates, bug fixes, or new features until you migrate to a newer stack.

This isn't just a technical footnote—it's a forcing function. If your app is on Heroku-20, you need to make a decision now: upgrade to Heroku-22 or Heroku-24, or use this moment to reconsider whether Heroku is still the right platform for your needs.

This article walks through what happened, who's affected, and the two paths forward: upgrading within Heroku or migrating to a modern alternative.

What Happened

Heroku stacks are the underlying operating system images that run your applications. Heroku-20 was based on Ubuntu 20.04 LTS and was deprecated in November 2023, giving developers 18 months to migrate before the April 30, 2025 end-of-life date.

As of May 1, 2025, builds are no longer allowed for Heroku-20 apps. This means you cannot push code changes, update dependencies, or deploy fixes. All other functionality continues to work—your apps will keep running, environment variables still work, and logs are still available. But the moment you need to deploy a change, you're blocked.

This follows a pattern: Heroku-18 reached EOL in 2023, and Heroku-22 (based on Ubuntu 22.04) is scheduled for end of life in April 2027. The current recommended target is Heroku-24, which is based on Ubuntu 24.04.

Who's Affected

If you created your Heroku app before April 2022 and haven't explicitly upgraded your stack, you're likely on Heroku-20. You can check by running heroku stack in your app directory or viewing the stack in your app settings on the Heroku dashboard.

The impact is immediate for teams that rely on continuous deployment. A security patch, a dependency update, or a customer-requested feature—all blocked until you migrate. For low-maintenance apps that rarely change, you have breathing room. But the clock is ticking regardless.

Beyond Heroku-20, this is a broader inflection point. Heroku announced in early 2026 that it's transitioning to a 'sustaining engineering model' and no longer offering new Enterprise contracts. For teams evaluating long-term platform strategy, this EOL deadline is a natural moment to reassess.

Option 1: Upgrade to Heroku-22 or Heroku-24

If Heroku still meets your needs, upgrading your stack is the most straightforward path. Here's what you need to know.

Heroku-22

Based on Ubuntu 22.04. Supported through April 2027. A stable, well-tested option if you need more time before the next migration cycle.

Heroku-24

Based on Ubuntu 24.04. The current recommended stack. Longer support window, but requires more careful dependency checks, especially for Ruby apps.

Migration Process

Upgrading your stack requires a rebuild. The process is similar to a standard deploy: update your stack setting, test locally if possible, then push your changes. Heroku's official documentation recommends always moving to the latest available stack and reviewing breaking changes between your current and target versions.

For Ruby apps, you may need to upgrade your Ruby version before migrating. Heroku-24 has specific quirks: Git is only available at build time, not runtime, and the older Chrome buildpack is incompatible—you'll need to switch to the Chrome for Testing buildpack if you rely on headless browser automation.

The upgrade process itself is low-risk for most apps, but you'll want to test in a staging environment before touching production. Most compatibility issues surface during the build phase, not at runtime.

Option 2: Migrate to a Modern Alternative

If you're questioning Heroku's long-term viability or pricing, this EOL deadline is a natural moment to switch. Here are the most credible alternatives.

Render

The most Heroku-like experience. Git-push workflow, managed TLS, built-in CDN, and Cloudflare protection by default. Free tier for static sites, paid plans from $19/month.

Best for: Teams wanting a drop-in Heroku replacement

Railway

The smoothest migration path with per-unit pricing (pay for exact GB of RAM and vCPU cores). Free tier available, paid from $5/month. Maximum flexibility without tier lock-in.

Best for: Cost-conscious teams needing granular compute control

Fly.io

Global edge deployment with VM-level control. Up to 3 shared-CPU VMs free, usage-based pricing from ~$2/month per VM. WireGuard networking, place apps close to users worldwide.

Best for: Apps needing global reach or low-latency performance

When to Stay vs When to Switch

Upgrade to Heroku-22 or Heroku-24 if your app is stable, you're happy with Heroku's pricing, and the migration cost is low. If you're already paying for Heroku and the platform works for you, there's no reason to introduce risk by switching.

Consider migrating to an alternative if you're questioning Heroku's pricing (especially post-free-tier), concerned about the long-term roadmap given the shift to sustaining engineering, or if you're already evaluating platforms for new projects. The migration cost is real—DNS changes, environment variable migration, testing—but if you're already skeptical of Heroku, this EOL deadline is your forcing function.

The wrong move is inaction. Staying on Heroku-20 past May 1 means you can't deploy. Set a deadline, test your migration path (upgrade or switch), and execute before the next emergency fix is needed.

Key Migration Timelines

Important dates for Heroku stack migrations

Apr 30

Heroku-20 EOL Date

Sep 30

Legacy Router EOL

Apr 2027

Heroku-22 EOL Date

Need Help Migrating?

Whether you're upgrading stacks or switching platforms entirely, we can help you plan and execute a zero-downtime migration. Book a call to discuss your options.

Book a Call
Share: