Pouring One Out for Heroku

February 16, 2026

I first started using Heroku somewhere around 2010. At the time I had managed almost all of my projects on either corporate infrastructure or physical hardware we had purchased at a hosting provider. Writing those words in 2026 sounds completely archaic and byzantine.

Yes, we purchased physical server hardware and had someone manually set it up so we could connect to it remotely. The “cloud” was barely a thing at this time, and certainly not something that we took seriously for “important work projects.”

Right before the Heroku days I had my first project that went viral, as we’d call it now, and we had a major hosting crisis. I distinctly remember my setup for this launch: I had 2 beefy dedicated web servers and a dedicated database server. We thought it would have some traffic so we planned early.

As soon as I switched over the DNS server to push this site live we were instantly flooded with traffic. I found out later that the domain for the project, a little promotional app for a chicken sandwich company, was included on in-store signage that was posted too early.

Here’s the fun part that seems quaint now: we had to order more physical hardware to account for the traffic. I tripled the capacity, which was largely a guess at how much we’d need, and placed a rush order for new hardware and setup. The “rush order” gave me that new hardware within a few business days and I received the login information to get connected. Oh yes, I couldn’t actually even use this new capacity until I configured the servers, by hand.

I was smart enough at the time to have scripts that would mostly automated the configuration of the servers, but it still took hours of time. I had to install a web server (Apache, I assume), configure our middleware layer (mod_rails, which was later renamed to Phusion Passenger), set up Ruby, configure the firewall, and I’m sure a number of other things on each server before it was ready to go. Within a few stressful hours I deployed the new capacity and switched our load balancer (also on dedicated hardware) over to account for the new setup. We continued to burn hot for a few weeks until the promotion was over but thankfully didn’t need to order any more hardware after that.

This wasn’t a unique event, but it was indicative of how I approached servers and hosting at the time. Imagine my joy when I was first introduced to Heroku, and this was all you needed to do to deploy your app:

git push heroku master

That was it. Literally one command in the terminal to replace what my silly scripts would do for me in hours. By default, Heroku would create a small slice of a server (they called it a Dyno), install everything needed, and spin up a web server to handle running your code within a few minutes.

If you were gaining traffic or needed to scale your service it was as simple as switching the dyno count from 1 to 2, and so on. Incredible. What took me days only months prior would now take minutes.

I switched everything I was working on to Heroku and didn’t look back for almost the next decade straight. It certainly had its problems over the years, but in general I loved Heroku.


Fast forward to this week, and the following message was posted to the Heroku blog:

Today, Heroku is transitioning to a sustaining engineering model focused on stability, security, reliability, and support. Heroku remains an actively supported, production-ready platform, with an emphasis on maintaining quality and operational excellence rather than introducing new features. We know changes like this can raise questions, and we want to be clear about what this means for customers.

There is no change for customers using Heroku today. Customers who pay via credit card in the Heroku dashboard—both existing and new—can continue to use Heroku with no changes to pricing, billing, service, or day-to-day usage. Core platform functionality, including applications, pipelines, teams, and add-ons, is unaffected, and customers can continue to rely on Heroku for their production, business-critical workloads.

Enterprise Account contracts will no longer be offered to new customers. Existing Enterprise subscriptions and support contracts will continue to be fully honored and may renew as usual.

We’re focusing our product and engineering investments on areas where we can deliver the greatest long-term customer value, including helping organizations build and deploy enterprise-grade AI in a secure and trusted way.

First, this is an incredible exercise in big company PR saying something without actually saying anything at all so I’m leaving a lot of this to speculation. But it seems very clear to me that this is Heroku being put into maintenance mode. The infrastructure will continue to be supported and kept functional and secure, but I wouldn’t expect to see much more than incremental updates from here on out. I’d love to be wrong, but the writing has been on the wall for some time.

Here’s the real indicator to me: “Enterprise Account contracts will no longer be offered to new customers”. Enterprise contracts are crucial to support a growing organization and likely represent the most important and highest revenue customers. (I know for a fact that when you reach a certain monthly spend amount on Heroku, you would trigger a sales person to reach out and attempt to convert you to an enterprise account.) Without new enterprise customers and the sales staff that support them, the platform is dying. Sure, the business will likely maintain its current course for years to come but without growth it’s a lost cause. I could be wrong, I hope I’m wrong, but it sure doesn’t seem like it.

Maybe it’s time. Like I said, the writing has been on the wall for years. Heroku was never the cheapest hosting option, but over the past 6 years it became almost laughably expensive. The Heroku model has been proven and it is a viable business. Just not for Heroku itself it seems.

There are a number of excellent competitors that have been founded recently and taken what Heroku pioneered to new heights. Fly.io, Vercel, Engine Yard, Render, and many more.

I migrated Air Mail off Heroku last year to Render.com and couldn’t be happier. We cut our bill in half, and increased capacity and throughput at the same time by almost 3x. The developer experience is close to what Heroku offered (alas, I still miss pipelines) and getting better by the month. It’s wonderful to be on a platform that is evolving and growing. The Render support team was incredible as well: they helped me move my many-hundred-gigabyte Postgres database from Heroku to Render with only about 30 minutes of production downtime.

I’ve seen chatter that the Salesforce acquisition of Heroku was to blame for its downfall. Maybe, but I’m not so sure. Salesforce has owned Heroku since 2011 and by all accounts it seems to have fueled Heroku’s growth for many years. At a certain point the decision was made that Heroku wasn’t the future of developer-ops and hosting for Salesforce and their interests went elsewhere. I don’t blame the approach, but that doesn’t make it less of a shame to lose a once great product.

So let’s pour one out for Heroku: You had a great run. You made a lot of engineers out here happy for many years. You introduced us to the concept that cloud hosting isn’t bad. You helped make cloud-hosting approachable and predictable. You held on to that profit margin for servers as long as you could. You led the charge to make better web apps. You changed the game.

Cheers 🥃