Language Support Policy
Last updated March 09, 2022
Table of Contents
This article describes the support policy for the supported set of language buildpacks provided by Heroku and third-party buildpacks.
Buildpacks and support
Most apps deployed to Heroku are built using a generic buildpack mechanism. This generic scheme allows Heroku users to deploy in dozens of languages.
Your app is entitled to different support levels depending on whether you use a supported Heroku buildpack, or a third-party buildpack.
Supported buildpacks
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 will publish platform changes for each of Heroku’s officially supported languages in the changelog.
- 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.
Unsupported buildpacks
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.
Deprecation
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.
Version deprecation
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 and security patches are applied.
Deprecation and availability
We cannot guarantee the availability of deprecated language runtimes for new application deploys. Supported runtimes are described in their respective Language Support documents.
Examples
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.
Docker
The Heroku Container Registry and Runtime feature allows you to deploy custom Docker images to Heroku.
Our team will provide full support for platform-related issues arising from Heroku API, domains, and add-ons. General debugging of application code or containers, rewriting code, and configuring or modifying third-party packages are not covered.
Third-party software (e.g., Jenkins), packaged as a Docker image, is not supported in any way.