Table of Contents [expand]
Last updated June 30, 2026
Heroku currently offers Apache Kafka version 3.9.2 as the default for Apache Kafka on Heroku. basic Apache Kafka on Heroku plans always use the default version and Heroku upgrades to the latest default version automatically.
Available Kafka Versions
| Major Version | Minor Version | Status | End of Life Date |
|---|---|---|---|
| 2.8 | 2.8.2 | Available | TBD |
| 3.7 | 3.7.1 | Available | TBD |
| 3.9 | 3.9.2 | Available | TBD |
As a rule, the client library version must be equal to or less than the version on the cluster.
Kafka supports SSL to encrypt and authenticate connections, and this mode is the only connection mode supported in the Common Runtime. To comply, you must use a library that supports SSL encryption and client certificates. In Private Spaces, you can optionally use plaintext connections, as described below. Shield Spaces don’t support plaintext connections.
Version Lifecycle
The Apache Kafka project releases a new major version approximately every four months (3x/year). In accordance with this release schedule, we make all versions published in the last year available for new add-ons. We only support Apache Kafka versions that the upstream project maintains. One year after the most recent point release is available, we mark that major version deprecated and stop allowing new add-ons to use this version.
After deprecating a version, your cluster continues to operate normally. However, running older versions is risky as deprecated versions that the community no longer supports don’t receive bug fixes or security patches. Heroku notifies you via email about the deprecation process for your affected clusters.
We recommend that users regularly evaluate their add-on version and plan to upgrade their cluster at least once a year. By keeping up with this schedule, your cluster receives important bug fixes and notable improvements in reliability.
Upgrading Kafka Versions
To upgrade the version of a dedicated Kafka cluster, use the heroku kafka:upgrade command and provide the target version to upgrade to with the --version option:
$ heroku kafka:upgrade --version 3.9 -a example-app
› Warning: This command will upgrade the brokers of the cluster to version 3.9.
› Upgrading the cluster involves rolling restarts of brokers, and takes some time, depending on the
› size of the cluster.
? To proceed, type example-app or re-run this command with --confirm example-app
Upgrading to version 3.9... started.
Use `heroku kafka:wait` to monitor the upgrade.
It’s important to note that the upgrade command advances the version to the latest supported stable minor version. For example, currently, heroku kafka:upgrade --version 3.9 upgrades a cluster to version 3.9.2.
This command upgrades the Kafka brokers in the cluster to the new version. Upgrading the cluster involves several process restarts of the brokers, but the brokers restart one at a time. Assuming your app can handle broker restarts, the upgrade is relatively seamless.
See Robust Usage of Kafka to ensure proper handling of broker restarts. During the upgrade period, your cluster is running mixed versions. For example, you can have one broker on 2.8 and two brokers on 3.9.
Kafka strictly promises backward protocol compatibility: you can always use a client protocol version older than the versions your cluster is running. However, you can’t use a newer client version than the one your cluster is running.
During the upgrade, you must keep your client on a version equal or lower than the version you’re upgrading from. After the upgrade finishes, denoted by the status in heroku kafka:wait, you can start using a new protocol version and any new features it supports. Heroku doesn’t require it, but recommends keeping your client on the same protocol version your cluster is running.
Keep your clusters up to date with the latest recommended version from Heroku, which is 3.9.2. Heroku performs heavy testing and validation work on all new Kafka releases, including testing the upgrade procedure, and only recommends trusted versions.