Stack Update Policy
Last updated October 22, 2020
This document describes Heroku’s policies for when and how we update existing stacks and our schedule for introducing new stacks.
Updates to existing stacks
Heroku will update packages on currently available stacks at a monthly cadence. More frequent updates may also be prompted by security issues or other problems reported with packages on the stack image.
When making updates to stacks, Heroku strives to make the updated stack binary-compatible with the current stack and generally try to make as few changes as possible over the lifetime of a stack. This is to maximize stability and continuity for apps running on Heroku. Once added, packages will not be removed for the lifetime of a stack.
Before rolling out an update to a stack image, we extensively test it with internal apps. Then we gradually roll out the update on the platform.
Updates to existing stacks are not reflected in stack version numbers. In general, if we think a stack update may affect running applications, we’ll publish a changelog entry and notify owners of apps that may be affected.
Addition of new stacks
Heroku stacks are currently based on Ubuntu Linux from Canonical. We strive to introduce updated stack versions as Long Term Support (LTS) versions are released upstream, which happens around April in even-numbered calendar years. Heroku stack releases will generally trail the Ubuntu release by some months to ensure that packages have stabilized and to give Heroku time to build and test the new stack.
Retirement of old stacks
Old stacks are retired when they are no longer receiving support from Canonical (typically five years after Canonical first introduced the LTS release in question). Heroku will notify users with apps on old stacks before they are retired. Notifications are in the form of changelog entries and direct emails to owners and collaborators on apps running on stacks that are about to be retired.
Retiring a stack does not affect built apps on that stack, which will continue to run indefinitely, but can no longer be deployed without first upgrading to a newer stack once the retired stack has reached end-of-life.
Customers are advised to always keep their apps updated to the latest stack in order to receive stability and security updates for their applications.