Skip to content

Releases: temporalio/sdk-go

v1.44.0

21 May 19:55
e3521a2

Choose a tag to compare

(Experimental) Stand Alone Nexus Operations

NOTE: Stand Alone Nexus Operation Support is experimental and currently only supported on pre-release versions of the [dev server](https://github.com/temporalio/cli/releases/tag/v1.7.1-standalone-nexus-operations).

Added support for Stand Alone Nexus Operations, allowing clients to
start and manage Nexus operations directly outside of a Workflow. Operations can be tracked through a NexusOperationHandle that supports getting results, describing, cancelling, and terminating executions. The client also exposes ListNexusOperations,
CountNexusOperations, and GetNexusOperationHandle for discovering
and reattaching to running operations.

Documentation, Samples, and instructions to request enablement in Temporal Cloud will be linked here when available.

SDK Flag SDKFlagMemoUserDCEncode has been enabled by default

Memo's previously didn't use the user data converter, now the SDK will first use the user data converter, and if user DC errors out, the default DC will be used as a fallback. If that also returns an error, the user DC error will be returned to the caller.

Note that old histories before this flag was flipped on will continue to use the old code path of not using the user DC.

What's Changed

New Contributors

Full Changelog: v1.43.0...v1.44.0

v1.43.1

19 May 16:19
0d47ef5

Choose a tag to compare

Fixed ExternalStorageReference API vendoring panic

This patch fixes a panic that users hit when using the latest go.temporal.io/api v1.62.12 dependency with Go SDK v1.43.0

What's Changed

  • Remove vendored ExternalStorageReference, use go.temporal.io/api v1.6… by @yuandrew in #2349

Full Changelog: v1.43.0...v1.43.1

v1.43.0

30 Apr 23:20
8b9d2c2

Choose a tag to compare

Highlights

💥 Payload and Memo Size Validation (Experimental)

Within workers, if a payload exceeds the server limits, the worker will eagerly fail the current task instead of uploading the object with the too large payload or memo. This allows the task to be retried instead of entirely failing the workflow from within the server. Additional documentation on how to use this feature will be linked here when available.

External Storage Updates (Experimental)

  • Store and retrieval operations run concurrently with a default limit of 3 concurrent sequence visits per workflow task, thus shortening wall-class time for store and retrieval operations for each workflow task.
  • New Codec Server payload HTTP handler to allow Temporal Web UI and CLI to encode, decode, and download externally stored payloads. Additional documentation on how to use this feature will be linked here when available.
  • 💥 External storage event history format has been incompatibly changed from prerelease. New storage references are emitted in the new format starting with release. Support for the ability to retrieve references in the old format has been preserved. The prerelease format is deprecated and will be removed in a future release.

What's Changed

New Contributors

Full Changelog: v1.42.0...v1.43.0

v1.42.0

08 Apr 19:22
9cf4aa8

Choose a tag to compare

Breaking Changes

💥 Minimum Go version updated to 1.24.0

The minimum Go version for the Go SDK has been updated 1.24.0 due to required dependency updates having this Go version.

💥 Namespace fields for cross-namespace workflow commands are deprecated

As of server 1.30.1, cross-namespace operations are disabled by default. The SDK has been updated to deprecate the corresponding fields and functions:

  • ChildWorkflowOptions.Namespace field is deprecated
  • workflow.WithWorkflowNamespace func is deprecated

Highlights

Serverless Lambda Workers (Pre-Release)

This release introduces a module which can be used together with upcoming changes to the Temporal server & cloud which allow you to run your worker in an AWS Lambda function which the server will invoke as-needed to process Workflow, Activity, and Nexus tasks - allowing you to do away with some of the operational burden of running a fleet of workers. Additional documentation on how to use this feature will be linked here when available.

AWS S3 Storage Driver (Pre-Release)

This release introduces a module which can be used with external storage to offload large payloads to S3 buckets in AWS instead of inlining them into workflow history. Additional documentation on how to use this feature will be linked here when available.

Serialization Context for Codecs and Converters

This release introduces SerializationContext — an opt-in mechanism that provides metadata (e.g. namespace, workflow ID, activity type, etc...) to DataConverter, PayloadCodec, and FailureConverter implementations during serialization/deserialization.

Bug Fixes

  • Fix standalone activity header propagation so interceptors can access and modify headers.

What's Changed

New Contributors

Full Changelog: v1.41.1...v1.42.0

v1.41.1

17 Mar 22:40
0056482

Choose a tag to compare

Bugfixes

Fixed a permanent NDE on replay when Data Converter or Codec fails on Session activity cancellation. Refer to #2228 for more details.

Also fixed an issue with worker heartbeat ctx not being propagated for cancellation on worker shutdown. More details #2215

What's Changed

Full Changelog: v1.41.0...v1.41.1

v1.41.0

10 Mar 15:47
dbd5b3c

Choose a tag to compare

Breaking Changes

💥 Worker Heartbeats

This release adds a new feature called Worker Heartbeating. This feature spins up a single nexus-only worker per Client/Namespace in the background and periodically sends some basic metrics over to server for all of the workers registered on the same Client/Namespace.

Server version 1.29.1 and newer supports this feature. This feature will be enabled by default, although this currently requires a server dynamic config flag, --dynamic-config-value frontend.WorkerHeartbeatsEnabled=true to enable. Currently, the only way to interact with this new data is to also enable the flag --dynamic-config-value frontend.ListWorkersEnabled=true, then use CLI commands temporal worker list and temporal worker describe to query the data. If heartbeating is enabled with a server version older or with the config flag off, a single warning log Worker heartbeating configured for runtime, but server version does not support it. on worker startup will emit.

💥 With the introduction of Worker Heartbeats, we’ve deprecated the contrib/resourcetuner lib, and instead created a new contrib/sysinfo lib. The resource tuner now lives in the worker package.

💥  Nexus Error Serialization Improvements

Note: Requires Temporal Server version 1.31.0 or later.

This release of the Go SDK includes a number of enhancements to error serialization for synchronous operations.

  • nexus.HandlerError can now include its own message (and stack trace if the language supports it) independent from the cause
  • nexus.OperationError can now include its own message (and stack trace if the language supports it) independent from the cause
  • 💥 nexus.OperationError is now included in the error chain when a synchronous operation handler returns a nexus.OperationError . The nexus.OperationError will be translated to an appropriate Temporal error based on the state of the error. Previously this error was not included in the error chain.
    • OperationStateFailed will be translated to an ApplicationError
    • OperationStateCancelled will be translated to an CanceledError

These changes only effect synchronous operations. There is no change to errors for asynchronous operations like starting a workflow.

Highlights

Nexus Operation Timeouts

Note: Requires Temporal Server version 1.31.0 or later.

This release of the Go SDK adds more timeout options on NexusOperationOptions to control how long the caller wants to wait on different stages of the operation.

Schedule-to-Start timeout

The Schedule-to-Start timeout limits how long the caller will wait for the Operation to be started by the handler.
If not set, no Schedule-to-Start timeout is enforced.

fut := c.ExecuteOperation(ctx, service.HelloOperationName, service.HelloInput{Name: name, Language: language}, workflow.NexusOperationOptions{
	ScheduleToStartTimeout: 2 * time.Minute,
})

Start-to-Close timeout

The Start-to-Close timeout limits how long the caller will wait for an asynchronous Operation to complete after it has been started.
This timeout only applies to asynchronous Operations.
If not set, no Start-to-Close timeout is enforced.

fut := c.ExecuteOperation(ctx, service.HelloOperationName, service.HelloInput{Name: name, Language: language}, workflow.NexusOperationOptions{
	StartToCloseTimeout: 5 * time.Minute,
})

Add trampolining API for versioned continue-as-new

Added support for workflows to detect when their target deployment version
has changed and opt into upgrading via continue-as-new. New APIs:

  • WorkflowInfo.GetTargetWorkflowDeploymentVersionChanged() — check if the
    workflow's target version changed
  • WorkflowInfo.GetContinueAsNewSuggestedReasons() — get reasons why CAN is
    suggested
  • ContinueAsNewVersioningBehaviorAutoUpgrade option for ContinueAsNewError
    — explicitly upgrade to the new version on CAN

This enables a "trampolining" pattern: a pinned workflow detects a version
change, then continues-as-new with auto-upgrade to seamlessly move to the
latest deployment version. Both detection and action are fully opt-in,
avoiding accidental infinite CAN loops.

What's Changed

New Contributors

Full Changelog: v1.40.0...v1.41.0

v1.40.0

12 Feb 17:07
8da89f8

Choose a tag to compare

Breaking Changes

Due to Standalone Activities, testActivityToken are used to keep track of activities, instead of just activityID, they now contain activityID and runID. Most users should not be affected, only if you're manually constructing task tokens in your tests.

Highlights

Versioning v1 and v2 worker options and versioning intent have been marked as deprecated.

Bug fixes

Various test fixes and improvements

Properly set RootWorkflowExecution in child workflow env when testing.

Enforcement of heartbeat and start-to-close timeouts in test environment, as well as properly cancel timer when AwaitWithTimeout condition resolves.

What's Changed

  • Additional fields in env config by @stephanos in #2145
  • Enforce heartbeat and start-to-close timeouts in test environment by @mfateev in #2144
  • Upgrade Datadog tracer to dd-trace-go v2 by @yarinzirlin in #2113
  • Add release notes for contrib/datadog v0.5.0 by @yuandrew in #2168
  • Cancel timer when AwaitWithTimeout condition resolves by @mfateev in #2153
  • fix: set RootWorkflowExecution in child workflow env when testing by @pbrowne011 in #2170
  • Fix TestMockCallWrapperNotBefore test flake by @yuandrew in #2173
  • Enhance SDK flags so flags are off by default when first introduced by @yuandrew in #2164
  • Deprecate v1 and v2 versioning worker options and versioning intent by @carlydf in #2174
  • 💥 Standalone activities support by @maciejdudko in #2158
  • Switch from docker-compose to samples-server repo by @yuandrew in #2183
  • Remove experimental warning for worker deployment versioning and envconfig by @THardy98 in #2176
  • bump API to v1.62.1 by @yuandrew in #2187

New Contributors

Full Changelog: v1.39.0...v1.40.0

v1.39.0

09 Jan 00:37
8f5fdc2

Choose a tag to compare

Breaking Changes

It is now assumed that TLS is enabled if API key is provided. A new TLSDisabled ConnectionOption must be specified to explicitly disable TLS when an API key is provided.

Highlights

Plugin support

Plugins are a new way of providing easy configuration of workers and clients

What's Changed

New Contributors

Full Changelog: v1.38.0...v1.39.0

v1.38.0

19 Nov 21:32
02ca26c

Choose a tag to compare

Breaking Changes

When using sessions, deployment info is no longer sent on the worker specific task queue. This should reduce load on the server due to less temporary task queues. No changes in behaviour is expected for session workers.

Bugfixes

Fixed a bug in Poller autoscaling causing maxNumberOfPollers to not be respected.

What’s Changed

2025-10-09 - 2d05a73 - Use macOS 15 intel runners (#2072)
2025-10-13 - a117802 - Set worker version on eager start requests (#2075)
2025-10-13 - d61d5ef - Remove experimental warnings from worker tuners (#2077)
2025-10-14 - ad990a3 - Include failure details in query failure. Improved gRPC message too large detection. Fix flaky TestGrpcMessageTooLarge. (#2078)
2025-10-15 - 09e0634 - Upgrade to Nexus SDK 0.5.1 and inline the client implementation for tests (#2079)
2025-10-17 - f7eff2a - Remove Nexus deprecated APIs (#2081)
2025-10-22 - 8a24b22 - Add nightly throughput stress (#2087)
2025-10-24 - f34365e - Replace tctl references with Temporal CLI (#2080)
2025-10-27 - 2c43194 - Fix envconf docs path (#2093)
2025-10-29 - 5cd20cf - Set explicit permissions for GitHub Actions workflows (#2095)
2025-10-30 - 82be7bc - Cleanup nightly tps workflow (#2091)
2025-11-06 - 4b5d758 - Add actions-read permission to CI workflow (#2100)
2025-11-07 - a451bef - Remove experimental notes from poller behavior docs (#2096)
2025-11-12 - 9efde41 - fix: run maxNumberOfPollers poller routines instead of initialNumberOfPollers (#2105)
2025-11-14 - 7c0ebcf - OpenTelemetry: Specify span kind and don't set error type for benign exception (#2048)
2025-11-19 - 7025a6a - Stop sending deployment info for session per-worker task queue (#2088)

v1.37.0

08 Oct 16:42
faac5d3

Choose a tag to compare

Breaking Changes

Versioning - Small API Rename

Renamed BuildId to BuildID in WorkerDeploymentVersion to match all other instances and Go naming convention.

Bugfixes

Reverting behavior for unblockSelectorSignal SDK flag

The previous fix introduced with the SDK flag unblockSelectorSignal was found to have a different bug with losing signals. For now the flag is getting turned off, and a more robust solution will be re-introduced in a future release. If anyone happens to rely on this new behavior already, the UNBLOCK_SIGNAL_SELECTOR env var can be set to enable the SDK flag.

What’s Changed

2025-08-27 - b2d1477 - Disable some flaky tests (#2037)
2025-09-02 - a2ac97f - Changes to gRPC message too large error handling (#2042)
2025-09-12 - ef85fee - 💥 Rename BuildId -> BuildID in WorkerDeploymentVersion (#2051)
2025-09-19 - 96d9f2b - Activity reset (#2056)
2025-09-22 - 1528c32 - Add NexusInfo (#2054)
2025-09-23 - ff709e4 - Added retry policy to activity info (#2057)
2025-09-24 - aecdca8 - Fix CA cert config validation (#2052)
2025-10-02 - 8d43143 - populate ManagerIdentity from Describe (#2063)
2025-10-07 - 0968a50 - Pass AllowNoPollers flag to SetCurrentVersion and SetRampingVersion (#2067)
2025-10-07 - 3e46cbd - Fix activity cancelation check (#2069)
2025-10-07 - 5ed31b6 - Revert setting unblockSelectorSignal SDK flag by default (#2070)
2025-10-07 - f88bdd3 - Implement SetWorkerDeploymentManagerIdentity (#2068)

New Contributors

Full Changelog: v1.36.0...v1.37.0