Common Runtime Legacy Router End-of-Life FAQ

Issue

Router 2.0 is generally available and the default router for any new Common Runtime application. Additionally, 94% of Common Runtime apps are already using the new router. Router 2.0 introduces several performance and security improvements, including HTTP/2 support and keepalives to dynos. The legacy router end-of-life (EOL) is scheduled for Summer 2025 and all common runtime customers will be upgraded to Router 2.0 over the next few weeks.

In general, the migration to Router 2.0 is an automatic switch that will happen transparently for customer applications. No action is required on behalf of the customer. However, if a customer would like to validate the new router themselves before the automatic migration, they may do so by following How do I access Router 2.0?. If a customer is encountering issues using the new router, they may disable it and fall back to the legacy router.

Resolution

Moving to Router 2.0 Prior to the Automatic Migration

If you would like to try out the new router prior to automatic migration, we encourage you to follow the steps in this Dev Center article and read this Migration Tips and Tricks Blog Post.

Migration Timeline

Heroku has been following the below timeline for Router 2.0 migrations. We are currently in the process of migrating Production-tier, aka. Standard & Performance applications:

The week of February 3, 2025, the Heroku platform began migrating Eco-tier Common Runtime applications from the legacy router to Router 2.0.

The week of May 5, 2025, the Heroku platform began migrating Basic-tier Common Runtime applications to Router 2.0.

The week of July 10, 2025, the Heroku platform began migrating Standard & Performance-tier Common Runtime applications to Router 2.0.

Changelog

The below Changelog items detail the history of the Router 2.0 release and automatic migration:

FAQ

As a customer, do I need to take any action to migrate my applications to Router 2.0?

No, migrations are automatic and transparent to the customer.

As a customer, how can I tell if my application is already using Router 2.0?

Please see the Check if Router 2.0 is enabled section of How do I access Router 2.0?.

What if I run my application in a Private or Shield Space?

Private and Shield tier applications are unaffected since they run in Private Spaces and not the Common Runtime.

What are the feature differences between the Legacy Router and Router 2.0?

Please reference this section of the HTTP Routing Dev Center article to understand the differences between the routers. Currently, Router 2.0 supports all the features of the legacy router, plus some more. For example, Router 2.0 supports HTTP/2 whereas the legacy router does not.

My application is using Puma and I now see increased response times after switching to Router 2.0. How can I fix this? Is this a Router 2.0 issue?

No, this is likely not a Router 2.0 issue, but rather a known connection-handling bug in the Puma server. The Puma server does not handle HTTP keepalives well. In line with HTTP spec, keepalives to the dyno are now the default in the new router. The easiest way to reduce response times is to disable keepalives to dynos. Please also see this blog post for a more detailed explanation and other alternatives that will allow your Puma application to take advantage of HTTP keep-alives.

Ask on Stack Overflow

Engage with a community of passionate experts to get the answers you need

Ask on Stack Overflow

Heroku Support

Create a support ticket and our support experts will get back to you

Contact Heroku Support