v1.45.0
Highlights
Workflow Behavior Fixes Enabled by Default
SDKFlagBlockedSelectorSignalReceive and SDKFlagWorkflowNewChannelLostMessages are now enabled by default for new workflow executions. These flags previously gated fixes for selector/signal receive behavior and workflow channel message handling.
Client Transport Compression
gRPC gzip compression is now enabled by default for Temporal client connections, reducing wire size for requests and allowing gzip-compressed responses. Applications that need the previous behavior can disable request compression with client.GrpcCompressionNone.
Workflow Streams Contrib Package
A new experimental contrib/workflowstreams package provides a durable publish/subscribe log hosted inside a Temporal workflow. It supports publishing messages to named topics, long-polling subscription updates, continue-as-new survival, batching, deduplication, truncation, paging, and interoperability with the Python and TypeScript workflow streams packages.
Breaking Changes
💥 Filter nil values from SearchAttributes for Workflow start, Signal with start, and continue as new
Workflow start, signal-with-start, and continue-as-new request construction now omits unset Search Attributes encoded as binary/null. This prevents removed Search Attributes from being carried into new runs, including continue-as-new.
Poller Autoscaling refactored
Workers using poller autoscaling now create poll goroutines dynamically per poll RPC instead of starting the maximum number of pollers up front, matching all core based SDKs. 💥 As part of this refactor, the PollerStartCounter metric is no longer emitted for autoscaling pollers.
What's Changed
- Generic Temporal Nexus Operation Handler by @Quinn-With-Two-Ns in https://github.com/temporalio/sdk-go/pull/2334
- GHA Summary with failures by @yuandrew in https://github.com/temporalio/sdk-go/pull/2376
- Enable SDKFlagBlockedSelectorSignalReceive and SDKFlagWorkflowNewChannelLostMessages by default by @yuandrew in https://github.com/temporalio/sdk-go/pull/2331
- 💥 filter nil values from
SearchAttributesfor workflow start and continue-as-new by @eamsden in https://github.com/temporalio/sdk-go/pull/2274 - contrib/envconfig: add Authority field to ClientConfigProfile by @brucearctor in https://github.com/temporalio/sdk-go/pull/2374
- Support Standalone Activity start delay by @maciejdudko in https://github.com/temporalio/sdk-go/pull/2382
- Add comments to StopChannels for clarity by @yuandrew in https://github.com/temporalio/sdk-go/pull/2355
- Add CHANGELOG and document the update process by @cconstable in https://github.com/temporalio/sdk-go/pull/2387
- Refactor poller autoscaling by @yuandrew in https://github.com/temporalio/sdk-go/pull/2389
- Add nexus headers to SANO interceptor by @Quinn-With-Two-Ns in https://github.com/temporalio/sdk-go/pull/2395
- Add gzip compression on by default by @Sushisource in https://github.com/temporalio/sdk-go/pull/2390
- Add workflowstreams contrib package by @brianstrauch in https://github.com/temporalio/sdk-go/pull/2386
- Add backoff start interval for CAN by @Sushisource in https://github.com/temporalio/sdk-go/pull/2398
- Add some missing comments for struct methods by @yuandrew in https://github.com/temporalio/sdk-go/pull/2399
- Add missing documentation for exposed structs in internal package by @brucearctor in https://github.com/temporalio/sdk-go/pull/2232
- Document worker activity rate limit timeout caveat by @kritibehl in https://github.com/temporalio/sdk-go/pull/2367
- Implement nexus-delivered activity cancels by @Sushisource in https://github.com/temporalio/sdk-go/pull/2394
- Expose raw Failure and Payload protos on SDK error and result types by @brucearctor in https://github.com/temporalio/sdk-go/pull/2231
New Contributors
- @eamsden made their first contribution in https://github.com/temporalio/sdk-go/pull/2274
- @brianstrauch made their first contribution in https://github.com/temporalio/sdk-go/pull/2386
Full Changelog: https://github.com/temporalio/sdk-go/compare/v1.44.1...v1.45.0
Fetched June 18, 2026
