USE_RAMPING_VERSION versioning behavior to Continue-As-New (https://github.com/temporalio/sdk-typescript/pull/2034)envconfig] fix(envconfig) - emit default configuration when no default file path found (https://github.com/temporalio/sdk-typescript/pull/2035)Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.17.0...v1.17.1
Full Changelog: https://github.com/temporalio/temporal/compare/v1.29.6...v1.29.6.1
Full Changelog: https://github.com/temporalio/temporal/compare/v1.30.4...v1.30.4.1
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.
CONTINUE_AS_NEW_VERSIONING_BEHAVIOR_USE_RAMPING_VERSION by @THardy98 in https://github.com/temporalio/sdk-go/pull/2319Full Changelog: https://github.com/temporalio/sdk-go/compare/v1.42.0...v1.43.0
lamba-worker, pre-release] New @temporalio/lambda-worker package (https://github.com/temporalio/sdk-typescript/pull/1995) that wraps the full per-invocation lifecycle for running
Temporal workers inside AWS Lambda (connect, create worker, poll, graceful shutdown). Now in pre-release!client, pre-release] 💥 Standalone Activities support (https://github.com/temporalio/sdk-typescript/pull/2029). Activities can now be started directly from a Temporal Client, independent of any workflow. See https://docs.temporal.io/standalone-activity for documentation. Standalone Activity as a server feature is in Public Preview, but TS implementation is still pre-release.worker] feat(metrics): add UpDownCounter to Buffered Metrics and RuntimeMetricMeter (https://github.com/temporalio/sdk-typescript/pull/2007). First contribution from @gibbonjj! Thank you!workflow] fix(workflow): do not import @temporalio/proto from workflow code (https://github.com/temporalio/sdk-typescript/pull/2010)worker] fix(worker): 'occured' -> 'occurred' in error log message (https://github.com/temporalio/sdk-typescript/pull/2013). First contribution from @SAY-5! Thank you!ci]: Update and pin all GHA actions (https://github.com/temporalio/sdk-typescript/pull/2016)core]: update submodule to sdk-rust (https://github.com/temporalio/sdk-typescript/pull/2026)core, deps] bump sdk-core and protobufjs (https://github.com/temporalio/sdk-typescript/pull/2011)core] core commit to latest (https://github.com/temporalio/sdk-typescript/pull/2028)Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.16.0...v1.17.0
[!WARNING] Before upgrading your Temporal Cluster to
v1.31.0, you must upgrade core and visibility schema to the following:
v1.19v1.19v1.11v14v1.14v1.14Please see our upgrade documentation for the necessary steps to upgrade your schemas.
Please see CHASM section below for more information about the core schema change if you have a custom persistence implementation.
MySQL v1.19, PostgreSQL v1.19, SQLite v1.11 — adds a new current_chasm_executions table for CHASM separate archetype ID spaces:
CREATE TABLE current_chasm_executions(
shard_id, namespace_id, business_id, archetype_id,
run_id, create_request_id, state, status, start_version,
start_time, last_write_version, data, data_encoding,
PRIMARY KEY (shard_id, namespace_id, business_id, archetype_id)
);
MySQL v1.14, PostgreSQL v1.14 — adds TemporalExternalPayloadSizeBytes and TemporalExternalPayloadCount as generated columns with indexes.
Elasticsearch v14 — new index template version with TemporalExternalPayloadSizeBytes and TemporalExternalPayloadCount fields.
CHASM framework now supports separate businessID spaces for different archetypes and includes corresponding schema changes for SQL core databases. This is achieved by storing multiple current mutable state records in the database, one for each archetype.
If you maintain a custom persistence implementation (Cassandra-based or SQL-based), you must update it to support separate businessID spaces as well. All current mutable state related persistence requests now include a new ArchetypeID field, and your persistence implementation should read or update the current mutable state record for that archetype. Please refer to https://github.com/temporalio/temporal/pull/8907 (Cassandra) or https://github.com/temporalio/temporal/pull/8915 (SQL) for sample changes.
Adds a server-computed, immutable Principal field to workflow history events, providing trustworthy attribution for "who did this?". Unlike the client-supplied identity field, Principal is derived from authenticated context and cannot be spoofed.
Principal has a Type / Name pair (e.g. jwt/alice@company.com, temporal/internal) and is surfaced in workflow history, CLI, Web UI, and history exports.
The default Authorizer populates Principal from the JWT sub claim. Users with custom Authorizer implementations can populate Principal by setting the new Principal field on authorization.Result.
To enable this feature, set the dynamic config system.enablePrincipalAttribution to true.
https://github.com/temporalio/temporal/pull/9879 introduced new passwordCommand config option for SQL datastores as an alternative to the static password field. When set, Temporal executes the specified command and uses its stdout as the database password, re-running the command on each new physical connection so short-lived credentials stay fresh.
This enables IAM-based auth for cloud-managed databases (e.g. AWS RDS, GCP Cloud SQL) by invoking the provider's CLI. For example, configuring the passwordCommand to:
aws rds generate-db-auth-token for AWS RDSgcloud sql generate-login-token for GCP Cloud SQLSupported for MySQL and PostgreSQL. Token lifetime is managed through existing config maxConnLifetime.
Complete rework of how Nexus errors are handled and converted (https://github.com/temporalio/temporal/pull/9290).
This change enables Nexus handler errors and operation errors to convey their own messages as opposed to being wrappers for an underlying cause. The change was made to better support Nexus in all languages. There may be slight changes to errors / exception structures in the SDKs.
Nexus is now always enabled (https://github.com/temporalio/temporal/pull/9512).
Use token based routing by default with token-based callback routing (https://github.com/temporalio/temporal/pull/9513).
Support schedule-to-start and start-to-close timeouts for Nexus operations. SDK upgrade required.
CompleteOperation (https://github.com/temporalio/temporal/pull/9053).nexusEndpointsOwnershipLostCh (https://github.com/temporalio/temporal/pull/9602).nexus_task_requests metric with client_name tag (https://github.com/temporalio/temporal/pull/9760).Worker Deployment APIs are now fully GA. The following APIs have been in Public Preview since server v1.28.0. They are now considered GA and users can rely on the signature and behavior consistency going forward.
DescribeWorkerDeploymentDeleteWorkerDeploymentListWorkerDeploymentsSetWorkerDeploymentManagerDescribeWorkerDeploymentVersionDeleteWorkerDeploymentVersionSetWorkerDeploymentCurrentVersionSetWorkerDeploymentRampingVersionUpdateWorkerDeploymentVersionMetadataThe following APIs which have been deprecated since v1.28.0 are now officially sunsetted and their support will be removed in the next server version (v1.32.0). Users should migrate their applications to use the Worker Deployment and Worker Deployment Version APIs instead.
APIs to be removed in v1.32.0:
UpdateWorkerBuildIdCompatibilityGetWorkerBuildIdCompatibilityUpdateWorkerVersioningRulesGetWorkerVersioningRulesGetWorkerTaskReachabilityThe following APIs are added in this release and are in Pre-Release stage as of now. At this stage, the APIs are considered experimental and may see breaking changes in the future:
CreateWorkerDeploymentCreateWorkerDeploymentVersionUpdateWorkerDeploymentVersionComputeConfigValidateWorkerDeploymentVersionComputeConfigListWorkerDeployments to the visibility quota.businessID spaces for different archetypes and includes corresponding schema changes for SQL core databases. See the Schema Changes section above if you maintain a custom persistence implementation.activity.enableStandalone dynamic config flag, which is disabled by default. Set it to true to enable.DeleteStandaloneActivity API for deleting a standalone activity execution.PollActivityTaskQueueResponse now includes additional fields needed by workers running without a parent workflow, such as currentAttemptScheduledTime and namespace. Termination and cancellation identity is now propagated through failure info.RetryState for schedule timeouts, and TimerTaskStatus reset issues. Heart beating, RecordActivityTaskStarted, and various error codes also received fixes.matching.newUseMatcher to false (affected task queues will reload immediately).matching.enableFairness dynamic config. Migration between fairness-enabled and fairness-disabled queues is enabled by default.5.0.4 and later.5.0.4 are not supported.Temporal Docs Server Samples Server Helm Chart
Full Changelog: https://github.com/temporalio/temporal/compare/v1.30.4...v1.31.0
workflow] Fix NDE when multiple patches in a single WFT exceed SA's 2048-byte limit (Core SDK #1225)Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.16.0...v1.16.1
If using authorization with replication setup, set system.disableStreamingAuthorizer dynamic config to true to opt out from changes in this release and avoid replication traffic connection errors. Check the linked CVE for implications of opting out.
Full Changelog: https://github.com/temporalio/temporal/compare/v1.28.3...v1.28.4
Temporal Docs Server Helm Chart
1.28.4)Server Server With Auto Setup (what is Auto-Setup?) Admin-Tools
If using authorization with replication setup, set system.disableStreamingAuthorizer dynamic config to true to opt out from changes in this release and avoid replication traffic connection errors. Check the linked CVE for implications of opting out.
Full Changelog: https://github.com/temporalio/temporal/compare/v1.29.5...v1.29.6
Temporal Docs Server Helm Chart
1.29.6)Server Server With Auto Setup (what is Auto-Setup?) Admin-Tools
If using authorization with replication setup, set system.disableStreamingAuthorizer dynamic config to true to opt out from changes in this release and avoid replication traffic connection errors. Check the linked CVE for implications of opting out.
Full Changelog: https://github.com/temporalio/temporal/compare/v1.30.3...v1.30.4
Temporal Docs Server Helm Chart
1.30.4)NexusClient has been renamed to NexusServiceClient (#1993), and NexusInboundCallsInterceptor now requires executeStartOperation and executeCancelOperation instead of the old generic execute method (#1979).worker] Extend bundler to support pre-loading modules into the reusable V8 context via a new preloadModules option on BundleOptions/WorkerOptions.bundleOptions; pre-loaded modules are shared across workflow executions, reducing per-workflow memory and startup overhead (#1999)nexus] :boom: Add Nexus Inbound Interceptors — NexusInboundCallsInterceptor now exposes executeStartOperation and executeCancelOperation, replacing the previous generic execute interceptor (#1979)opentelemetry] :boom: Nexus OpenTelemetry support — adds inbound interceptors and distributed trace context propagation across Nexus service boundaries; renames interceptor I/O types from ExecuteNexusOperation* to NexusStartOperation*/NexusCancelOperation*, and adds RunStartNexusOperation and RunCancelNexusOperation span names (#1998)nexus] :boom: Nexus error serialization now uses Temporal ProtoFailure end-to-end, aligning with other SDKs; also fixes a JS bug where comma-separated case values in gRPC status code mapping silently matched only the last value (#1973)nexus] :boom: Rename NexusClient to NexusServiceClient in preparation for upcoming Nexus Standalone Operations (#1993)nexus] Add scheduleToStartTimeout and startToCloseTimeout options to the workflow Nexus client API (#1942)nexus] Standardize Nexus operation input deserialization error handling: payload codec decode failures are now surfaced as retryable INTERNAL handler errors, while payload converter failures remain non-retryable BAD_REQUEST; ApplicationFailure is passed through directly (#1949)nexus] Infer workflow result type from WorkflowRunOperationHandler — startWorkflow now returns WorkflowHandle<WorkflowResultType<T>>, removing the need to explicitly type the handler (#1968)worker] Allow WorkerDeploymentOptions to omit defaultVersioningBehavior when useWorkerVersioning is false, enabling workers to report a build ID to the Temporal UI without opting into full worker versioning (#1963)worker] Propagate targetWorkerDeploymentVersionChanged and Continue-As-New suggested reasons for worker deployment versioning trampolining (#1972)client] Suppress spurious unhandled rejection from WithStartWorkflowOperation when executeUpdateWithStart fails before a response is received (#1990)opentelemetry] Do not mark CompleteAsyncError as a span error (#1989)opentelemetry] Avoid TypeError when user code throws a non-Error value (#1984)worker] Tolerate empty rootWorkflowExecution/parentWorkflowExecution objects from pre-v1.24 servers, preventing IllegalStateError on resumed workflows (#1969)ai] Use activityOptions in callTool proxy (#1954)core] Update sdk-core (#1959)deps] Bump vulnerable dependencies (#1957, #1988)deps] Bump rustls-webpki from 0.103.9 to 0.103.10 (#1978)deps] Bump quinn-proto from 0.11.13 to 0.11.14 (#1961)deps] Bump tar (#1976, #1946)Breaking changes are marked with :boom:
Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.15.0...v1.16.0
The minimum Go version for the Go SDK has been updated 1.24.0 due to required dependency updates having this Go version.
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 deprecatedworkflow.WithWorkflowNamespace func is deprecatedThis 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.
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.
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.
Full Changelog: https://github.com/temporalio/sdk-go/compare/v1.41.1...v1.42.0
Full Changelog: https://github.com/temporalio/temporal/compare/v1.30.2...v1.30.3
Temporal Docs Server Helm Chart
1.30.3)Full Changelog: https://github.com/temporalio/temporal/compare/v1.29.4.1...v1.29.5
Temporal Docs Server Helm Chart
1.29.5)Server Server With Auto Setup (what is Auto-Setup?) Admin-Tools
Full Changelog: https://github.com/temporalio/temporal/compare/v1.28.3...v1.28.3.1
Full Changelog: https://github.com/temporalio/temporal/compare/v1.29.4...v1.29.4.1
GetTaskQueueUserData lookups (#9168, #9262)VersioningOverride for automated worker controllers (#9147)approximate_backlog_count metric for Current and Ramping version tasks (#9300, #9316, #8957)fairTaskReader (#9467)google.golang.org/grpc v1.72.2 → v1.79.3 (CVE-2026-33186, CRITICAL)go.opentelemetry.io/otel/sdk v1.34.0 → v1.40.0 (CVE-2026-24051, HIGH)zlib 1.3.1-r2 → 1.3.2-r0 (CVE-2026-22184, HIGH)Full Changelog: https://github.com/temporalio/temporal/compare/v1.30.1...v1.30.2
Temporal Docs Server Docker Compose Helm Chart
1.30.2)Server Server With Auto Setup (what is Auto-Setup?) Admin-Tools
This patch addresses multiple CVEs in Go dependencies and updates the Elasticsearch image:
golang.org/x/crypto v0.37.0 → v0.45.0 (GO-2025-4116, GO-2025-4134, GO-2025-4135)golang.org/x/net v0.39.0 → v0.47.0 (GO-2026-4440, GO-2026-4441)Full Changelog: https://github.com/temporalio/temporal/compare/v1.28.2...v1.28.3
Temporal Docs Server Docker Compose Helm Chart
Server (use the tag 1.28.3) Server With Auto Setup (what is Auto-Setup?) Admin-Tools
Fixed a permanent NDE on replay when Data Converter or Codec fails on Session activity cancellation. Refer to https://github.com/temporalio/sdk-go/pull/2228 for more details.
Also fixed an issue with worker heartbeat ctx not being propagated for cancellation on worker shutdown. More details https://github.com/temporalio/sdk-go/pull/2215
Full Changelog: https://github.com/temporalio/sdk-go/compare/v1.41.0...v1.41.1
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.
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 causenexus.OperationError can now include its own message (and stack trace if the language supports it) independent from the causenexus.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 ApplicationErrorOperationStateCancelled will be translated to an CanceledErrorThese changes only effect synchronous operations. There is no change to errors for asynchronous operations like starting a workflow.
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.
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,
})
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,
})
Added support for workflows to detect when their target deployment version has changed and opt into upgrading via continue-as-new. New APIs:
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.
Full Changelog: https://github.com/temporalio/sdk-go/compare/v1.40.0...v1.41.0