Language Support Policy
Last updated 24 October 2017
This article describes the support policy for the supported set of language buildpacks provided by Heroku and third-party buildpacks.
Buildpacks and support
Your app is entitled to different support levels depending on whether you use a supported Heroku buildpack, or a third-party buildpack.
Heroku maintains a set of supported buildpacks.
Heroku is committed to providing you with a modern, secure development and runtime environment for your apps. This is provided through the supported buildpacks. In particular:
- We will endeavor to make the most relevant generally available versions of an officially-supported language available in a timely fashion.
- We are committed to help keeping your app secure by providing timely notifications. This can range from notifications when we implement a fix for you, requiring little from you other than to redeploy your app, to warnings when governing bodies decide to no longer support a version of a language.
- We will ensure that all critical security patches to supported language runtimes are made available in a timely manner.
If an app is using a supported buildpack and language runtime, then the developer of the app is eligible for support as defined by the Heroku Support Policy.
The versions of the runtimes that are officially supported by a buildpack are noted in their reference documentation.
Heroku cannot make guarantees about applications built using third-party or deprecated buildpacks. We call these buildpacks, unsupported buildpacks.
Support does not extend to apps that use unsupported buildpacks.
However, we will nevertheless try our best to help you with peripheral issues that you may have outside of the app you deployed, such as the Heroku API, the Heroku platform, domains, add-ons, and the buildpack mechanism itself.
Docker support policy
The Heroku Container Registry and Runtime feature allows you to deploy custom Docker images to Heroku. When deploying a Docker image to Heroku, you should expect to receive varying levels of support depending on your custom image.
If you choose to use one of our stacks, available as Docker images, as well as one of Heroku’s supported languages (e.g., Python), our support team will provide best effort support to resolve your application-level issues. Our team will provide full support for platform-related issues arising from Heroku API, domains, and add-ons.
If you choose to run a different OS, such as Alpine, or a language runtime not officially supported by Heroku (e.g., Haskell), you are responsible for supporting your application.
Third-party software (e.g., Jenkins), packaged as a Docker image, is not supported in any way.
Heroku aims to provide a secure environment for applications. We care about your apps, as well as their development and execution environment. However, the forces of technology evolution will mean that some of your runtimes will eventually become outdated. For example a governing body of a language may decide to no longer provide security patches to a version of a language, or critical bugs may be discovered that influence the safety or integrity of your app.
We will notify our customers when governing bodies of a language deprecate significant versions of a language in our supported buildpacks.
Deprecating a supported language
We will provide at least one year’s notice to you before we end support of a language. During that period we will continue to ensure an appropriate language version is made available, security patches are applied, and so on.
Deprecation and availability
You will still be able to deploy apps using an unsupported buildpack or language version after a language buildpack or language runtime is deprecated.
As an example, consider the Ruby language. Ruby is a supported language at Heroku. If you create and deploy a Ruby app to Heroku using the Ruby buildpack, which uses a supported version of the Ruby MRI, then Heroku supports the app.
If you create and deploy a Ruby app using a third-party Ruby buildpack, then you are no longer entitled to full support, but we’ll help you with any platform issues.
Similarly, if you create and deploy an Elixir app, we’ll still try and help you with any problems you’re having with the platform in general, but because Elixir isn’t a supported language, support will not be available for the app itself.