Change log
View as MarkdownThis page lists user-visible changes to the Go SDK, newest first; each section covers the changes since the previous release of this component.
1.45
Released 2026-11-11 as sdk-go/v1.45.0.
Added
- WorkerOptions.FlowDefinitionPaths and WorkerOptions.FlowDefinitions upload the Flow Definition Graph 2.0 documents of the Worker's registered Flow types when the Worker starts. A failed upload only logs a warning. ReadFlowDefinitionFiles reads documents with the same rules, and Client.UploadFlowDefinitions uploads them from a deployment script and reports each FlowDefinitionUploadOutcome. Reference.
Breaking
- A Step whose Step type contains "-" can no longer start SubFlows. The child Flow ID joins the parent Flow ID, Step execution ID, and SubFlow index with "-", so a dash made it ambiguous. When such a Step returns a SubFlow Condition from WaitFor, Dex Server rejects the result and fails the attempt without retry. The Worker logs a warning. Default Step types are Go type names and are not affected; only a GetStepType override can contain "-". To migrate, change the GetStepType override to return a name without "-". Reference.
Fixed
- The Join documentation no longer recommends reporting a result for a cancelled branch from the cancelling RPC, which could count that branch twice. A cancelled branch never reports, and no other code can safely report for it. API reference.
1.44
Released 2026-11-10 as sdk-go/v1.44.0.
Added
- Join and JoinRound synchronize parallel branches of one Flow. DefineJoin defines a Join over a ChannelMap of branch results. Join.Fork starts the branches and the join Step with one JoinRound; Join.ForkWithRoundKey takes an explicit round key for RPCs. Branches report with Join.EndBranch or Join.ReportBranchResult. The join Step waits with Join.ForAllBranches, Join.ForFirstBranch, or Join.ForBranches and reads Join.BranchResults. The next round's split Step resets the previous round with Join.ForRemainingBranches and reads Join.RemainingBranchResults. Join.ChannelMap returns the underlying ChannelMap for reading or loading a round's pending results. API reference.
1.43
Released 2026-11-10 as sdk-go/v1.43.0.
Breaking
- Removed Client.TriggerContinueAsNew, FlowContinuedAsNew, FlowConfig.ContinueAsNewThreshold, FlowConfig.ContinueAsNewPageSizeBytes, SearchFlowsOptions, Client.SearchFlowsWithOptions, and IncludeContinuedAsNew. Use Client.SearchFlows for run searches. Reference.
- Removed WaitForStepCompletionOptions.InternalHandlerTimeout and WaitForAttributeOptions.InternalHandlerTimeout. RequestID remains accepted but the server does not read it for these waits. Reference.
- Generated bindings rename FlowExecutionID to FlowRunID and FlowExecutionId to FlowRunId on response and history messages. ProtoJSON uses flowRunId. Reference.
Added
- NewStandaloneContext and StandaloneContextOptions create a Context for running Step code outside a Worker, such as in a tool server or a test. The caller supplies the metadata, including the required Attempt, and seeds the last heartbeat value and step-execution locals. The OnRecordHeartbeat, OnSetStepExecutionLocal, and OnRecordEvent hooks receive what the Step code records, so the caller can persist it. API reference.
1.40
Released 2026-11-09 as sdk-go/v1.40.0. Patch release sdk-go/v1.40.2 followed the same day.
Added
- FlowConfig.OffloadHistory chooses whether a run offloads its history to object storage. Nil means true. Set it to false for many short runs that close soon. Set it at start through StartFlowOptions.ConfigOverride or in SubFlowOptions.ConfigOverride. A SubFlow otherwise inherits its parent's value, and Client.UpdateFlowConfig rejects it with INVALID_ARGUMENT. It requires server-zd 0.1.23 or later. Reference.
Changed
- FlowConfig.DeleteExpiredHistoryObjects is deprecated. It has no effect, and the SDK no longer sends it. Existing code that sets it still compiles.
- The Worker error type now reports the original error's type for an error wrapped by dex.ErrorWithStack, instead of the wrapper type. The message and stack are unchanged. This arrived in 1.40.2.
1.39
Released 2026-11-09 as sdk-go/v1.39.0.
Added
- FlowConfig.DeleteExpiredHistoryObjects controls expired history object deletion at start, on update, and for SubFlows. It requires history offload and server-zd 0.1.22 or later.
Changed
- A LoadBlobs request names at most 1,000 entries. The SDK batches larger requests and keeps the input order.
1.38
Released 2026-11-07 as sdk-go/v1.38.0.
Added
- FlowConfig.HistoryWindowEvents sets about how many of the newest history events a run keeps for history reads and Time Travel. Set it at start, change it with Client.UpdateFlowConfig, or override it for a SubFlow. Nil uses the server's history.windowEvents setting. Dex rejects a value that is not positive or exceeds history.maxWindowEvents with INVALID_ARGUMENT. It requires server-zd 0.1.21 or later. Reference.
Fixed
- A LoadBlobs request splits when the server rejects its response with OUT_OF_RANGE for exceeding the send limit. Before, hydrating more than 32 MiB of uncached blobs failed.
1.37
Released 2026-11-06 as sdk-go/v1.37.0. Reference: 1.37.x.
This release has no runtime behavior changes; the SDK changes in this interval are API documentation updates.
1.35
Released 2026-11-06 as sdk-go/v1.35.0. Reference: 1.35.x.
Breaking
- Workers and the Client’s first call now require server-zd 0.1.17 or later (protocol version 4). Upgrade all server processes before upgrading the SDK. Reference.
- Worker startup fails when MaxConcurrentTasks exceeds matching.maxConcurrentTasksCap (256 by default). Lower the Worker setting or raise the server cap and matching.maxStreams first. Reference.
- RetryPolicy.TotalDuration now starts at the first hand-out and only gates scheduling another retry. Set method timeouts to bound running attempts. API reference.
- A Step with no available or supporting Worker waits durably without consuming a retry. Set a Flow timeout to bound that wait. Reference.
- A Step attempt interrupted after its hand-out was committed fails with NOT_COMPLETED and consumes a retry. Review retry policies and side effects before upgrading. Reference.
Added
- RecoveryErrorInfo.AttemptProgress distinguishes a failed Step method that never started from one that may have run. API reference.
- RPCOptions.Name sets an RPC’s protocol name while Go callers continue referring to its bound method. API reference.
Changed
- Workers open one execution stream per slot; ReservedRPCTasks selects RPC-only slots. By default, a Worker with at least two slots reserves one for RPCs. Reference.
- Stop drains running handlers and returns tasks that did not start without consuming a retry. Reference.
Deprecated
- IdleStreamsPerQueue is accepted but ignored, and PullReservedRPCDeclines() always reports zero. Use execution-slot capacity and queue metrics instead. Reference.
Fixed
- A Worker accepts omitted input for an RPC whose input type is dex.None, allowing TypeScript Clients to invoke it. Missing input for other RPC types still fails with INVALID_ARGUMENT. API reference.
1.32
Released 2026-11-01 as sdk-go/v1.32.0. Reference: 1.32.x.
Added
- Generated protocol bindings include AdminService, with DescribeActiveNode and StepDownActiveNode for inspecting and stepping down the active server process. Release notes.
1.30
Released 2026-10-31 as sdk-go/v1.30.0. Reference: 1.30.x.
Added
- Generated protocol bindings add ERROR_SUB_STATUS_ATTRIBUTE_INDEX_CAPACITY_EXCEEDED and ERROR_SUB_STATUS_INDEXED_KEYWORD_TOO_LONG for Attribute index admission errors. Release notes.
1.29
Released 2026-10-31 as sdk-go/v1.29.0. Reference: 1.29.x.
Added
- Generated history responses expose the pruned event range and first retained event ID. Step event contexts also carry related event IDs and the WaitFor completion time. Release notes.
Older releases: GitHub releases.