Your Heroku applications run on top of a curated stack, containing the operating system and other components needed at runtime. We maintain the stack - updating the OS, the libraries, and ensuring that known security issues are resolved, so that you can focus on writing code.
Today we're announcing the general availability of Heroku-16, our curated stack based on Ubuntu 16.04 LTS. In addition to a new base operating system, Heroku-16 is updated with the latest libraries. If you’re a Ruby or Python developer, Heroku-16 includes 15% more development headers at build time, making it easier to compile native packages on Heroku. Finally, Heroku-16 offers a better local development experience when using Docker, because of its smaller image size.
Since its beta in March, Heroku-16 has been tested on thousands of applications and is now ready for production on both Common Runtime and Private Spaces apps. Heroku-16 will become the stack new applications use (i.e., the default stack) on May 8th, 2017. To learn more about testing and upgrading your app, check out the Heroku-16 documentation.
What's New
Smaller Docker Image
With the release of Heroku-16, we’ve changed the architecture of the stack, allowing us to provide you with a curated Ubuntu 16-based Docker image at 465 MB (vs 1.35 GB for Cedar-14).
To use Heroku-16, specify it as your base image in your Dockerfile:
FROM heroku/heroku:16
By using the Heroku-16 Docker image for local development, you ensure the stack running locally is the same stack running on Heroku (i.e., dev/prod parity). Everyone -- Heroku customer or not -- is free to use the Heroku-16 Docker image.
Improved Support for Compiling Native Ruby and Python Packages
At build time Heroku-16 includes 15% more development headers than Cedar-14. This means fewer failed builds when your app needs to compile native Ruby or Python packages.
Updated Stack Libraries
Heroku-16 should largely be backwards compatible with Cedar-14. We have, however, removed lesser used packages to reduce the security surface area and stack image size. Apps may also encounter incompatibilities because libraries on Heroku-16 have been updated to their most recent versions. Learn more about the packages installed in Cedar-14 and Heroku-16.
How to Test and Upgrade
Testing Heroku-16 with your application, especially if you use review apps, is easy. Simply define your stack in app.json and create a new pull request:
{
"stack": "heroku-16"
}
If your tests are successful, you can upgrade your application:
$ heroku stack:set heroku-16 -a example-app
…
$ git commit -m "upgrade to heroku-16" --allow-empty
…
$ git push heroku master
For more information on upgrading your app, check out the Heroku-16 documentation.
Stack Support
Heroku-16 is now generally available and we recommend you use it for new apps. Heroku-16 will be supported through April 2021, when Long Term Support (LTS) of Ubuntu 16.04 ends. Cedar-14, the previous version of our stack, will continue to be supported through April 2019. For more information, check out our stack update policy.