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:
- November 21, 2024 - Router 2.0 is now generally available
- February 6, 2025 - Legacy Router end-of-life migration beginning for Heroku Eco-tier applications
- March 20, 2025 - Router 2.0 is now the default for all new Eco-tier Applications
- March 28, 2025 - Eco-tier applications now require Router 2.0
- July 1, 2025 - New Common Runtime applications now default to Router 2.0
- July 7, 2025 - Basic-tier applications now require Router 2.0
- July 10, 2025 - Standard and Performance-tier apps begin migrating to Router 2.0
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.