This is the multi-page printable view of this section. Click here to print.
Support and versioning
- 1: Versioning policy
- 2: Supported runtime and SDK releases
- 3: Breaking changes and deprecations
- 4: Reporting security issues
- 5: Preview features
- 6: Alpha and Beta APIs
1 - Versioning policy
Introduction
Dapr is designed for future changes in the runtime, APIs and components with versioning schemes. This topic describes the versioning schemes and strategies for APIs, manifests such as components and Github repositories.
Versioning
Versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software.
- Versioning provides compatibility, explicit change control and handling changes, in particular breaking changes.
- Dapr strives to be backwards compatible. If a breaking change is needed it’ll be announced in advance.
- Deprecated features are done over multiple releases with both new and deprecated features working side-by-side.
Versioning refers to the following Dapr repos: dapr, CLI, stable language SDKs, dashboard, components-contrib, quickstarts, helm-charts and documentation.
Dapr has the following versioning schemes:
- Dapr
HTTP API
versioned withMAJOR.MINOR
- Dapr
GRPC API
withMAJOR
- Releases (GitHub repositories including dapr, CLI, SDKs and Helm Chart) with
MAJOR.MINOR.PATCH
- Documentation and Quickstarts repositories are versioned with the Dapr runtime repository versioning.
- Dapr
Components
withMAJOR
in components-contrib GitHub repositories. - Dapr
Manifests
withMAJOR.MINOR
. These include subscriptions and configurations.
Note that the Dapr APIs, binaries releases (runtime, CLI, SDKs) and components are all independent from one another.
Dapr HTTP API
The Dapr HTTP API is versioned according to these REST API guidelines.
Based to the these guidelines;
- A
MAJOR
version of the API is incremented when a deprecation is expected of the older version. Any such deprecation will be communicated and an upgrade path made available. - A
MINOR
versions may be incremented for any other changes. For example a change to the JSON schema of the message sent to the API. The definition of a breaking change to the API can be viewed here. - Experimental APIs include an “alpha” suffix to denote for their alpha status. For example v1.0alpha, v2.0alpha, etc.
Dapr runtime
Dapr releases use MAJOR.MINOR.PATCH
versioning. For example 1.0.0. Read Supported releases for more on the versioning of releases.
Helm Charts
Helm charts in the helm-charts repo are versioned with the Dapr runtime. The Helm charts are used in the Kubernetes deployment
Language SDKs, CLI and dashboard
The Dapr language SDKs, CLI and dashboard are versioned independently from the Dapr runtime and can be released at different schedules. See this table to show the compatibility between versions of the SDKs, CLI, dashboard and runtime. Each new release on the runtime lists the corresponding supported SDKs, CLI and Dashboard.
SDKs, CLIs and Dashboard are versioning follows a MAJOR.MINOR.PATCH
format. A major version is incremented when there’s a non-backwards compatible change in an SDK (for example, changing a parameter on a client method. A minor version is updated for new features and bug fixes and the patch version is incremented in case of bug or security hot fixes.
Samples and examples in SDKs version with that repo.
Components
Components are implemented in the components-contrib repository and follow a MAJOR
versioning scheme. The version for components adheres to major versions (vX), as patches and non-breaking changes are added to the latest major version. The version is incremented when there’s a non-backwards compatible change in a component interface, for example, changing an existing method in the State Store interface.
The components-contrib repo release is a flat version across all components inside. That is, a version for the components-contrib repo release is made up of all the schemas for the components inside it. A new version of Dapr does not mean there is a new release of components-contrib if there are no component changes.
Note: Components have a production usage lifecycle status: Alpha, Beta and Stable. These statuses are not related to their versioning. The tables of supported components shows both their versions and their status.
- List of state store components
- List of pub/sub components
- List of binding components
- List of secret store components
- List of configuration store components
- List of lock components
- List of crytpography components
- List of middleware components
For more information on component versioning read Version 2 and beyond of a component
Component schemas
Versioning for component YAMLs comes in two forms:
- Versioning for the component manifest. The
apiVersion
- Version for the component implementation. The
.spec.version
A component manifest includes the schema for an implementation in the .spec.metadata
field, with the .type
field denoting the implementation
See the comments in the example below:
apiVersion: dapr.io/v1alpha1 # <-- This is the version of the component manifest
kind: Component
metadata:
name: pubsub
spec:
version: v1 # <-- This is the version of the pubsub.redis schema implementation
type: pubsub.redis
metadata:
- name: redisHost
value: redis-master:6379
- name: redisPassword
value: general-kenobi
Component manifest version
The Component YAML manifest is versioned with dapr.io/v1alpha1
.
Component implementation version
The version for a component implementation is determined by the .spec.version
field as can be seen in the example above. The .spec.version
field is mandatory in a schema instance and the component fails to load if this is not present. For the release of Dapr 1.0.0 all components are marked as v1
.The component implementation version is incremented only for non-backward compatible changes.
Component deprecations
Deprecations of components will be announced two (2) releases ahead. Deprecation of a component, results in major version update of the component version. After 2 releases, the component is unregistered from the Dapr runtime, and trying to load it will throw a fatal exception.
Component deprecations and removal are announced in the release notes.
Quickstarts and Samples
Quickstarts in the Quickstarts repo are versioned with the runtime, where a table of corresponding versions is on the front page of the samples repo. Users should only use Quickstarts corresponding to the version of the runtime being run.
Samples in the Samples repo are each versioned on a case by case basis depending on the sample maintainer. Samples that become very out of date with the runtime releases (many versions behind) or have not been maintained for more than 1 year will be removed.
Related links
- Read the Supported releases
- Read the Breaking Changes and Deprecation Policy
2 - Supported runtime and SDK releases
Introduction
This topic details the supported versions of Dapr releases, the upgrade policies and how deprecations and breaking changes are communicated in all Dapr repositories (runtime, CLI, SDKs, etc) at versions 1.x and above.
Dapr releases use MAJOR.MINOR.PATCH
versioning. For example, 1.0.0.
Versioning | Description |
---|---|
MAJOR |
Updated when there’s a non-backward compatible change to the runtime, such as an API change. A MAJOR release can also occur then there is a considered a significant addition/change of functionality that needs to differentiate from the previous version. |
MINOR |
Updated as part of the regular release cadence, including new features, bug, and security fixes. |
PATCH |
Incremented for a critical issue (P0) and security hot fixes. |
A supported release means:
- A hoxfix patch is released if the release has a critical issue such as a mainline broken scenario or a security issue. Each of these are reviewed on a case by case basis.
- Issues are investigated for the supported releases. If a release is no longer supported, you need to upgrade to a newer release and determine if the issue is still relevant.
From the 1.8.0 release onwards three (3) versions of Dapr are supported; the current and previous two (2) versions. Typically these are MINOR
release updates. This means that there is a rolling window that moves forward for supported releases and it is your operational responsibility to remain up to date with these supported versions. If you have an older version of Dapr you may have to do intermediate upgrades to get to a supported version.
There will be at least 13 weeks (3 months) between major.minor version releases giving users at least a 9 month rolling window for upgrading from a non-supported version. For more details on the release process read release cycle and cadence
Patch support is for supported versions (current and previous).
Build variations
The Dapr’s sidecar image is published to both GitHub Container Registry and Docker Registry. The default image contains all components. From version 1.11, Dapr also offers a variation of the sidecar image, containing only stable components.
- Default sidecar images:
daprio/daprd:<version>
orghcr.io/dapr/daprd:<version>
(for exampleghcr.io/dapr/daprd:1.11.1
) - Sidecar images for stable components:
daprio/daprd:<version>-stablecomponents
orghcr.io/dapr/daprd:<version>-stablecomponents
(for exampleghcr.io/dapr/daprd:1.11.1-stablecomponents
)
On Kubernetes, the sidecar image can be overwritten for the application Deployment resource with the dapr.io/sidecar-image
annotation. See more about Dapr’s arguments and annotations. The default ‘daprio/daprd:latest’ image is used if not specified.
Learn more about Dapr components’ certification lifecycle.
Supported versions
The table below shows the versions of Dapr releases that have been tested together and form a “packaged” release. Any other combinations of releases are not supported.
Release date | Runtime | CLI | SDKs | Dashboard | Status | Release notes |
---|---|---|---|---|---|---|
May 5th 2025 | 1.15.5 | 1.15.0 | Java 1.14.1 Go 1.12.0 PHP 1.2.0 Python 1.15.0 .NET 1.15.4 JS 3.5.2 Rust 0.16.1 | 0.15.0 | Supported (current) | v1.15.5 release notes |
April 4th 2025 | 1.15.4 | 1.15.0 | Java 1.14.0 Go 1.12.0 PHP 1.2.0 Python 1.15.0 .NET 1.15.4 JS 3.5.2 Rust 0.16.1 | 0.15.0 | Supported (current) | v1.15.4 release notes |
March 5rd 2025 | 1.15.3 | 1.15.0 | Java 1.14.0 Go 1.12.0 PHP 1.2.0 Python 1.15.0 .NET 1.15.4 JS 3.5.2 Rust 0.16.1 | 0.15.0 | Supported (current) | v1.15.3 release notes |
March 3rd 2025 | 1.15.2 | 1.15.0 | Java 1.14.0 Go 1.12.0 PHP 1.2.0 Python 1.15.0 .NET 1.15.0 JS 3.5.0 Rust 0.16 | 0.15.0 | Supported (current) | v1.15.2 release notes |
February 28th 2025 | 1.15.1 | 1.15.0 | Java 1.14.0 Go 1.12.0 PHP 1.2.0 Python 1.15.0 .NET 1.15.0 JS 3.5.0 Rust 0.16 | 0.15.0 | Supported (current) | v1.15.1 release notes |
February 27th 2025 | 1.15.0 | 1.15.0 | Java 1.14.0 Go 1.12.0 PHP 1.2.0 Python 1.15.0 .NET 1.15.0 JS 3.5.0 Rust 0.16 | 0.15.0 | Supported | v1.15.0 release notes |
September 16th 2024 | 1.14.4 | 1.14.1 | Java 1.12.0 Go 1.11.0 PHP 1.2.0 Python 1.14.0 .NET 1.14.0 JS 3.3.1 | 0.15.0 | Supported | v1.14.4 release notes |
September 13th 2024 | 1.14.3 | 1.14.1 | Java 1.12.0 Go 1.11.0 PHP 1.2.0 Python 1.14.0 .NET 1.14.0 JS 3.3.1 | 0.15.0 | ⚠️ Recalled | v1.14.3 release notes |
September 6th 2024 | 1.14.2 | 1.14.1 | Java 1.12.0 Go 1.11.0 PHP 1.2.0 Python 1.14.0 .NET 1.14.0 JS 3.3.1 | 0.15.0 | Supported | v1.14.2 release notes |
August 14th 2024 | 1.14.1 | 1.14.1 | Java 1.12.0 Go 1.11.0 PHP 1.2.0 Python 1.14.0 .NET 1.14.0 JS 3.3.1 | 0.15.0 | Supported | v1.14.1 release notes |
August 14th 2024 | 1.14.0 | 1.14.0 | Java 1.12.0 Go 1.11.0 PHP 1.2.0 Python 1.14.0 .NET 1.14.0 JS 3.3.1 | 0.15.0 | Supported | v1.14.0 release notes |
May 29th 2024 | 1.13.4 | 1.13.0 | Java 1.11.0 Go 1.10.0 PHP 1.2.0 Python 1.13.0 .NET 1.13.0 JS 3.3.0 | 0.14.0 | Supported | v1.13.4 release notes |
May 21st 2024 | 1.13.3 | 1.13.0 | Java 1.11.0 Go 1.10.0 PHP 1.2.0 Python 1.13.0 .NET 1.13.0 JS 3.3.0 | 0.14.0 | Supported | v1.13.3 release notes |
April 3rd 2024 | 1.13.2 | 1.13.0 | Java 1.11.0 Go 1.10.0 PHP 1.2.0 Python 1.13.0 .NET 1.13.0 JS 3.3.0 | 0.14.0 | Supported | v1.13.2 release notes |
March 26th 2024 | 1.13.1 | 1.13.0 | Java 1.11.0 Go 1.10.0 PHP 1.2.0 Python 1.13.0 .NET 1.13.0 JS 3.3.0 | 0.14.0 | Supported | v1.13.1 release notes |
March 6th 2024 | 1.13.0 | 1.13.0 | Java 1.11.0 Go 1.10.0 PHP 1.2.0 Python 1.13.0 .NET 1.13.0 JS 3.3.0 | 0.14.0 | Supported | v1.13.0 release notes |
January 17th 2024 | 1.12.4 | 1.12.0 | Java 1.10.0 Go 1.9.1 PHP 1.2.0 Python 1.12.0 .NET 1.12.0 JS 3.2.0 | 0.14.0 | Unsupported | v1.12.4 release notes |
January 2nd 2024 | 1.12.3 | 1.12.0 | Java 1.10.0 Go 1.9.1 PHP 1.2.0 Python 1.12.0 .NET 1.12.0 JS 3.2.0 | 0.14.0 | Unsupported | v1.12.3 release notes |
November 18th 2023 | 1.12.2 | 1.12.0 | Java 1.10.0 Go 1.9.1 PHP 1.2.0 Python 1.12.0 .NET 1.12.0 JS 3.2.0 | 0.14.0 | Unsupported | v1.12.2 release notes |
November 16th 2023 | 1.12.1 | 1.12.0 | Java 1.10.0 Go 1.9.1 PHP 1.2.0 Python 1.12.0 .NET 1.12.0 JS 3.2.0 | 0.14.0 | Unsupported | v1.12.1 release notes |
October 11th 2023 | 1.12.0 | 1.12.0 | Java 1.10.0 Go 1.9.0 PHP 1.1.0 Python 1.11.0 .NET 1.12.0 JS 3.1.2 | 0.14.0 | Unsupported | v1.12.0 release notes |
November 18th 2023 | 1.11.6 | 1.11.0 | Java 1.9.0 Go 1.8.0 PHP 1.1.0 Python 1.10.0 .NET 1.11.0 JS 3.1.0 | 0.13.0 | Unsupported | v1.11.6 release notes |
November 3rd 2023 | 1.11.5 | 1.11.0 | Java 1.9.0 Go 1.8.0 PHP 1.1.0 Python 1.10.0 .NET 1.11.0 JS 3.1.0 | 0.13.0 | Unsupported | v1.11.5 release notes |
October 5th 2023 | 1.11.4 | 1.11.0 | Java 1.9.0 Go 1.8.0 PHP 1.1.0 Python 1.10.0 .NET 1.11.0 JS 3.1.0 | 0.13.0 | Unsupported | v1.11.4 release notes |
August 31st 2023 | 1.11.3 | 1.11.0 | Java 1.9.0 Go 1.8.0 PHP 1.1.0 Python 1.10.0 .NET 1.11.0 JS 3.1.0 | 0.13.0 | Unsupported | v1.11.3 release notes |
July 20th 2023 | 1.11.2 | 1.11.0 | Java 1.9.0 Go 1.8.0 PHP 1.1.0 Python 1.10.0 .NET 1.11.0 JS 3.1.0 | 0.13.0 | Unsupported | v1.11.2 release notes |
June 22nd 2023 | 1.11.1 | 1.11.0 | Java 1.9.0 Go 1.8.0 PHP 1.1.0 Python 1.10.0 .NET 1.11.0 JS 3.1.0 | 0.13.0 | Unsupported | v1.11.1 release notes |
June 12th 2023 | 1.11.0 | 1.11.0 | Java 1.9.0 Go 1.8.0 PHP 1.1.0 Python 1.10.0 .NET 1.11.0 JS 3.1.0 | 0.13.0 | Unsupported | v1.11.0 release notes |
November 18th 2023 | 1.10.10 | 1.10.0 | Java 1.8.0 Go 1.7.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 3.0.0 | 0.11.0 | Unsupported | |
July 20th 2023 | 1.10.9 | 1.10.0 | Java 1.8.0 Go 1.7.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 3.0.0 | 0.11.0 | Unsupported | |
June 22nd 2023 | 1.10.8 | 1.10.0 | Java 1.8.0 Go 1.7.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 3.0.0 | 0.11.0 | Unsupported | |
May 15th 2023 | 1.10.7 | 1.10.0 | Java 1.8.0 Go 1.7.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 3.0.0 | 0.11.0 | Unsupported | |
May 12th 2023 | 1.10.6 | 1.10.0 | Java 1.8.0 Go 1.7.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 3.0.0 | 0.11.0 | Unsupported | |
April 13 2023 | 1.10.5 | 1.10.0 | Java 1.8.0 Go 1.6.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 3.0.0 | 0.11.0 | Unsupported | |
March 16 2023 | 1.10.4 | 1.10.0 | Java 1.8.0 Go 1.6.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 2.5.0 | 0.11.0 | Unsupported | |
March 14 2023 | 1.10.3 | 1.10.0 | Java 1.8.0 Go 1.6.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 2.5.0 | 0.11.0 | Unsupported | |
February 24 2023 | 1.10.2 | 1.10.0 | Java 1.8.0 Go 1.6.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 2.5.0 | 0.11.0 | Unsupported | |
February 20 2023 | 1.10.1 | 1.10.0 | Java 1.8.0 Go 1.6.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 2.5.0 | 0.11.0 | Unsupported | |
February 14 2023 | 1.10.0 | 1.10.0 | Java 1.8.0 Go 1.6.0 PHP 1.1.0 Python 1.9.0 .NET 1.10.0 JS 2.5.0 | 0.11.0 | Unsupported | |
December 2nd 2022 | 1.9.5 | 1.9.1 | Java 1.7.0 Go 1.6.0 PHP 1.1.0 Python 1.8.3 .NET 1.9.0 JS 2.4.2 | 0.11.0 | Unsupported | |
November 17th 2022 | 1.9.4 | 1.9.1 | Java 1.7.0 Go 1.6.0 PHP 1.1.0 Python 1.8.3 .NET 1.9.0 JS 2.4.2 | 0.11.0 | Unsupported | |
November 4th 2022 | 1.9.3 | 1.9.1 | Java 1.7.0 Go 1.6.0 PHP 1.1.0 Python 1.8.3 .NET 1.9.0 JS 2.4.2 | 0.11.0 | Unsupported | |
November 1st 2022 | 1.9.2 | 1.9.1 | Java 1.7.0 Go 1.6.0 PHP 1.1.0 Python 1.8.1 .NET 1.9.0 JS 2.4.2 | 0.11.0 | Unsupported | |
October 26th 2022 | 1.9.1 | 1.9.1 | Java 1.7.0 Go 1.6.0 PHP 1.1.0 Python 1.8.1 .NET 1.9.0 JS 2.4.2 | 0.11.0 | Unsupported | |
October 13th 2022 | 1.9.0 | 1.9.1 | Java 1.7.0 Go 1.6.0 PHP 1.1.0 Python 1.8.3 .NET 1.9.0 JS 2.4.2 | 0.11.0 | Unsupported | |
October 26th 2022 | 1.8.6 | 1.8.1 | Java 1.6.0 Go 1.5.0 PHP 1.1.0 Python 1.7.0 .NET 1.8.0 JS 2.3.0 | 0.11.0 | Unsupported | |
October 13th 2022 | 1.8.5 | 1.8.1 | Java 1.6.0 Go 1.5.0 PHP 1.1.0 Python 1.7.0 .NET 1.8.0 JS 2.3.0 | 0.11.0 | Unsupported | |
August 10th 2022 | 1.8.4 | 1.8.1 | Java 1.6.0 Go 1.5.0 PHP 1.1.0 Python 1.7.0 .NET 1.8.0 JS 2.3.0 | 0.11.0 | Unsupported | |
July 29th 2022 | 1.8.3 | 1.8.0 | Java 1.6.0 Go 1.5.0 PHP 1.1.0 Python 1.7.0 .NET 1.8.0 JS 2.3.0 | 0.11.0 | Unsupported | |
July 21st 2022 | 1.8.2 | 1.8.0 | Java 1.6.0 Go 1.5.0 PHP 1.1.0 Python 1.7.0 .NET 1.8.0 JS 2.3.0 | 0.11.0 | Unsupported | |
July 20th 2022 | 1.8.1 | 1.8.0 | Java 1.6.0 Go 1.5.0 PHP 1.1.0 Python 1.7.0 .NET 1.8.0 JS 2.3.0 | 0.11.0 | Unsupported | |
July 7th 2022 | 1.8.0 | 1.8.0 | Java 1.6.0 Go 1.5.0 PHP 1.1.0 Python 1.7.0 .NET 1.8.0 JS 2.3.0 | 0.11.0 | Unsupported | |
October 26th 2022 | 1.7.5 | 1.7.0 | Java 1.5.0 Go 1.4.0 PHP 1.1.0 Python 1.6.0 .NET 1.7.0 JS 2.2.1 | 0.10.0 | Unsupported | |
May 31st 2022 | 1.7.4 | 1.7.0 | Java 1.5.0 Go 1.4.0 PHP 1.1.0 Python 1.6.0 .NET 1.7.0 JS 2.2.1 | 0.10.0 | Unsupported | |
May 17th 2022 | 1.7.3 | 1.7.0 | Java 1.5.0 Go 1.4.0 PHP 1.1.0 Python 1.6.0 .NET 1.7.0 JS 2.2.1 | 0.10.0 | Unsupported | |
Apr 22th 2022 | 1.7.2 | 1.7.0 | Java 1.5.0 Go 1.4.0 PHP 1.1.0 Python 1.6.0 .NET 1.7.0 JS 2.1.0 | 0.10.0 | Unsupported | |
Apr 20th 2022 | 1.7.1 | 1.7.0 | Java 1.5.0 Go 1.4.0 PHP 1.1.0 Python 1.6.0 .NET 1.7.0 JS 2.1.0 | 0.10.0 | Unsupported | |
Apr 7th 2022 | 1.7.0 | 1.7.0 | Java 1.5.0 Go 1.4.0 PHP 1.1.0 Python 1.6.0 .NET 1.7.0 JS 2.1.0 | 0.10.0 | Unsupported | |
Apr 20th 2022 | 1.6.2 | 1.6.0 | Java 1.4.0 Go 1.3.1 PHP 1.1.0 Python 1.5.0 .NET 1.6.0 JS 2.0.0 | 0.9.0 | Unsupported | |
Mar 25th 2022 | 1.6.1 | 1.6.0 | Java 1.4.0 Go 1.3.1 PHP 1.1.0 Python 1.5.0 .NET 1.6.0 JS 2.0.0 | 0.9.0 | Unsupported | |
Jan 25th 2022 | 1.6.0 | 1.6.0 | Java 1.4.0 Go 1.3.1 PHP 1.1.0 Python 1.5.0 .NET 1.6.0 JS 2.0.0 | 0.9.0 | Unsupported |
SDK compatibility
The SDKs and runtime are committed to non-breaking changes other than those required for security issues. All breaking changes are announced if required in the release notes.
SDK and runtime forward compatibility
Newer Dapr SDKs support the latest version of Dapr runtime and two previous versions (N-2).
SDK and runtime backward compatibility
For a new Dapr runtime, the current SDK version and two previous versions (N-2) are supported.
Upgrade paths
After the 1.0 release of the runtime there may be situations where it is necessary to explicitly upgrade through an additional release to reach the desired target. For example, an upgrade from v1.0 to v1.2 may need to pass through v1.1.
Note
Dapr only has a seamless guarantee when upgrading patch versions in a single minor version, or upgrading from one minor version to the next. For example, upgrading fromv1.6.0
to v1.6.4
or v1.6.4
to v1.7.0
is guaranteed tested. Upgrading more than one minor version at a time is untested and treated as best effort.
The table below shows the tested upgrade paths for the Dapr runtime. Any other combinations of upgrades have not been tested.
General guidance on upgrading can be found for self hosted mode and Kubernetes deployments. It is best to review the target version release notes for specific guidance.
Current Runtime version | Must upgrade through | Target Runtime version |
---|---|---|
1.5.0 to 1.5.2 | N/A | 1.6.0 |
1.6.0 | 1.6.2 | |
1.6.2 | 1.7.5 | |
1.7.5 | 1.8.6 | |
1.8.6 | 1.9.6 | |
1.9.6 | 1.10.7 | |
1.6.0 to 1.6.2 | N/A | 1.7.5 |
1.7.5 | 1.8.6 | |
1.8.6 | 1.9.6 | |
1.9.6 | 1.10.7 | |
1.7.0 to 1.7.5 | N/A | 1.8.6 |
1.8.6 | 1.9.6 | |
1.9.6 | 1.10.7 | |
1.8.0 to 1.8.6 | N/A | 1.9.6 |
1.9.0 to 1.9.6 | N/A | 1.10.8 |
1.10.0 to 1.10.8 | N/A | 1.11.4 |
1.11.0 to 1.11.4 | N/A | 1.12.4 |
1.12.0 to 1.12.4 | N/A | 1.13.5 |
1.13.0 to 1.13.5 | N/A | 1.14.0 |
1.14.0 to 1.14.4 | N/A | 1.14.4 |
1.15.0 | N/A | 1.15.0 |
Upgrade on Hosting platforms
Dapr can support multiple hosting platforms for production. With the 1.0 release the two supported platforms are Kubernetes and physical machines. For Kubernetes upgrades see Production guidelines on Kubernetes
Supported versions of dependencies
Below is a list of software that the latest version of Dapr (v1.15.5) has been tested against.
Dependency | Supported Version |
---|---|
Kubernetes | Dapr support for Kubernetes is aligned with Kubernetes Version Skew Policy |
Open Telemetry collector (OTEL) | v0.101.0 |
Prometheus | v2.28 |
Related links
- Read the Versioning Policy
- Read the Breaking Changes and Deprecation Policy
3 - Breaking changes and deprecations
Breaking changes
Breaking changes are defined as a change to any of the following that cause compilation errors or undesirable runtime behavior to an existing 3rd party consumer application or script after upgrading to the next stable minor version of a Dapr artifact (SDK, CLI, runtime, etc):
- Code behavior
- Schema
- Default configuration value
- Command line argument
- Published metric
- Kubernetes resource template
- Publicly accessible API
- Publicly visible SDK interface, method, class, or attribute
Breaking changes can be applied right away to the following cases:
- Projects that have not reached version 1.0.0 yet
- Preview feature
- Alpha API
- Preview or Alpha interface, class, method or attribute in SDK
- Dapr Component in Alpha or Beta
- Interfaces for
github.com/dapr/components-contrib
- URLs in Docs and Blog
- An exceptional case where it is required to fix a critical bug or security vulnerability.
Process for applying breaking changes
There is a process for applying breaking changes:
- A deprecation notice must be posted as part of a release.
- The breaking changes are applied two (2) releases after the release in which the deprecation was announced.
- For example, feature X is announced to be deprecated in the 1.0.0 release notes and will then be removed in 1.2.0.
Deprecations
Deprecations can apply to:
- APIs, including alpha APIs
- Preview features
- Components
- CLI
- Features that could result in security vulnerabilities
Deprecations appear in release notes under a section named “Deprecations”, which indicates:
- The point in the future the now-deprecated feature will no longer be supported. For example release x.y.z. This is at least two (2) releases prior.
- Document any steps the user must take to modify their code, operations, etc if applicable in the release notes.
After announcing a future breaking change, the change will happen in 2 releases or 6 months, whichever is greater. Deprecated features should respond with warning but do nothing otherwise.
Announced deprecations
Feature | Deprecation announcement | Removal |
---|---|---|
GET /v1.0/shutdown API (Users should use POST API instead) | 1.2.0 | 1.4.0 |
Java domain builder classes deprecated (Users should use setters instead) | Java SDK 1.3.0 | Java SDK 1.5.0 |
Service invocation will no longer provide a default content type header of application/json when no content-type is specified. You must explicitly set a content-type header for service invocation if your invoked apps rely on this header. |
1.7.0 | 1.9.0 |
gRPC service invocation using invoke method is deprecated. Use proxy mode service invocation instead. See How-To: Invoke services using gRPC to use the proxy mode. |
1.9.0 | 1.10.0 |
The CLI flag --app-ssl (in both the Dapr CLI and daprd) has been deprecated in favor of using --app-protocol with values https or grpcs . daprd:6158 cli:1267 |
1.11.0 | 1.13.0 |
Hazelcast PubSub Component | 1.9.0 | 1.11.0 |
Twitter Binding Component | 1.10.0 | 1.11.0 |
NATS Streaming PubSub Component | 1.11.0 | 1.13.0 |
Workflows API Alpha1 /v1.0-alpha1/workflows being deprecated in favor of Workflow Client |
1.15.0 | 1.17.0 |
Related links
- Read the Versioning Policy
- Read the Supported Releases
4 - Reporting security issues
The Dapr project and maintainers make security a central focus of how we operate and design our software. From the Dapr binaries to the GitHub release processes, we take numerous steps to ensure user applications and data is secure. For more information on Dapr security features, visit the security page.
Repositories and issues covered
When we say “a security vulnerability in Dapr”, this means a security issue in any repository under the dapr GitHub organization.
This reporting process is intended only for security issues in the Dapr project itself, and doesn’t apply to applications using Dapr or to issues which do not affect security.
If the issue cannot be fixed by a change to one of the covered repositories above, then it’s recommended to create a GitHub issue in the appropriate repo or raise a question in Discord.
If you’re unsure, err on the side of caution and reach out using the reporting process before raising your issue through GitHub, Discord, or another channel.
Explicitly Not Covered: Vulnerability Scanner Reports
We do not accept reports which amount to copy and pasted output from a vulnerability scanning tool unless work has specifically been done to confirm that a vulnerability reported by the tool actually exists in Dapr, including the CLI, Dapr SDKs, the components-contrib repo, or any other repo under the Dapr org.
We make use of these tools ourselves and try to act on the output they produce. We tend to find, however, that when these reports are sent to our security mailing list they almost always represent false positives, since these tools tend to check for the presence of a library without considering how the library is used in context.
If we receive a report which seems to simply be a vulnerability list from a scanner, we reserve the right to ignore it.
This applies especially when tools produce vulnerability identifiers which are not publicly visible or which are proprietary in some way. We can look up CVEs or other publicly-available identifiers for further details, but cannot do the same for proprietary identifiers.
Security Contacts
The people who should have access to read your security report are listed in maintainers.md
.
Reporting Process
- Describe the issue in English, ideally with some example configuration or code which allows the issue to be reproduced. Explain why you believe this to be a security issue in Dapr.
- Put that information into an email. Use a descriptive title.
- Send an email to Security (security@dapr.io)
Response
Response times could be affected by weekends, holidays, breaks or time zone differences. That said, the maintainers team endeavours to reply as soon as possible, ideally within 3 working days.
If the team concludes that the reported issue is indeed a security vulnerability in a Dapr project, at least two members of the maintainers team discuss the next steps together as soon as possible, ideally within 24 hours.
As soon as the team decides that the report is of a genuine vulnerability, one of the team responds to the reporter acknowledging the issue and establishing a disclosure timeline, which should be as soon as possible.
Triage, response, patching and announcement should all happen within 30 days.
5 - Preview features
Preview features in Dapr are considered experimental when they are first released.
Runtime preview features require explicit opt-in in order to be used. The runtime opt-in is specified in a preview setting feature in Dapr’s application configuration. See How-To: Enable preview features for more information.
For CLI there is no explicit opt-in, just the version that this was first made available.
Current preview features
Feature | Description | Setting | Documentation | Version introduced |
---|---|---|---|---|
Pluggable components | Allows creating self-hosted gRPC-based components written in any language that supports gRPC. The following component APIs are supported: State stores, Pub/sub, Bindings | N/A | Pluggable components concept | v1.9 |
Multi-App Run for Kubernetes | Configure multiple Dapr applications from a single configuration file and run from a single command on Kubernetes | dapr run -k -f |
Multi-App Run | v1.12 |
Cryptography | Encrypt or decrypt data without having to manage secrets keys | N/A | Cryptography concept | v1.11 |
Actor State TTL | Allow actors to save records to state stores with Time To Live (TTL) set to automatically clean up old data. In its current implementation, actor state with TTL may not be reflected correctly by clients, read Actor State Transactions for more information. | ActorStateTTL |
Actor State Transactions | v1.11 |
Component Hot Reloading | Allows for Dapr-loaded components to be “hot reloaded”. A component spec is reloaded when it is created/updated/deleted in Kubernetes or on file when running in self-hosted mode. Ignores changes to actor state stores and workflow backends. | HotReload |
Hot Reloading | v1.13 |
Subscription Hot Reloading | Allows for declarative subscriptions to be “hot reloaded”. A subscription is reloaded either when it is created/updated/deleted in Kubernetes, or on file in self-hosted mode. In-flight messages are unaffected when reloading. | HotReload |
Hot Reloading | v1.14 |
Scheduler Actor Reminders | Scheduler actor reminders are actor reminders stored in the Scheduler control plane service, as opposed to the Placement control plane service actor reminder system. The SchedulerReminders preview feature defaults to true , but you can disable Scheduler actor reminders by setting it to false . |
SchedulerReminders |
Scheduler actor reminders | v1.14 |
6 - Alpha and Beta APIs
Alpha APIs
Building block/API | gRPC | HTTP | Description | Documentation | Version introduced |
---|---|---|---|---|---|
Query State | Query State proto | v1.0-alpha1/state/statestore/query |
The state query API enables you to retrieve, filter, and sort the key/value data stored in state store components. | Query State API | v1.5 |
Distributed Lock | Lock proto | /v1.0-alpha1/lock |
The distributed lock API enables you to take a lock on a resource. | Distributed Lock API | v1.8 |
Bulk Publish | Bulk publish proto | v1.0-alpha1/publish/bulk |
The bulk publish API allows you to publish multiple messages to a topic in a single request. | Bulk Publish and Subscribe API | v1.10 |
Bulk Subscribe | Bulk subscribe proto | N/A | The bulk subscribe application callback receives multiple messages from a topic in a single call. | Bulk Publish and Subscribe API | v1.10 |
Cryptography | Crypto proto | v1.0-alpha1/crypto |
The cryptography API enables you to perform high level cryptography operations for encrypting and decrypting messages. | Cryptography API | v1.11 |
Jobs | Jobs proto | v1.0-alpha1/jobs |
The jobs API enables you to schedule and orchestrate jobs. | Jobs API | v1.14 |
Conversation | Conversation proto | v1.0-alpha1/conversation |
Converse between different large language models using the conversation API. | Conversation API | v1.15 |
Beta APIs
No current beta APIs.
Related links
Learn more about the Alpha, Beta, and Stable lifecycle stages.