docs/release_notes/v1.16.0.md
We're excited to announce the release of Dapr 1.16! There have been in improvements to workflow performance, issues resolved and features that we recommend you upgrade.
Thanks to all the new and existing contributors who helped make this release happen.
If you're new to Dapr, visit the getting started page and familiarize yourself with Dapr.
The docs have been updated with all the new features and changes of this release. To get started with new capabilities introduced in this release, go to the Concepts and the Developing applications.
Note: This release contains a few breaking changes.
Go to the upgrading Dapr section for steps to upgrade to version 1.16.
Thanks to everyone who made this release possible!
@abossard, @acroca, @adam6878, @aladd04, @alicejgibbons, @antontroshin, @artur-ciocanu, @artursouza, @bibryam, @cicoyle, @ConstantinChirila, @cwalsh2189, @dani-maarouf, @Dzvezdana, @Eileen-Yu, @elena-kolevska, @elKei24, @ericsyh, @famarting, @filintod, @fvandillen, @Gallardot, @giterinhub, @hhunter-ms, @iddeepak, @inishchith, @javier-aliaga, @jev-e, @jjcollinge, @jmenziessmith, @JoshVanL, @kaibocai, @kaspernissen, @KentHsu, @knotseaborg, @ManuInNZ, @marcduiker, @mathieu-benoit, @mcruzdev, @middt, @mikeee, @msfussell, @MyMirelHub, @nelson-parente, @ngruson, @nmalocic, @olitomlinson, @osouzaelias, @passuied, @pnagaraj80, @salaboy, @sicoyle, @siri-varma, @swatimodi-scout, @theonefx, @thrubovc, @tmiddlet2666, @TomasEkeli, @tscolari, @twinguy, @vil02, @WhitWaldo, @willvelida, @yaron2
These are the v1.16 release highlights:
The Workflow API now supports multi-application workflows, enabling you to orchestrate complex business processes that span across multiple applications. This allows a workflow to call activities or start child workflows in different applications, distributing the workflow execution while maintaining the security, reliability, and durability guarantees of Dapr's workflow engine.
By using multi-app workflows, you can design distributed business processes, such as cross-application order processing, complex approval chains that involve multiple workflows and activites, and AI/ML pipelines that coordinate between LLM services and GPU-intensive workloads. Workflow durability and consistency is maintained across application boundaries, ensuring your distributed workflows remain resilient even when individual applications experience temporary failures.
Mutli-application workflows are supported in Java and Go SDKs as of this release. Learn more with the multi-app workflows documentation.
Dapr continues to invest into the Workflows API building block; with this release focusing on performance and stabilization, particularly when using Workflows for production at scale. These enhancements make Dapr Workflows more robust and performant for high-throughput workloads with high-concurrency requirements.
Key Improvements:
The results of these improvements mean that Dapr handles larger Workflow throughputs, consumes less memory & CPU overall, and the consumption of these resources is more stable.
The following table shows results of testing the performance of Workflows from Dapr v1.15 and v1.16.
| Workflows Started | App Replicas | 1.15 Time Taken | 1.16 Time Taken |
|---|---|---|---|
| 1,000 | 1 | 1m39.55s | 1m30.64s |
| 5,000 | 1 | 8m7s.97s | 7m38.84s |
| 10,000 | 1 | CRASH | 15m6.96s |
| 1,000 | 3 | 38.87s | 34.87s |
| 5,000 | 3 | 7m38s & CRASH | 4m26.89s |
| 10,000 | 3 | 15m33.50s | 11m31.22s |
| 1,000 | 5 | 34.12s | 35.23s |
| 5,000 | 5 | 5m44.12s | 4m17.03s |
| 10,000 | 5 | CRASH | 13m55s |
Below are the memory and CPU usage when running 1000 workflows with 3 application replicas. The v1.16 engine uses less CPU & memory and its usage is more stable.
You can now use Dapr to proxy requests to external HTTP servers that work with streaming or Server-Sent Events (SSE), allowing Dapr to provide important functionality when communicating with MCP servers and AI agents like middleware authenticaton, resiliency policies, telemetry and distributed tracing.
Learn more on HTTP streaming with service invocation.
Dapr now supports tool calling in the Conversation API, enabling Large Language Models (LLMs) to interact with external functions and APIs during conversations. This feature allows applications to provide tools that LLMs can interact with to retrieve real-time data, perform calculations, or execute actions as part of the conversation flow. This makes conversations more interactive and dynamic, allowing LLMs to integrate with external services and data sources.
The new AlphaV2 Conversation API introduces:
auto, none, required, or a specific toolTry tool calling with Conversation API quickstarts
The Sentry service was extended to include advanced authentication capabilities with JWT and OIDC support, enabling integration with external identity providers through workload identity federation.
You can configure Sentry to issue JWT tokens and expose OIDC discovery endpoints (/.well-known/openid-configuration and /jwks.json). These tokens can, for example, be exchanged with Microsoft Entra ID for Azure access tokens by creating a Federated Identity Credential tied to your Dapr app’s SPIFFE ID.
See the Managed identities and workload identity federation and Authenticating with a Federated Identity Credential in Azure for a walkthrough.
Dapr now supports W3C Baggage propagation alongside trace context, enabling you to pass custom key-value pairs across your distributed services. This allows you to attach contextual information like user IDs, server nodes, or business-specific tags that travel with your traces throughout the entire request flow.
This feature supports 2 propagation methods:
Dapr automatically handles the propagation and encoding requirements, ensuring your baggage data reaches downstream services while maintaining security boundaries between different propagation domains. This makes it easier to correlate business context with technical traces, improving debugging, and observability across your microservices architecture.
Learn more on how to configure and use baggage.
This release brings new component and improvements to Dapr components.
The following new components have been added. The total number of components is 135, including 30 state stores, 47 bindings and 15 message brokers.
Component registration fixes have been implemented across numerous components to ensure proper functionality. Various bug fixes address issues with Cosmos DB transactional operations, Kafka consumer shutdown, MQTT3 certification tests, and PostgresSQL documentation links.
replicateSubscriptionState support.The v1.16 release of the Dapr .NET SDK delivers a set of targeted enhancements focused on developer productivity and runtime efficiency. Most notably, this version debuts Roslyn analyzers and accompanying code fixes that enforce best practices around SDK configuration and usage. This marks the beginning of a more guided and prescriptive development experience, reducing setup complexity and surfacing misconfigurations early.
Framework support has been consolidated with the depreciation of .NET 6 and 7, aligning the SDK with .NET 8 and 9. This shift enabled internal refactoring that improves performance and resource utilization across core components.
On the feature front, the SDK now supports the latest capabilities in the Dapr conversation API with tooling, as well as the overwrite flag for job scheduling. A critical bug affecting encryption and decryption of large files exceeding 4 GB has been resolved.
Dapr Workflows orchestrated using the .NET SDK are now considered stable, supporting both short-lived and long-running processes. Performance has been further improved through targeted optimizations, including new helper methods that enable deterministic parallelization with bounded concurrency.
Learn more at the Dapr Community call for .NET SDK on Sept 3rd 2025
The Python SDK release brings several key improvements and new features to enhance the developer experience. Most notably, the release introduces Conversation API (alphaV2) tool calling and Jobs API support, along with enhanced transactional state operations that now support metadata for more flexible state management.
The release also addresses several important bug fixes, including resolving JSON serialization errors that occurred during internal Dapr errors in actor method calls, fixing issues with receiving actor reminders that had empty state, and improving type hint support for better PEP 561 compliance and IDE integration.
This release includes improvements to error handling, particularly for the HTTP client, allowing users to implement more appropriate error handling behavior.
The FastAPI extension documentation has been updated to resolve warnings about non-annotated attributes. These changes collectively make the Python SDK more robust, user-friendly, and aligned with modern Python development practices.
The Java SDK updates focused on workflow capabilities and developer experience improvements. Multi-app workflow support enables orchestrating business processes across multiple applications, while the new compensation workflows pattern provides robust error handling and rollback mechanisms for complex transactions.
Additional improvements include failure policy support for the Jobs API, tool calling support for the Conversation API, custom activity name registration for workflows, and SpringBoot workflow examples.
The Java SDK enhanced SpringBoot integration with improved connection configuration, health check parameters, and stable module releases for Workflows, SpringBoot, and testcontainers-dapr modules. Developer experience was further improved with better component specification parsing, and comprehensive documentation across SpringBoot properties, and Dapr Jobs and Conversation APIs.
The Java SDK has newly expanded examples for the following:
This release of the Javascript SDK brings several improvements and fixes to enhance the developer experience and maintainability of the Dapr Javascript SDK.
Fixed spelling mistakes on the subscriptionManager for the PubSub API.
The workflow component has been cleaned up and now only uses dapr workflow component aligning with Dapr ecosystem.
Multiple infrastructure improvements have been introduced including removing the prettifier from the build pipeline for better efficiency and updating the Dapr versions used in end-to-end tests to maintain compatibility with the latest Dapr features.
Updated the package metadata to reflect current author and license information, and disabled the issue-closing bot to improve repository management processes. These changes collectively improve the reliability and maintainability of the Javascript SDK while ensuring it stays current with the broader Dapr ecosystem.
The Go SDK implements support for the runtime changes introduced in this release including the new Conversation Alpha2 API functionality.
The existing workflow methods exposed by the Go SDK's Dapr client have been removed as of this release and are no longer available.
Guidance has been updated regarding the workflow (wrapper) exposed by the Go SDK, the new recommended path is to use the dapr/durabletask-go library directly rather than the wrapper provided.
The Go SDK also supports multi-app workflow orchestration across all your Dapr applications within a namespace.
Check out the examples for more information: github.com/dapr/go-sdk/examples.
The Rust SDK has been updated in line with the runtime changes, with the new Conversation Alpha2 support coming soon.
The MSRV remains at 1.78 for this release.
dapr_rbac) to enable IRSA usage on Amazon EKS. 8614state.oracledatabase 3794ExperimentalAttribute instead of ObsoleteAttribute to indicate alpha APIs. 1219Microsoft.Extensions.Configuration.Abstractions triggers a warning. 1536WaitForSidecar in their applications to wait for Dapr readiness 1403lookupTopicWilcard method on subscriptionManager 665scheduler running 4599consumerGroupRebalanceStrategy and useAvroJson doc for Kafka pubsub 4686excludeMetaHeaderRegex kafka pubsub configuration 4724To upgrade to this release of Dapr, follow the steps here to ensure a smooth upgrade. You know, the one where you don't get red errors on the terminal.. we all hate that, right?
Uninstall Dapr using the CLI you currently have installed. Note that this will remove the default $HOME/.dapr directory, binaries and all containers dapr_redis, dapr_placement and dapr_zipkin. Linux users need to run sudo if docker command needs sudo:
dapr uninstall --all
For RC releases like this, download the latest and greatest release from here and put the dapr binary in your PATH.
Once you have installed the CLI, run:
dapr init --runtime-version=1.16
Wait for the update to finish, ensure you are using the latest version of Dapr(1.16) with:
$ dapr --version
CLI version: 1.16
Runtime version: 1.16
You can perform zero-downtime upgrades using both Helm 3 and the Dapr CLI.
Download the latest RC release from here and put the dapr binary in your PATH.
To upgrade Dapr, run:
dapr upgrade --runtime-version 1.16 -k
To upgrade with high availability mode:
dapr upgrade --runtime-version 1.16 --enable-ha=true -k
Wait until the operation is finished and check your status with dapr status -k.
All done!
Note: Make sure your deployments are restarted to pick the latest version of the Dapr sidecar
To upgrade Dapr using Helm, run:
helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
helm upgrade dapr dapr/dapr --version 1.16 --namespace=dapr-system --wait
Wait until the operation is finished and check your status with dapr status -k.
All done!
Note: Make sure your deployments are restarted to pick the latest version of the Dapr sidecar
Please see how to deploy Dapr on a Kubernetes cluster for a complete guide to installing Dapr on Kubernetes
You can use Helm 3 to install Dapr:
helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
kubectl create namespace dapr-system
helm install dapr dapr/dapr --version 1.16 --namespace dapr-system --wait
Alternatively, you can use the latest version of CLI:
dapr init --runtime-version=1.16 -k
Verify the control plane pods are running and are healthy:
$ dapr status -k
NAME NAMESPACE HEALTHY STATUS REPLICAS VERSION AGE CREATED
dapr-sidecar-injector dapr-system True Running 1 1.16 15s 2025-08-27 13:07.39
dapr-sentry dapr-system True Running 1 1.16 15s 2025-08-27 13:07.39
dapr-operator dapr-system True Running 1 1.16 15s 2025-08-27 13:07.39
dapr-placement dapr-system True Running 1 1.16 15s 2025-08-27 13:07.39
dapr-scheduler dapr-system True Running 1 1.16 15s 2025-08-27 13:07.39
After Dapr 1.16 has been installed, perform a rolling restart for your deployments to pick up the new version of the sidecar. This can be done with:
kubectl rollout restart deploy/<deployment-name>
With this release all versions of Dapr v1.13 are no longer supported.
lookupTopicWilcard method on subscriptionManager 665See https://v1-16.docs.dapr.io/operations/support/breaking-changes-and-deprecations/ for a full list of deprecations.
dapr-http-max-request-size has been deprecated and replaced with the max-body-size flag/annotation.In the next release (1.17) the existing Conversation Alpha1 methods and types will be removed. Migrate to Conversation Alpha2.
In the next release (1.17) the MSRV will be updated to 1.81