// Module included in the following assemblies:
//
// assembly-using-the-cluster-operator.adoc

[id='ref-operator-cluster-feature-gate-releases-{context}']
= Feature gate releases

[role="_abstract"]
Feature gates have three stages of maturity:

* Alpha — typically disabled by default
* Beta — typically enabled by default
* General Availability (GA) — typically always enabled

Alpha stage features might be experimental or unstable, subject to change, or not sufficiently tested for production use.
Beta stage features are well tested and their functionality is not likely to change.
GA stage features are stable and should not change in the future.
Alpha and beta stage features are removed if they do not prove to be useful.

* The `ControlPlaneListener` feature gate moved to GA stage in Strimzi 0.32. It is now permanently enabled and cannot be disabled.
* The `ServiceAccountPatching` feature gate moved to GA stage in Strimzi 0.30. It is now permanently enabled and cannot be disabled.
* The `UseStrimziPodSets` feature gate moved to GA stage in Strimzi 0.35 and the support for StatefulSets is completely removed. It is now permanently enabled and cannot be disabled.
* The `StableConnectIdentities` feature gate moved to GA stage in Strimzi 0.39.
  It is now permanently enabled and cannot be disabled.
* The `UseKRaft` feature gate is in beta stage and is enabled by default.
* The `KafkaNodePools` feature gate is in beta stage and is enabled by default.
  It is expected to move to GA phase and be always enabled from Strimzi 0.41.
* The `UnidirectionalTopicOperator` feature gate is in beta stage and is enabled by default.
  It is expected to move to GA phase and be always enabled from Strimzi 0.41.

NOTE: Feature gates might be removed when they reach GA. This means that the feature was incorporated into the Strimzi core features and can no longer be disabled.

.Feature gates and the Strimzi versions when they moved to alpha, beta, or GA
[cols="4*",options="header",stripes="none",separator=¦]
|===

¦Feature gate
¦Alpha
¦Beta
¦GA

¦`ControlPlaneListener`
¦0.23
¦0.27
¦0.32

¦`ServiceAccountPatching`
¦0.24
¦0.27
¦0.30

¦`UseStrimziPodSets`
¦0.28
¦0.30
¦0.35

¦`UseKRaft`
¦0.29
¦0.40
¦0.42 (planned)

¦`StableConnectIdentities`
¦0.34
¦0.37
¦0.39

¦`KafkaNodePools`
¦0.36
¦0.39
¦0.41 (planned)

¦`UnidirectionalTopicOperator`
¦0.36
¦0.39
¦0.41 (planned)

|===

If a feature gate is enabled, you may need to disable it before upgrading or downgrading from a specific Strimzi version (or first upgrade / downgrade to a version of Strimzi where it can be disabled).
The following table shows which feature gates you need to disable when upgrading or downgrading Strimzi versions.

.Feature gates to disable when upgrading or downgrading Strimzi
[cols="3*",options="header",stripes="none",separator=¦]
|===

¦Disable Feature gate
¦Upgrading from Strimzi version
¦Downgrading to Strimzi version

¦`ControlPlaneListener`
¦0.22 and earlier
¦0.22 and earlier

¦`UseStrimziPodSets`
¦-
¦0.27 and earlier

¦`StableConnectIdentities`
¦-
¦0.33 and earlier

|===
