This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Support and versioning

The support and versioning options available for Dapr

1 - Versioning policy

Dapr’s versioning policies

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 with MAJOR.MINOR
  • Dapr GRPC API with MAJOR
  • 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 with MAJOR in components-contrib GitHub repositories.
  • Dapr Manifests with MAJOR.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.

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.

2 - Supported runtime and SDK releases

Runtime and SDK release support and upgrade policies

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 MINORrelease 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> or ghcr.io/dapr/daprd:<version> (for example ghcr.io/dapr/daprd:1.11.1)
  • Sidecar images for stable components: daprio/daprd:<version>-stablecomponents or ghcr.io/dapr/daprd:<version>-stablecomponents (for example ghcr.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.

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

3 - Breaking changes and deprecations

Handling of 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:

  1. A deprecation notice must be posted as part of a release.
  2. 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:

  1. APIs, including alpha APIs
  2. Preview features
  3. Components
  4. CLI
  5. 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

4 - Reporting security issues

How to report a security concern or vulnerability to the Dapr maintainers.

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

  1. 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.
  2. Put that information into an email. Use a descriptive title.
  3. 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

List of current 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

List of current 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.

Learn more about the Alpha, Beta, and Stable lifecycle stages.