The Heroku-16 Stack is Now Generally Available

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.

More from the author

Browse the archives for news or all blogs Subscribe to the RSS feed for news or all blogs.