Summary
Heroku-16, our stack based on Ubuntu 16.04 Long Term Support, reached end-of-life on May 1st, 2021. As of June 1st, 2021, the building of Heroku-16 apps is no longer supported.
Apps using the Heroku-16 stack will continue to run, but should be upgraded to a more recent stack to maintain access to security updates, technical support, and the ability to deploy new code.
Why is the Heroku-16 end-of-life occurring?
Support for Heroku stacks is synchronized with the release lifecycle of the Ubuntu Long Term Support release on which they are based. Heroku-16 is based upon Ubuntu 16.04 LTS, for which Canonical's standard five-year support (including availability of bug and security fixes) ended on April 30th, 2021.
As such in accordance with our stack update policy and documented stack support dates, the Heroku-16 stack reached end-of-life on May 1st, 2021.
Heroku-16 was superseded by Heroku-18 in July 2018, followed by Heroku-20 in December 2020.
What is the Heroku-16 end-of-life timetable?
- Dec 11, 2020: Heroku-16 stack was deprecated.
- March 22, 2021: The first build of each Heroku-16 app within a 7-day period will fail with a deprecation notice; following builds will proceed normally.
- May 1, 2021: Heroku-16 stack reached end-of-life. The first build of each Heroku-16 app per day will fail with a deprecation notice; following builds will proceed normally. Heroku-16 apps will continue to run and build, but no longer receive security updates, will receive only limited technical support, and be run at your own risk.
- May 3, 2021: It will no longer be possible to create new Heroku-16 apps. Review App and Heroku CI functionality will be unaffected.
- June 1, 2021: No further builds (code deployments) will be allowed for any Heroku-16 apps, including those used by Review Apps and Heroku CI. All other non-build functionality will continue to work, and existing apps will continue to run.
Which of my apps are affected?
To list all apps that are using the Heroku-16 stack, you can run the following Heroku CLI commands:
$ heroku plugins:install @heroku-cli/plugin-apps-table
$ heroku apps:table --filter="STACK=heroku-16"
You can also show apps by team:
$ heroku apps:table --filter="STACK=heroku-16" --team=my-team-name
Listing apps using the Heroku CLI will show all apps, including those that might otherwise be hidden in the Heroku dashboard (such as the ephemeral apps created by Heroku CI, which will have -ci-
in their app name).
What resources are available to assist with upgrading your apps?
Step-by-step documentation is available to assist you with upgrading. Additionally, Heroku Enterprise customers can engage with the Customer Solutions Architecture (CSA) team.
Will Heroku-16 apps stop running? Will my app be shut down?
No. Existing Heroku-16 apps will not be shut down when the stack reaches its end-of-life, or when builds are disabled.
The apps will continue to run for the foreseeable future (unless impacted by issues unrelated to the stack version), and all non-build functionality will continue to work, such as:
- Adjusting app settings
- Adjusting app environment variables
- Scaling app processes
- Running one-off dynos
- Creating/managing addons
However we highly encourage you to upgrade to a supported stack to maintain access to security updates, technical support, and the ability to perform builds (deploy new code).
Will apps on the Heroku-16 stack receive technical support?
After the Heroku-16 stack reaches end-of-life on May 1st, 2021, it will no longer be a supported stack, so apps using it will only receive limited technical assistance.
Will apps on the Heroku-16 stack continue to build?
From June 1st, 2021, no further builds will be allowed for Heroku-16 apps. This means it will not be possible to deploy changes to your application's source code after this date until the application's stack is upgraded. Upgrading an existing Heroku-16 app's stack will still be possible even after June 1st, 2021.
Are you offering extensions to the Heroku-16 builds deadline?
No. For security and compliance reasons we must decommission the Heroku-16 instance of the build system as soon as possible after the end-of-life of Ubuntu 16.04, since it itself has to run on the same Operating System version as the app being built. As such, we are unable to grant extensions to the Heroku-16 builds disablement deadline of 1st June, 2021, since after that date the Heroku-16 build system will no longer exist.
I upgraded my app to a supported stack but my app no longer works as expected, can I rollback to Heroku-16?
Yes, you can rollback an app that has been upgraded to a newer stack - see this Dev Center article. Rolling back to a previous release that's based on Heroku-16 will still be possible even after Heroku-16 end-of-life and builds disablement, however downgrading must be performed via the rollback feature and not heroku stack:set
.
My app does not have any dynos, since it's only used to hold addons. What effect will upgrading stack have on the addons?
The stack is only used by dynos run on an app, so upgrading the app's stack will not affect the addons themselves. However, we recommended that the stack be upgraded regardless, in order to suppress the dashboard warning banners and email notifications. For apps where code has never been deployed, setting a new stack on the app will take immediate effect and not require a code deployment.
How were customers notified about Heroku-16's end-of-life?
To raise awareness of Heroku-16's scheduled end-of-life, we notified customers via:
- changelog entries for deprecation, selective availability, end-of-life and builds disablement
- warnings in build logs
- warnings when specifying Heroku-16 with the CLI commands
heroku create
andheroku stack:set
- banners on the Heroku Dashboard
- banners on the Heroku-16, Stack Packages and Upgrading to the Latest Stack Dev Center pages
- automated emails triggered whenever a Heroku-16 app is built, sent to app owners/admins/collaborators (initially at most once per month, increasing to weekly, then daily)
- an email campaign to the owners/team admins of any Heroku-16 apps (regardless of recent build activity)
- periodic intentional build errors requiring a retrigger to dismiss the end-of-life message