Releases: temporalio/sdk-typescript
Releases · temporalio/sdk-typescript
1.16.0
Notable Changes
- 💥 The Nexus API has several breaking changes in this release; see items marked 💥 in the sections below. Of particular note:
NexusClienthas been renamed toNexusServiceClient(#1993), andNexusInboundCallsInterceptornow requiresexecuteStartOperationandexecuteCancelOperationinstead of the old genericexecutemethod (#1979).
Features
- [
worker] Extend bundler to support pre-loading modules into the reusable V8 context via a newpreloadModulesoption onBundleOptions/WorkerOptions.bundleOptions; pre-loaded modules are shared across workflow executions, reducing per-workflow memory and startup overhead (#1999) - [
nexus] 💥 Add Nexus Inbound Interceptors —NexusInboundCallsInterceptornow exposesexecuteStartOperationandexecuteCancelOperation, replacing the previous genericexecuteinterceptor (#1979) - [
opentelemetry] 💥 Nexus OpenTelemetry support — adds inbound interceptors and distributed trace context propagation across Nexus service boundaries; renames interceptor I/O types fromExecuteNexusOperation*toNexusStartOperation*/NexusCancelOperation*, and addsRunStartNexusOperationandRunCancelNexusOperationspan names (#1998) - [
nexus] 💥 Nexus error serialization now uses TemporalProtoFailureend-to-end, aligning with other SDKs; also fixes a JS bug where comma-separatedcasevalues in gRPC status code mapping silently matched only the last value (#1973) - [
nexus] 💥 RenameNexusClienttoNexusServiceClientin preparation for upcoming Nexus Standalone Operations (#1993) - [
nexus] AddscheduleToStartTimeoutandstartToCloseTimeoutoptions to the workflow Nexus client API (#1942) - [
nexus] Standardize Nexus operation input deserialization error handling: payload codec decode failures are now surfaced as retryableINTERNALhandler errors, while payload converter failures remain non-retryableBAD_REQUEST;ApplicationFailureis passed through directly (#1949) - [
nexus] Infer workflow result type fromWorkflowRunOperationHandler—startWorkflownow returnsWorkflowHandle<WorkflowResultType<T>>, removing the need to explicitly type the handler (#1968) - [
worker] AllowWorkerDeploymentOptionsto omitdefaultVersioningBehaviorwhenuseWorkerVersioningisfalse, enabling workers to report a build ID to the Temporal UI without opting into full worker versioning (#1963) - [
worker] PropagatetargetWorkerDeploymentVersionChangedand Continue-As-New suggested reasons for worker deployment versioning trampolining (#1972)
Bug Fixes
- [
client] Suppress spurious unhandled rejection fromWithStartWorkflowOperationwhenexecuteUpdateWithStartfails before a response is received (#1990) - [
opentelemetry] Do not markCompleteAsyncErroras a span error (#1989) - [
opentelemetry] AvoidTypeErrorwhen user code throws a non-Errorvalue (#1984) - [
worker] Tolerate emptyrootWorkflowExecution/parentWorkflowExecutionobjects from pre-v1.24 servers, preventingIllegalStateErroron resumed workflows (#1969) - [
ai] UseactivityOptionsincallToolproxy (#1954)
Dependencies
- [
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 💥
Full Changelog: v1.15.0...v1.16.0
1.15.0
Notable Changes
⚠️ Fixed potential request storms when worker is configured with poller autoscaling, due to missing exponential backoff onResourceExhaustedand other gRPC errors. See PRs temporalio/sdk-core#1110 and temporalio/sdk-core#1111 for more details.- 💥 Node.js 18 is no longer supported (#1930)
- 🧪 Added experimental support for Bun runtime (#1906)
Features
- [
opentelemetry] Expose functionality as plugin (#1884) - [
worker] Worker Connection Replacement (#1902) - [
workflow] Nexus Cancellation Types (#1894) - [
worker] Worker deployment versioning is now GA (#1924) - [
envconfig] Environment configuration is now GA (#1924) - [
testing] Add API to setup Nexus endpoint on ephemeral test server (#1897) - [
nexus] Expose Temporal Nexus operation info to Temporal Nexus operation (#1896) - [
bun] 🧪 Bun support - experimental (#1906) - [
runtime] 🧪 Buffered metrics - experimental (#1922)
Bug Fixes
- [
worker] Add exponential backoff onResourceExhaustedand other gRPC errors in Poller autoscaler (#1938 and #1944) - [
native] Correct native binding type for workerValidate (#1939) - [
client] ExposeoperatorServiceonConnectionLikeinterface (#1904) - [
opentelemetry] Serialize TraceState before exporting to sink (#1891) - [
opentelemetry]makeWorkflowExporteraccepts SpanProcessor (#1886) - [
ai] Addawaitto tool execution (#1882) - [
ai] Description was missing from the derived mcp tools (#1905) - [
ai] Fix a bug in AI SDK MCP Schema conversion (#1890) - [
common] Make search attribute type more lenient when parsing (#1943) - [
workflow] Allow logging queries validators during replay (#1927) - [
ai] Add missing dependency to ai package (#1878) - [
worker] Fix wf_task_replay_latency metric recording for non-replay tasks (#1083) - [
worker] Always send shutdown_worker RPC, fix WorkerStatus state when shutting down worker (#1082) - [
worker] Fix bug where we count first WFT as sticky cache hit (#1091)
Dependencies
- 💥 Drop node 18 support (#1930)
- [
api] Update Temporal Protobuf APIs to v1.61.0 (#1100) - [
deps] Bump vulnerable dependencies (hono, jws, tar, ...) (#1900) - [
deps] Run cargo update (#1937) - [
deps] Bump webpack from 5.94.0 to 5.104.1 (#1929) - Upgrade eslint (#1933)
- [
deps] Bump bytes from 1.10.1 to 1.11.1 in /packages/core-bridge (#1921) - [
deps] Bump @modelcontextprotocol/sdk from 1.25.2 to 1.26.0 (#1928) - [
deps] Bump tar from 7.5.3 to 7.5.7 (#1916)
Breaking changes are marked with 💥
Experimental features are marked with 🧪
Full Changelog: v1.14.1...v1.15.0
1.14.1
Minor Features
- [
ai-sdk] Upgrade to AI SDK v6 with embedding model support (#1865, thabnks @ItsWendell)
Bug Fixes
- [
workflow] Automatically cleanup AsyncLocalStorage on workflow context disposal (#1871) - [
OpenTelemetry] Avoid lazy loading workflow package in interceptors (#1872) - Fix Env Config path to match docs (#1870)
- Fix typos in
heartbeatJSDoc (#1863, thanks @daveyarwood)
Security
- Bump lru from 0.16.1 to 0.16.3 (#1873)
Full Changelog: v1.14.0...v1.14.1
1.14.0
Noteworthy Features
- 🧪 [
ai] Introduced (experimental) AI SDK Integration (#1792). - 💥 [
client] TLS is enabled by default if an API key is provided (#1847). To disable TLS in that specific context, explicitly settls: false.
Minor Features
- [
opentelemetry] Create spans for all interceptor events (#1835) - [
worker] Enable Worker heartbeating (#1818). Worker heartbeating allows smoother server-side behaviors when a Worker is shut down or somehow become unreachable.
Bug Fixes
- [
worker] The reusable workflow executor now properly runs dispose interceptors (#1834, thanks @mnahkies 🙏). - [
core-bridge] Include bridge macros rust package in core-bridge npm package to allow building from source (#1852, thanks @stathis-alexander 🙏)
Security
- [
@temporalio/create]: bump glob from 10.3.10 to 10.5.0 (#1828)
SDK-Core update
Commit temporalio/sdk-core@bd02cce -> temporalio/sdk-core@44a6576
- RealSysInfo uses cgroup CPU usage if available (temporalio/sdk-core#1029)
- Worker Heartbeating (temporalio/sdk-core#1038)
- Add
temporalprefix to resource tuner metrics (temporalio/sdk-core#1043) - Avoid spamming gRPC message too large task failures (temporalio/sdk-core#1050)
- No longer retry worker shutdown RPC (temporalio/sdk-core#1054)
- Add explicit worker type configuration (temporalio/sdk-core#1059)
- Emit GrpcMessageTooLarge as failure_reason for workflow tasks (temporalio/sdk-core#1069)
Full Changelog: v1.13.2...v1.14.0
1.13.2
[1.13.2] - 2025-11-10
Note Worthy Features
- (experimental) Plugins Implementation (#1794)
- Plugins are a new way of providing easy configuration of workers and clients
- (experimental) Introduce
envconfigpackage (#1795)envconfigprovides a way to configure clients using TOML files
Minor Features
- Create
RawValuefrom direct payload using identity payload converter (#1806) - Add support for gRPC binary metadata values (#1791)
- Make address of test server public (#1819)
- Bump uuid to 11.1.0 (#1789, thanks to @TastyPi 🙏)
Bug Fixes
- [
otel] Mark peer dependencies as optional (#1812) - [
otel] Remove await from OTEL handleSignal interceptor (#1803)
Security
- Set explicit permissions for GitHub Actions workflows (#1815)
Notable Changes
- Remove experimental notices from poller behavior (#1821)
- Remove experimental notices from worker tuner APIs (#1797)
SDK-Core update
- Support user metadata in local activity (temporalio/sdk-core#974)
- Support for Unix sockets in HTTP connect proxy (temporalio/sdk-core#984)
- Enable slot supplier for nexus pollers (temporalio/sdk-core#994)
- [BREAKING] Use normal task queue name for sticky task queue client metrics (temporalio/sdk-core#1039)
- Set worker version on eager start requests (temporalio/sdk-core#1033)
1.13.1
1.13.0
Note Worthy Features
- [Experimental] Initial Nexus support (#1708)
- [Experimental] Fairness Keys & Weights (#1768)
- [Experimental] Expose Client on Activity Context (#1769)
Bug Fixes
- Fix worker logs not getting flushed in Core log level set to ERROR (#1777)
New Contributors
- @conor-temporal made their first contribution in #1774
Full Changelog: v1.12.3...v1.13.0
1.12.3
[1.12.3] - 2025-08-19
Bug Fixes
- Fix a recurring "Network error while sending worker heartbeat error due to PermissionDenied" warning messages in worker logs observed by Temporal Cloud users after upgrading to TS SDK 1.12.2 (#1766)
- Fix "Critical dependency: the request of a dependency is an expression" warning message emitted by workflow bundler since TS SDK 1.12.2 (#1767).
- Set default
workflowExecution.runIdto a UUID inMockActivityEnvironment(#1723, thanks @TastyPi).
Minor features
- [Experimental] Activity pause/unpause (#1729)
Full Changelog: v1.12.2...v1.12.3
1.12.2
[1.12.2] - 2025-08-13
Bug Fixes
- fix for pinned versioning behavior on server version >=1.28.0 (#1754)
Minor features
- Add
RawValuesupport for payloads to bypass custom payload converters (#1664) - The
__temporal_prefix is now reserved for internal entities. The__stack_traceand__enhanced_stack_traceare also reserved for internal queries (#1644)
Notable changes
- Experimental notices for Update with Start have now been removed, it is no longer experimental (#1745)
- User metadata allows you to attach arbitrary information to workflows and events. This information can be displayed in the Temporal UI, making it easier to identify and understand workflows and their operations. (#1657)
1.12.1
[1.12.1] - 2025-07-07
Bug Fixes
- Bridge's error conversion logic now uses the
isPromisenode's utility function instead of aninstanceof Promisecheck. The latter may give false negatives in Jest, resulting in not converting errors thrown from the Rust side. This has been causing Jest tests to fail withShutdownError: Worker has been shutdownerrors using TS SDK 1.12.0. (#1737)