{"id":"src_ua67ELxVwrOhveo2CI5Ka","slug":"temporal-typescript-sdk","name":"TypeScript SDK","type":"github","url":"https://github.com/temporalio/sdk-typescript","orgId":"org_llbei_Px9QEsv1BUOja1x","org":{"slug":"temporal","name":"Temporal"},"isPrimary":false,"metadata":"{\"evaluatedMethod\":\"github\",\"evaluatedAt\":\"2026-04-11T13:59:09.373Z\",\"changelogUrl\":\"https://github.com/temporalio/sdk-typescript/blob/HEAD/CHANGELOG.md\",\"changelogDetectedAt\":\"2026-04-11T14:01:32.430Z\"}","releaseCount":55,"releasesLast30Days":1,"avgReleasesPerWeek":0.2,"latestVersion":"v1.16.0","latestDate":"2026-04-09T23:29:44.000Z","changelogUrl":"https://github.com/temporalio/sdk-typescript/blob/HEAD/CHANGELOG.md","hasChangelogFile":true,"lastFetchedAt":"2026-04-18T14:07:40.189Z","trackingSince":"2023-08-04T21:15:19.000Z","releases":[{"id":"rel_3XOU77LcdDkxAh1WFdK20","version":"v1.16.0","title":"1.16.0","summary":"### Notable Changes\r\n\r\n- :boom: The Nexus API has several breaking changes in this release; see items marked :boom: in the sections below. Of particul...","content":"### Notable Changes\r\n\r\n- :boom: The Nexus API has several breaking changes in this release; see items marked :boom: in the sections below. Of particular note: `NexusClient` has been renamed to `NexusServiceClient` ([#1993](https://github.com/temporalio/sdk-typescript/pull/1993)), and `NexusInboundCallsInterceptor` now requires `executeStartOperation` and `executeCancelOperation` instead of the old generic `execute` method ([#1979](https://github.com/temporalio/sdk-typescript/pull/1979)).\r\n\r\n### Features\r\n\r\n- [`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](https://github.com/temporalio/sdk-typescript/pull/1999))\r\n- [`nexus`] :boom: Add Nexus Inbound Interceptors — `NexusInboundCallsInterceptor` now exposes `executeStartOperation` and `executeCancelOperation`, replacing the previous generic `execute` interceptor ([#1979](https://github.com/temporalio/sdk-typescript/pull/1979))\r\n- [`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](https://github.com/temporalio/sdk-typescript/pull/1998))\r\n- [`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](https://github.com/temporalio/sdk-typescript/pull/1973))\r\n- [`nexus`] :boom: Rename `NexusClient` to `NexusServiceClient` in preparation for upcoming Nexus Standalone Operations ([#1993](https://github.com/temporalio/sdk-typescript/pull/1993))\r\n- [`nexus`] Add `scheduleToStartTimeout` and `startToCloseTimeout` options to the workflow Nexus client API ([#1942](https://github.com/temporalio/sdk-typescript/pull/1942))\r\n- [`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](https://github.com/temporalio/sdk-typescript/pull/1949))\r\n- [`nexus`] Infer workflow result type from `WorkflowRunOperationHandler` — `startWorkflow` now returns `WorkflowHandle<WorkflowResultType<T>>`, removing the need to explicitly type the handler ([#1968](https://github.com/temporalio/sdk-typescript/pull/1968))\r\n- [`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](https://github.com/temporalio/sdk-typescript/pull/1963))\r\n- [`worker`] Propagate `targetWorkerDeploymentVersionChanged` and Continue-As-New suggested reasons for worker deployment versioning trampolining ([#1972](https://github.com/temporalio/sdk-typescript/pull/1972))\r\n\r\n### Bug Fixes\r\n\r\n- [`client`] Suppress spurious unhandled rejection from `WithStartWorkflowOperation` when `executeUpdateWithStart` fails before a response is received ([#1990](https://github.com/temporalio/sdk-typescript/pull/1990))\r\n- [`opentelemetry`] Do not mark `CompleteAsyncError` as a span error ([#1989](https://github.com/temporalio/sdk-typescript/pull/1989))\r\n- [`opentelemetry`] Avoid `TypeError` when user code throws a non-`Error` value ([#1984](https://github.com/temporalio/sdk-typescript/pull/1984))\r\n- [`worker`] Tolerate empty `rootWorkflowExecution`/`parentWorkflowExecution` objects from pre-v1.24 servers, preventing `IllegalStateError` on resumed workflows ([#1969](https://github.com/temporalio/sdk-typescript/pull/1969))\r\n- [`ai`] Use `activityOptions` in `callTool` proxy ([#1954](https://github.com/temporalio/sdk-typescript/pull/1954))\r\n\r\n### Dependencies\r\n\r\n- [`core`] Update sdk-core ([#1959](https://github.com/temporalio/sdk-typescript/pull/1959))\r\n- [`deps`] Bump vulnerable dependencies ([#1957](https://github.com/temporalio/sdk-typescript/pull/1957), [#1988](https://github.com/temporalio/sdk-typescript/pull/1988))\r\n- [`deps`] Bump rustls-webpki from 0.103.9 to 0.103.10 ([#1978](https://github.com/temporalio/sdk-typescript/pull/1978))\r\n- [`deps`] Bump quinn-proto from 0.11.13 to 0.11.14 ([#1961](https://github.com/temporalio/sdk-typescript/pull/1961))\r\n- [`deps`] Bump tar ([#1976](https://github.com/temporalio/sdk-typescript/pull/1976), [#1946](https://github.com/temporalio/sdk-typescript/pull/1946))\r\n\r\n_Breaking changes are marked with :boom:_\r\n\r\n**Full Changelog**: https://github.com/temporalio/sdk-typescript/compare/v1.15.0...v1.16.0\r\n","publishedAt":"2026-04-09T23:29:44.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.16.0","media":[]},{"id":"rel_wjwFARGN6x_uCEuPCErX9","version":"v1.15.0","title":"1.15.0","summary":"### Notable Changes\r\n\r\n- :warning: Fixed potential request storms when worker is configured with poller autoscaling, due to missing exponential backof...","content":"### Notable Changes\r\n\r\n- :warning: Fixed potential request storms when worker is configured with poller autoscaling, due to missing exponential backoff on `ResourceExhausted` and other gRPC errors. See PRs https://github.com/temporalio/sdk-core/pull/1110 and https://github.com/temporalio/sdk-core/pull/1111 for more details.\r\n- :boom: Node.js 18 is no longer supported ([#1930](https://github.com/temporalio/sdk-typescript/pull/1930))\r\n- :test_tube: Added experimental support for Bun runtime ([#1906](https://github.com/temporalio/sdk-typescript/pull/1906))\r\n\r\n### Features\r\n\r\n- [`opentelemetry`] Expose functionality as plugin ([#1884](https://github.com/temporalio/sdk-typescript/pull/1884))\r\n- [`worker`] Worker Connection Replacement ([#1902](https://github.com/temporalio/sdk-typescript/pull/1902))\r\n- [`workflow`] Nexus Cancellation Types ([#1894](https://github.com/temporalio/sdk-typescript/pull/1894))\r\n- [`worker`] Worker deployment versioning is now GA ([#1924](https://github.com/temporalio/sdk-typescript/pull/1924))\r\n- [`envconfig`] Environment configuration is now GA ([#1924](https://github.com/temporalio/sdk-typescript/pull/1924))\r\n- [`testing`] Add API to setup Nexus endpoint on ephemeral test server ([#1897](https://github.com/temporalio/sdk-typescript/pull/1897))\r\n- [`nexus`] Expose Temporal Nexus operation info to Temporal Nexus operation ([#1896](https://github.com/temporalio/sdk-typescript/pull/1896))\r\n- [`bun`] 🧪 Bun support - experimental ([#1906](https://github.com/temporalio/sdk-typescript/pull/1906))\r\n- [`runtime`] 🧪 Buffered metrics - experimental ([#1922](https://github.com/temporalio/sdk-typescript/pull/1922))\r\n\r\n### Bug Fixes\r\n\r\n- [`worker`] Add exponential backoff on `ResourceExhausted` and other gRPC errors in Poller autoscaler ([#1938](https://github.com/temporalio/sdk-typescript/pull/1938) and [#1944](https://github.com/temporalio/sdk-typescript/pull/1944))\r\n- [`native`] Correct native binding type for workerValidate ([#1939](https://github.com/temporalio/sdk-typescript/pull/1939))\r\n- [`client`] Expose `operatorService` on `ConnectionLike` interface ([#1904](https://github.com/temporalio/sdk-typescript/pull/1904))\r\n- [`opentelemetry`] Serialize TraceState before exporting to sink ([#1891](https://github.com/temporalio/sdk-typescript/pull/1891))\r\n- [`opentelemetry`] `makeWorkflowExporter` accepts SpanProcessor ([#1886](https://github.com/temporalio/sdk-typescript/pull/1886))\r\n- [`ai`] Add `await` to tool execution ([#1882](https://github.com/temporalio/sdk-typescript/pull/1882))\r\n- [`ai`] Description was missing from the derived mcp tools ([#1905](https://github.com/temporalio/sdk-typescript/pull/1905))\r\n- [`ai`] Fix a bug in AI SDK MCP Schema conversion ([#1890](https://github.com/temporalio/sdk-typescript/pull/1890))\r\n- [`common`] Make search attribute type more lenient when parsing ([#1943](https://github.com/temporalio/sdk-typescript/pull/1943))\r\n- [`workflow`] Allow logging queries validators during replay ([#1927](https://github.com/temporalio/sdk-typescript/pull/1927))\r\n- [`ai`] Add missing dependency to ai package ([#1878](https://github.com/temporalio/sdk-typescript/pull/1878))\r\n- [`worker`] Fix wf_task_replay_latency metric recording for non-replay tasks ([#1083](https://github.com/temporalio/sdk-core/pull/1083))\r\n- [`worker`] Always send shutdown_worker RPC, fix WorkerStatus state when shutting down worker ([#1082](https://github.com/temporalio/sdk-core/pull/1082))\r\n- [`worker`] Fix bug where we count first WFT as sticky cache hit ([#1091](https://github.com/temporalio/sdk-core/pull/1091))\r\n\r\n### Dependencies\r\n\r\n- :boom: Drop node 18 support ([#1930](https://github.com/temporalio/sdk-typescript/pull/1930))\r\n- [`api`] Update Temporal Protobuf APIs to v1.61.0 (#1100)\r\n- [`deps`] Bump vulnerable dependencies (hono, jws, tar, ...) ([#1900](https://github.com/temporalio/sdk-typescript/pull/1900))\r\n- [`deps`] Run cargo update ([#1937](https://github.com/temporalio/sdk-typescript/pull/1937))\r\n- [`deps`] Bump webpack from 5.94.0 to 5.104.1 ([#1929](https://github.com/temporalio/sdk-typescript/pull/1929))\r\n- Upgrade eslint ([#1933](https://github.com/temporalio/sdk-typescript/pull/1933))\r\n- [`deps`] Bump bytes from 1.10.1 to 1.11.1 in /packages/core-bridge ([#1921](https://github.com/temporalio/sdk-typescript/pull/1921))\r\n- [`deps`] Bump @modelcontextprotocol/sdk from 1.25.2 to 1.26.0 ([#1928](https://github.com/temporalio/sdk-typescript/pull/1928))\r\n- [`deps`] Bump tar from 7.5.3 to 7.5.7 ([#1916](https://github.com/temporalio/sdk-typescript/pull/1916))\r\n\r\n_Breaking changes are marked with :boom:_\r\n_Experimental features are marked with :test_tube:_\r\n\r\n**Full Changelog**: https://github.com/temporalio/sdk-typescript/compare/v1.14.1...v1.15.0","publishedAt":"2026-02-18T18:51:56.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.15.0","media":[]},{"id":"rel_sE1x0hF7eb63J4s41i8TU","version":"v1.14.1","title":"1.14.1","summary":"## Minor Features\r\n* [`ai-sdk`] Upgrade to AI SDK v6 with embedding model support (#1865, thabnks @ItsWendell)\r\n\r\n## Bug Fixes\r\n* [`workflow`] Automat...","content":"## Minor Features\r\n* [`ai-sdk`] Upgrade to AI SDK v6 with embedding model support (#1865, thabnks @ItsWendell)\r\n\r\n## Bug Fixes\r\n* [`workflow`] Automatically cleanup AsyncLocalStorage on workflow context disposal (#1871)\r\n* [`OpenTelemetry`] Avoid lazy loading workflow package in interceptors (#1872)\r\n* Fix Env Config path to match docs (#1870)\r\n* Fix typos in `heartbeat` JSDoc (#1863, thanks @daveyarwood)\r\n\r\n## Security\r\n* Bump lru from 0.16.1 to 0.16.3 (#1873)\r\n\r\n**Full Changelog**: https://github.com/temporalio/sdk-typescript/compare/v1.14.0...v1.14.1","publishedAt":"2026-01-08T21:17:57.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.14.1","media":[]},{"id":"rel_pXPjvpAqbdX_DyJFRunr8","version":"v1.14.0","title":"1.14.0","summary":"## Noteworthy Features\r\n\r\n- 🧪 [`ai`] Introduced (experimental) AI SDK Integration (#1792).\r\n- 💥 [`client`] TLS is enabled by default if an API key i...","content":"## Noteworthy Features\r\n\r\n- 🧪 [`ai`] Introduced (experimental) AI SDK Integration (#1792).\r\n- 💥 [`client`] TLS is enabled by default if an API key is provided (#1847). To disable TLS in that specific context, explicitly set `tls: false`.\r\n\r\n## Minor Features\r\n\r\n* [`opentelemetry`] Create spans for all interceptor events (#1835)\r\n* [`worker`] Enable Worker heartbeating (#1818). Worker heartbeating allows smoother server-side behaviors when a Worker is shut down or somehow become unreachable.\r\n\r\n### Bug Fixes\r\n\r\n* [`worker`] The reusable workflow executor now properly runs dispose interceptors (#1834, thanks @mnahkies 🙏).\r\n* [`core-bridge`] Include bridge macros rust package in core-bridge npm package to allow building from source (https://github.com/temporalio/sdk-typescript/pull/1852, thanks @stathis-alexander 🙏)\r\n\r\n### Security\r\n* [`@temporalio/create`]: bump glob from 10.3.10 to 10.5.0 (https://github.com/temporalio/sdk-typescript/pull/1828)\r\n\r\n### SDK-Core update\r\nCommit https://github.com/temporalio/sdk-core/commit/bd02cceae2a4e0006fe86911a6ad3b7cf7dd2ad8 -> https://github.com/temporalio/sdk-core/commit/44a6576bbaac589b28afa173ca6d60757a4d821d\r\n- RealSysInfo uses cgroup CPU usage if available (temporalio/sdk-core#1029)\r\n- Worker Heartbeating (temporalio/sdk-core#1038)\r\n- Add `temporal` prefix to resource tuner metrics (temporalio/sdk-core#1043)\r\n- Avoid spamming gRPC message too large task failures (temporalio/sdk-core#1050)\r\n- No longer retry worker shutdown RPC (temporalio/sdk-core#1054)\r\n- Add explicit worker type configuration (temporalio/sdk-core#1059)\r\n- Emit GrpcMessageTooLarge as failure_reason for workflow tasks (temporalio/sdk-core#1069)\r\n\r\n**Full Changelog**: https://github.com/temporalio/sdk-typescript/compare/v1.13.2...v1.14.0","publishedAt":"2025-12-18T17:07:47.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.14.0","media":[]},{"id":"rel_UDriLLBFPSBUqrnq4HSlJ","version":"v1.13.2","title":"1.13.2","summary":"## [1.13.2] - 2025-11-10\r\n\r\n### Note Worthy Features\r\n\r\n- (experimental) Plugins Implementation (#1794)\r\n  - Plugins are a new way of providing easy c...","content":"## [1.13.2] - 2025-11-10\r\n\r\n### Note Worthy Features\r\n\r\n- (experimental) Plugins Implementation (#1794)\r\n  - Plugins are a new way of providing easy configuration of workers and clients\r\n- (experimental) Introduce `envconfig` package (#1795)\r\n  - `envconfig` provides a way to configure clients using TOML files\r\n\r\n### Minor Features\r\n\r\n- Create `RawValue` from direct payload using identity payload converter (#1806)\r\n- Add support for gRPC binary metadata values (#1791)\r\n- Make address of test server public (#1819)\r\n- Bump uuid to 11.1.0 (#1789, thanks to @TastyPi 🙏)\r\n\r\n### Bug Fixes\r\n\r\n- [`otel`] Mark peer dependencies as optional (#1812)\r\n- [`otel`] Remove await from OTEL handleSignal interceptor (#1803)\r\n\r\n### Security\r\n\r\n- Set explicit permissions for GitHub Actions workflows (#1815)\r\n\r\n### Notable Changes\r\n\r\n- Remove experimental notices from poller behavior (#1821)\r\n- Remove experimental notices from worker tuner APIs (#1797)\r\n\r\n### SDK-Core update\r\nCommit [`871b320`](https://github.com/temporalio/sdk-core/commit/871b320c8f51d52cb69fcc31f9c4dcd47b9f3961) -> [`bd02cce`](https://github.com/temporalio/sdk-core/commit/bd02cceae2a4e0006fe86911a6ad3b7cf7dd2ad8):\r\n-  Support user metadata in local activity (https://github.com/temporalio/sdk-core/pull/974)\r\n- Support for Unix sockets in HTTP connect proxy (https://github.com/temporalio/sdk-core/pull/984)\r\n- Enable slot supplier for nexus pollers (temporalio/sdk-core#994)\r\n- **[BREAKING]** Use normal task queue name for sticky task queue client metrics (temporalio/sdk-core#1039)\r\n- Set worker version on eager start requests (temporalio/sdk-core#1033)","publishedAt":"2025-11-11T00:40:32.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.13.2","media":[]},{"id":"rel_m6Cg-S7iWFQbSQ4OdYHHV","version":"v1.13.1","title":"1.13.1","summary":"## [1.13.1] - 2025-10-08\r\n\r\n### Minor features\r\n\r\n- Eager Workflow Start (#1757)\r\n- Activity reset (#1730)\r\n\r\n\r\n### Bug Fixes\r\n\r\n- Added retry policy ...","content":"## [1.13.1] - 2025-10-08\r\n\r\n### Minor features\r\n\r\n- Eager Workflow Start (#1757)\r\n- Activity reset (#1730)\r\n\r\n\r\n### Bug Fixes\r\n\r\n- Added retry policy to activity info (#1788)\r\n- Don't set error status on otel spans for benign exceptions (#1786)\r\n\r\n\r\n### Vulnerabilities\r\n\r\n- Bump tracing-subscriber from 0.3.19 to 0.3.20 in /packages/core-bridge (#1780)\r\n\r\n","publishedAt":"2025-10-08T20:27:14.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.13.1","media":[]},{"id":"rel_0BM07Z98l1wz4yVsv3qWK","version":"v1.13.0","title":"1.13.0","summary":"## Note Worthy Features\r\n\r\n* [Experimental] Initial Nexus support (#1708)\r\n* [Experimental] Fairness Keys & Weights (#1768)\r\n* [Experimental] Expose C...","content":"## Note Worthy Features\r\n\r\n* [Experimental] Initial Nexus support (#1708)\r\n* [Experimental] Fairness Keys & Weights (#1768)\r\n* [Experimental] Expose Client on Activity Context (#1769)\r\n\r\n## Bug Fixes\r\n\r\n* Fix worker logs not getting flushed in Core log level set to ERROR (#1777)\r\n\r\n## New Contributors\r\n* @conor-temporal made their first contribution in #1774\r\n\r\n**Full Changelog**: https://github.com/temporalio/sdk-typescript/compare/v1.12.3...v1.13.0","publishedAt":"2025-08-27T21:41:28.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.13.0","media":[]},{"id":"rel_VdeLXmHVBc8_8UQWnDpAa","version":"v1.12.3","title":"1.12.3","summary":"## [1.12.3] - 2025-08-19\r\n\r\n### Bug Fixes\r\n\r\n- Fix a recurring \"Network error while sending worker heartbeat error due to PermissionDenied\" warning me...","content":"## [1.12.3] - 2025-08-19\r\n\r\n### Bug Fixes\r\n\r\n- 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)\r\n- Fix \"Critical dependency: the request of a dependency is an expression\" warning message emitted by workflow bundler since TS SDK 1.12.2 (#1767).\r\n- Set default `workflowExecution.runId` to a UUID in `MockActivityEnvironment` (#1723, thanks @TastyPi).\r\n\r\n### Minor features\r\n\r\n- [Experimental] Activity pause/unpause (#1729)\r\n\r\n**Full Changelog**: https://github.com/temporalio/sdk-typescript/compare/v1.12.2...v1.12.3","publishedAt":"2025-08-19T23:44:55.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.12.3","media":[]},{"id":"rel_xqfTNuY1sOr-ZTBILvOYT","version":"v1.12.2","title":"1.12.2","summary":"## [1.12.2] - 2025-08-13\r\n\r\n### Bug Fixes\r\n\r\n- fix for pinned versioning behavior on server version >=1.28.0 (https://github.com/temporalio/sdk-typesc...","content":"## [1.12.2] - 2025-08-13\r\n\r\n### Bug Fixes\r\n\r\n- fix for pinned versioning behavior on server version >=1.28.0 (https://github.com/temporalio/sdk-typescript/pull/1754)\r\n\r\n### Minor features\r\n\r\n- Add `RawValue` support for payloads to bypass custom payload converters (https://github.com/temporalio/sdk-typescript/pull/1664)\r\n- The `__temporal_` prefix is now reserved for internal entities. The `__stack_trace` and `__enhanced_stack_trace` are also reserved for internal queries (https://github.com/temporalio/sdk-typescript/pull/1644)\r\n\r\n### Notable changes\r\n\r\n- Experimental notices for Update with Start have now been removed, it is no longer experimental (https://github.com/temporalio/sdk-typescript/pull/1745)\r\n- 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. (https://github.com/temporalio/sdk-typescript/pull/1657)\r\n","publishedAt":"2025-08-13T21:34:43.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.12.2","media":[]},{"id":"rel_I7UNqnBxd_Uu9dvbsdzZr","version":"v1.12.1","title":"1.12.1","summary":"## [1.12.1] - 2025-07-07\r\n\r\n### Bug Fixes\r\n\r\n- Bridge's error conversion logic now uses the `isPromise` node's utility function instead of an `instanc...","content":"## [1.12.1] - 2025-07-07\r\n\r\n### Bug Fixes\r\n\r\n- Bridge's error conversion logic now uses the `isPromise` node's utility function instead of an `instanceof Promise` check. The latter may give [false negatives in Jest](https://github.com/jestjs/jest/issues/2549), resulting in not converting errors thrown from the Rust side. This has been causing Jest tests to fail with `ShutdownError: Worker has been shutdown` errors using TS SDK 1.12.0. (#1737)","publishedAt":"2025-07-07T16:48:04.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.12.1","media":[]},{"id":"rel_TpAaytZtdSuVFdxfWb1OB","version":"v1.12.0","title":"1.12.0","summary":"## [1.12.0] - 2025-07-01\r\n\r\n### Note Worthy Features\r\n\r\n- Add experimental support for Worker Deployment Versioning (#1679)\r\n\r\n- Add support for Typed...","content":"## [1.12.0] - 2025-07-01\r\n\r\n### Note Worthy Features\r\n\r\n- Add experimental support for Worker Deployment Versioning (#1679)\r\n\r\n- Add support for Typed Search Attributes. (#1612, #1625)\r\n\r\n  `TypedSearchAttributes` are intended to replace the existing (not type-enforced) `SearchAttributes`.\r\n\r\n  ```\r\n  // Define a typed search attribute; that would generally be done at the top of one's\r\n  // `workflow.ts` file, or in some shared location, similar to definition of Signals,\r\n  // Query and Update types\r\n  const orderStatusSearchAttribute = defineSearchAttributeKey('orderStatus', 'KEYWORD');\r\n  ```\r\n\r\n- Add ability to register new Search Attributes when starting a local development server (#1624)\r\n\r\n  ```\r\n  // Starting a new local development server, immediately registering the specified search attributes.\r\n  const env = await createLocalTestEnvironment({\r\n    server: {\r\n      searchAttributes: [orderStatusSearchAttribute],\r\n    },\r\n  });\r\n  ```\r\n\r\n\r\n- Add support for the Update-with-Start API on the Workflow Client. (#1585).\r\n\r\n  **Example usage**\r\n\r\n  ```\r\n  const startWorkflowOperation = WithStartWorkflowOperation.create(transactionWorkflow, {\r\n    workflowId,\r\n    args: [transactionID],\r\n    taskQueue: 'early-return',\r\n    workflowIdConflictPolicy: 'FAIL',\r\n  });\r\n\r\n  // This is the result of the _update_ call\r\n  const earlyConfirmation = await client.workflow.executeUpdateWithStart(getTransactionConfirmation, {\r\n    startWorkflowOperation,\r\n  });\r\n  \r\n  // This is an handle to the workflow execution that was started. It can be used\r\n  // to wait for the workflow execution to complete and capture its return value\r\n  const workflowHandle = await startWorkflowOperation.workflowHandle();\r\n  const finalReport = await workflowHandle.result();\r\n  ```\r\n\r\n- Add support for default activity handler, update handler and query handler. A default handler will be called for any incoming request if no handler has been explicitely set for the given type name. (#1639, #1640, #1642)\r\n\r\n  **Example usage: Default Update Handler**\r\n  \r\n  ```\r\n  export async function myWorkflow(useDefinedQuery: boolean): Promise<void> {\r\n    setDefaultUpdateHandler((updateName, ...args: any[]) => {\r\n      // ...\r\n    });\r\n  ```\r\n  \r\n  **Example usage: Default Query Handler**\r\n  \r\n  ```\r\n  export async function myWorkflow(useDefinedQuery: boolean): Promise<void> {\r\n    setDefaultQueryHandler((queryName: string, ...args: any[]) => {\r\n      // ...\r\n    });\r\n  ```\r\n\r\n\r\n\r\n- Add experimental support for emitting custom metrics from workflows and activities. (#1705)\r\n\r\n**Example usage: From a Workflow**\r\n\r\n```\r\nimport * as wf from `@temporalio/workflow`;\r\n\r\nasync function myWorkflow() {\r\n  const myHistogramMetric = wf.metricMeter.createHistogram(\r\n    'my-custom-histogram',\r\n    'int', // or 'float'\r\n    'ms', // Units (optional)\r\n    'description' // (optional)\r\n  );\r\n\r\n  myHistogramMetric.record(50);\r\n  myHistogramMetric.record(50, { tag1: 'tag-value' });\r\n}\r\n```\r\n\r\n**Example usage: From an Activity**\r\n\r\n```\r\nimport * as act from `@temporalio/activity`\r\n\r\nconst myCounterMetric = metricMeter.createCounter('activity-counter');\r\n\r\nasync function myActivity() {\r\n  const myCounterMetric.add(1);\r\n}\r\n```\r\n\r\n- Add experimental support for more powerful configuration of Workflow Task Pollers and Activity Task Pollers. (#1704)\r\n\r\n- Add experimental support for task priority. For now, only the numeric `priority` value is supported, which is a number between 1 (top priority) and 5 (lowest priority). Priority can be set when starting workflows or scheduling activities. Note that this feature requires server side support which has not yet been released. (#1669)\r\n\r\n\r\n### Minor features\r\n\r\n- Add a new `category` property on `ApplicationFailure`. (#1719)\r\n\r\n  This new option allows controlling some of the observability and logging behaviors of the Worker related to a failure thrown from an Activity.\r\n\r\n- Add high level API support for the `CountWorkflowExecution` operation to the Workflow Client (#1573)\r\n  That operation efficiently determine the number of Workflows matching some [list filter](https://docs.temporal.io/list-filter); the list filter may also include a `GROUP BY` clause.\r\n  \r\n  **Example usage**\r\n  \r\n  ```ts\r\n  const workflowCount = await client.workflow.count(`TaskQueue = '${taskQueue}' GROUP BY ExecutionStatus`);\r\n  ```\r\n\r\n  after which `workflowCount` might look something like this:\r\n\r\n  ```ts\r\n  {\r\n    count: 5,\r\n    groups: [\r\n      { count: 2, groupValues: [['Running']] },\r\n      { count: 3, groupValues: [['Completed']] },\r\n    ],\r\n  };\r\n  ```\r\n\r\n- [`workflow`] Expose `AbortController` to the worker sandbox (#1576, thanks @lukeramsden).\r\n\r\n- The following APIs are no longer `@experimental`: (#1590, #1622)\r\n\r\n    - Workflow Update\r\n    - Client gRPC Retry interceptor\r\n    - HTTP Proxy support\r\n    - Forwarding and filtering of Core's logs\r\n    - Configuration of Core's metrics\r\n    - `WorkerOptions.nonStickyToStickyPollRatio`\r\n\r\n- [`interceptors-opentelemetry`] Propagate the OpenTelemetry tracing context from a workflow to local activities (#1577)\r\n- [`interceptors-opentelemetry`] Add error messages to OpenTelemetry tracing span status, when applicable. (#1632, thanks @xavierroma)\r\n\r\n\r\n- [`workflow`] Include information about the current Update (if applicable) in Workflow logging output (#1595)\r\n\r\n- [`worker`] Add multiple Worker and Telemetry options (#1623)\r\n\r\n  - On `TelemetryOptions`:\r\n    - Add the following properties:\r\n      - `metrics.metricPrefix`\r\n      - `metrics.attachServiceName`\r\n      - `metrics.globalTags`\r\n      - `metrics.histogramBucketOverrides`\r\n      - `metrics.otel.http`\r\n    - Move `metrics.temporality` to `metrics.otel.temporality`, as Core doesn't support that option on Prometheus. This is coherent with other Core-based SDKs.\r\n    - Deprecate property `TelemetryOption.noTemporalPrefixForMetrics`, promoting the use of the more versatile `metrics.metricPrefix` property instead\r\n  \r\n  - On `DevServerConfig`:\r\n    - Add `server.uiPort` property — fixes #1611\r\n    - Fix the `server.dbFilename` property, which had never worked due to a naming inconsistency between the lang's interface and bridge's code\r\n  \r\n  - On `NativeConnectionOptions`:\r\n    - Add boolean property `disableErrorCodeMetricTags`. \r\n  \r\n  All of those change preserve compatibility with prior behaviors and deprecated settings.\r\n\r\n- Add partial support for powering a Workflow Client from a `NativeConnection` rather than a `Connection`. (#1699)\r\n\r\n- Expose root execution information from `WorkflowInfo` and `WorkflowDescription`. (#1662)\r\n\r\n\r\n### Bug Fixes\r\n\r\n- [`workflow`] Fix multiple context leaks and bugs in `reuseV8Context` executor. (#1605)\r\n  - …by reassigning a new object to an existing shared global variable;\r\n  - …by modifying one of Node's built in global objects;\r\n  - …by deleting a previously set global variable;\r\n  - …by defining global symbol properties.\r\n  \r\n  :bomb: These changes should \r\n\r\n- [`client`] Homogenize and clarify that default address is `localhost` everywhere in public exposed code (that's the correct thing to do and should be non-breaking everywhere except on very badly configured dual-stack machines, in which case they would have had errors anyway due to inconsistencies between `Client` and `NativeClient`).\r\n\r\n- [`workflow`] Clearly differentiate Workflow Task Failures resulting from unhandle `Promise` rejections (#1606).\r\n\r\n  This was a recurring source of extremely difficult to diagnose Workflow Task failures. Going forward, a Workflow Task Failure resulting form unhandled `Promise` rejection will clearly indicate `\"Unhandled promise rejection\"`.\r\n\r\n- [`workflow`] Do not appear to support conflict policy when start a child workflow (#1649)\r\n\r\n- :boom: Use plain Error in FailureConverter, WorkflowFailedError, and WorkflowUpdateFailedError (#1685)\r\n\r\n- [`client`] Properly set temporal-namespace header on gRPC requests (#1712)\r\n\r\n- [`bridge`] The Core Bridge layer is now much more robust, better handle various unexpected situations, and provide more detailed and more consistent error messages. (#1698)\r\n\r\n  The Core Bridge layer went through a major refactor to prepare it for upcoming new features. This refactor also allowed resolution of several lifecycle bugs that could happen in various edge cases, including:\r\n\r\n  - Node discards `Promise`s created by calling into the Core Bridge with callbacks (#1302)\r\n  - Process hangs on normal exit if some native resource (`NativeConnection`, `Worker`, `WorkflowTestEnvironment`, etc) were not properly closed (#1413).\r\n  - Failure to start ephemeral server prevents shutdown of the process (#1443).\r\n  - Hundreds of OTLP errors showing up in logs when shutting down the runtime (#1495).\r\n  \r\n  :boom: This refactor establishes a much stronger distinction between public and internal APIs. Though we never encouraged direct import from the `@temporalio/core-bridge` package, some types were previously exported from the `core-bridge` package and reexported from a public facing package. Due to that confusion, it is possible that some users may have been previously importing types from that package. This is no longer possible and will result in compilation errors. Please import those types from the `@temporalio/worker` or `@temporalio/testing` packages.\r\n\r\n- [`bridge`] Log forwarding from Core SDK to the TS logger is now less demanding on CPU. As part of the COre Bridge Layer refactor, log forwarding was changed to a push model, rather than a pull model; which was previously reported to cause a constant, non negligeable CPU usage, even when the Worker was left idle for long periods of time. (#1698)\r\n\r\n\r\n### Miscellaneous Tasks\r\n\r\n- :boom: Dropped support for Node 16 (#1586). \r\n\r\n- Upgrade multiple vulnerable dependencies (#1603, #1614, #1627, #1637, #1667, #1709)\r\n\r\n\r\n\r\n### Thanks\r\n\r\nHuge thanks to the following users for their contributions.\r\n\r\n- @GSmithApps (#1591)\r\n- @chadxz (#1604, #1609)\r\n- @samueldurantes (#1619)\r\n- @xavierroma (#1632)\r\n- @lukeramsden (#1576)\r\n\r\n## Advanced notices\r\n\r\n- 1.12.x will likely be the last minor release to support Node 18.\r\n","publishedAt":"2025-07-01T16:33:34.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.12.0","media":[]},{"id":"rel_yYMq6wRdO3Jv20y7kcI__","version":"v1.12.0-rc.0","title":"1.12.0-rc.0","summary":"## [1.12.0.rc0] - 2025-05-30\r\n\r\n### Note Worthy Features\r\n\r\n- Add experimental support for Worker Deployment Versioning (#1679)\r\n\r\n- Add support for T...","content":"## [1.12.0.rc0] - 2025-05-30\r\n\r\n### Note Worthy Features\r\n\r\n- Add experimental support for Worker Deployment Versioning (#1679)\r\n\r\n- Add support for Typed Search Attributes. (#1612, #1625)\r\n\r\n  `TypedSearchAttributes` are intended to replace the existing (not type-enforced) `SearchAttributes`.\r\n\r\n  ```\r\n  // Define a typed search attribute; that would generally be done at the top of one's\r\n  // `workflow.ts` file, or in some shared location, similar to definition of Signals,\r\n  // Query and Update types\r\n  const orderStatusSearchAttribute = defineSearchAttributeKey('orderStatus', 'KEYWORD');\r\n  ```\r\n\r\n- Add ability to register new Search Attributes when starting a local development server (#1624)\r\n\r\n  ```\r\n  // Starting a new local development server, immediately registering the specified search attributes.\r\n  const env = await createLocalTestEnvironment({\r\n    server: {\r\n      searchAttributes: [orderStatusSearchAttribute],\r\n    },\r\n  });\r\n  ```\r\n\r\n\r\n- Add support for the Update-with-Start API on the Workflow Client. (#1585).\r\n\r\n  **Example usage**\r\n\r\n  ```\r\n  const startWorkflowOperation = WithStartWorkflowOperation.create(transactionWorkflow, {\r\n    workflowId,\r\n    args: [transactionID],\r\n    taskQueue: 'early-return',\r\n    workflowIdConflictPolicy: 'FAIL',\r\n  });\r\n\r\n  // This is the result of the _update_ call\r\n  const earlyConfirmation = await client.workflow.executeUpdateWithStart(getTransactionConfirmation, {\r\n    startWorkflowOperation,\r\n  });\r\n  \r\n  // This is an handle to the workflow execution that was started. It can be used\r\n  // to wait for the workflow execution to complete and capture its return value\r\n  const workflowHandle = await startWorkflowOperation.workflowHandle();\r\n  const finalReport = await workflowHandle.result();\r\n  ```\r\n\r\n- Add support for default activity handler, update handler and query handler. A default handler will be called for any incoming request if no handler has been explicitely set for the given type name. (#1639, #1640, #1642)\r\n\r\n  **Example usage: Default Update Handler**\r\n  \r\n  ```\r\n  export async function myWorkflow(useDefinedQuery: boolean): Promise<void> {\r\n    setDefaultUpdateHandler((updateName, ...args: any[]) => {\r\n      // ...\r\n    });\r\n  ```\r\n  \r\n  **Example usage: Default Query Handler**\r\n  \r\n  ```\r\n  export async function myWorkflow(useDefinedQuery: boolean): Promise<void> {\r\n    setDefaultQueryHandler((queryName: string, ...args: any[]) => {\r\n      // ...\r\n    });\r\n  ```\r\n\r\n\r\n\r\n- Add experimental support for emitting custom metrics from workflows and activities. (#1705)\r\n\r\n**Example usage: From a Workflow**\r\n\r\n```\r\nimport * as wf from `@temporalio/workflow`;\r\n\r\nasync function myWorkflow() {\r\n  const myHistogramMetric = wf.metricMeter.createHistogram(\r\n    'my-custom-histogram',\r\n    'int', // or 'float'\r\n    'ms', // Units (optional)\r\n    'description' // (optional)\r\n  );\r\n\r\n  myHistogramMetric.record(50);\r\n  myHistogramMetric.record(50, { tag1: 'tag-value' });\r\n}\r\n```\r\n\r\n**Example usage: From an Activity**\r\n\r\n```\r\nimport * as act from `@temporalio/activity`\r\n\r\nconst myCounterMetric = metricMeter.createCounter('activity-counter');\r\n\r\nasync function myActivity() {\r\n  const myCounterMetric.add(1);\r\n}\r\n```\r\n\r\n- Add experimental support for more powerful configuration of Workflow Task Pollers and Activity Task Pollers. (#1704)\r\n\r\n- Add experimental support for task priority. For now, only the numeric `priority` value is supported, which is a number between 1 (top priority) and 5 (lowest priority). Priority can be set when starting workflows or scheduling activities. Note that this feature requires server side support which has not yet been released. (#1669)\r\n\r\n\r\n### Minor features\r\n\r\n- Add a new `category` property on `ApplicationFailure`. (#1719)\r\n\r\n  This new option allows controlling some of the observability and logging behaviors of the Worker related to a failure thrown from an Activity.\r\n\r\n- Add high level API support for the `CountWorkflowExecution` operation to the Workflow Client (#1573)\r\n  That operation efficiently determine the number of Workflows matching some [list filter](https://docs.temporal.io/list-filter); the list filter may also include a `GROUP BY` clause.\r\n  \r\n  **Example usage**\r\n  \r\n  ```ts\r\n  const workflowCount = await client.workflow.count(`TaskQueue = '${taskQueue}' GROUP BY ExecutionStatus`);\r\n  ```\r\n\r\n  after which `workflowCount` might look something like this:\r\n\r\n  ```ts\r\n  {\r\n    count: 5,\r\n    groups: [\r\n      { count: 2, groupValues: [['Running']] },\r\n      { count: 3, groupValues: [['Completed']] },\r\n    ],\r\n  };\r\n  ```\r\n\r\n- [`workflow`] Expose `AbortController` to the worker sandbox (#1576, thanks @lukeramsden).\r\n\r\n- The following APIs are no longer `@experimental`: (#1590, #1622)\r\n\r\n    - Workflow Update\r\n    - Client gRPC Retry interceptor\r\n    - HTTP Proxy support\r\n    - Forwarding and filtering of Core's logs\r\n    - Configuration of Core's metrics\r\n    - `WorkerOptions.nonStickyToStickyPollRatio`\r\n\r\n- [`interceptors-opentelemetry`] Propagate the OpenTelemetry tracing context from a workflow to local activities (#1577)\r\n- [`interceptors-opentelemetry`] Add error messages to OpenTelemetry tracing span status, when applicable. (#1632, thanks @xavierroma)\r\n\r\n\r\n- [`workflow`] Include information about the current Update (if applicable) in Workflow logging output (#1595)\r\n\r\n- [`worker`] Add multiple Worker and Telemetry options (#1623)\r\n\r\n  - On `TelemetryOptions`:\r\n    - Add the following properties:\r\n      - `metrics.metricPrefix`\r\n      - `metrics.attachServiceName`\r\n      - `metrics.globalTags`\r\n      - `metrics.histogramBucketOverrides`\r\n      - `metrics.otel.http`\r\n    - Move `metrics.temporality` to `metrics.otel.temporality`, as Core doesn't support that option on Prometheus. This is coherent with other Core-based SDKs.\r\n    - Deprecate property `TelemetryOption.noTemporalPrefixForMetrics`, promoting the use of the more versatile `metrics.metricPrefix` property instead\r\n  \r\n  - On `DevServerConfig`:\r\n    - Add `server.uiPort` property — fixes #1611\r\n    - Fix the `server.dbFilename` property, which had never worked due to a naming inconsistency between the lang's interface and bridge's code\r\n  \r\n  - On `NativeConnectionOptions`:\r\n    - Add boolean property `disableErrorCodeMetricTags`. \r\n  \r\n  All of those change preserve compatibility with prior behaviors and deprecated settings.\r\n\r\n- Add partial support for powering a Workflow Client from a `NativeConnection` rather than a `Connection`. (#1699)\r\n\r\n- Expose root execution information from `WorkflowInfo` and `WorkflowDescription`. (#1662)\r\n\r\n\r\n### Bug Fixes\r\n\r\n- [`workflow`] Fix multiple context leaks and bugs in `reuseV8Context` executor. (#1605)\r\n  - …by reassigning a new object to an existing shared global variable;\r\n  - …by modifying one of Node's built in global objects;\r\n  - …by deleting a previously set global variable;\r\n  - …by defining global symbol properties.\r\n  \r\n  :bomb: These changes should \r\n\r\n- [`client`] Homogenize and clarify that default address is `localhost` everywhere in public exposed code (that's the correct thing to do and should be non-breaking everywhere except on very badly configured dual-stack machines, in which case they would have had errors anyway due to inconsistencies between `Client` and `NativeClient`).\r\n\r\n- [`workflow`] Clearly differentiate Workflow Task Failures resulting from unhandle `Promise` rejections (#1606).\r\n\r\n  This was a recurring source of extremely difficult to diagnose Workflow Task failures. Going forward, a Workflow Task Failure resulting form unhandled `Promise` rejection will clearly indicate `\"Unhandled promise rejection\"`.\r\n\r\n- [`workflow`] Do not appear to support conflict policy when start a child workflow (#1649)\r\n\r\n- :boom: Use plain Error in FailureConverter, WorkflowFailedError, and WorkflowUpdateFailedError (#1685)\r\n\r\n- [`client`] Properly set temporal-namespace header on gRPC requests (#1712)\r\n\r\n- [`bridge`] The Core Bridge layer is now much more robust, better handle various unexpected situations, and provide more detailed and more consistent error messages. (#1698)\r\n\r\n  The Core Bridge layer went through a major refactor to prepare it for upcoming new features. This refactor also allowed resolution of several lifecycle bugs that could happen in various edge cases, including:\r\n\r\n  - Node discards `Promise`s created by calling into the Core Bridge with callbacks (#1302)\r\n  - Process hangs on normal exit if some native resource (`NativeConnection`, `Worker`, `WorkflowTestEnvironment`, etc) were not properly closed (#1413).\r\n  - Failure to start ephemeral server prevents shutdown of the process (#1443).\r\n  - Hundreds of OTLP errors showing up in logs when shutting down the runtime (#1495).\r\n  \r\n  :boom: This refactor establishes a much stronger distinction between public and internal APIs. Though we never encouraged direct import from the `@temporalio/core-bridge` package, some types were previously exported from the `core-bridge` package and reexported from a public facing package. Due to that confusion, it is possible that some users may have been previously importing types from that package. This is no longer possible and will result in compilation errors. Please import those types from the `@temporalio/worker` or `@temporalio/testing` packages.\r\n\r\n- [`bridge`] Log forwarding from Core SDK to the TS logger is now less demanding on CPU. As part of the COre Bridge Layer refactor, log forwarding was changed to a push model, rather than a pull model; which was previously reported to cause a constant, non negligeable CPU usage, even when the Worker was left idle for long periods of time. (#1698)\r\n\r\n\r\n### Miscellaneous Tasks\r\n\r\n- :boom: Dropped support for Node 16 (#1586). \r\n\r\n- Upgrade multiple vulnerable dependencies (#1603, #1614, #1627, #1637, #1667, #1709)\r\n\r\n\r\n\r\n### Thanks\r\n\r\nHuge thanks to the following users for their contributions.\r\n\r\n- @GSmithApps (#1591)\r\n- @chadxz (#1604, #1609)\r\n- @samueldurantes (#1619)\r\n- @xavierroma (#1632)\r\n- @lukeramsden (#1576)\r\n\r\n## Advanced notices\r\n\r\n- 1.12.x will likely be the last minor release to support Node 18.\r\n","publishedAt":"2025-05-30T23:36:15.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.12.0-rc.0","media":[]},{"id":"rel_g9fmE4odyOtb0VXW4VRPE","version":"v1.11.8","title":"1.11.8","summary":"## [1.11.8] - 2025-05-13\r\n\r\n### Bug Fixes\r\n\r\n- [`client`] Properly set temporal-namespace header on gRPC requests (#1714)\r\n\r\n### Miscellaneous Tasks\r\n...","content":"## [1.11.8] - 2025-05-13\r\n\r\n### Bug Fixes\r\n\r\n- [`client`] Properly set temporal-namespace header on gRPC requests (#1714)\r\n\r\n### Miscellaneous Tasks\r\n\r\n- Update multiple vulnerable dependencies (#1694)\r\n- Update Core SDK (#1707)\r\n","publishedAt":"2025-05-13T05:22:29.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.11.8","media":[]},{"id":"rel_rw7CNCeY-fSqs60VdfIL3","version":"v1.11.7","title":"1.11.7","summary":"## [1.11.7] - 2025-01-30\r\n\r\n### Bug Fixes\r\n\r\n- [`worker`] Avoid crash on Bun due to stub `promiseHooks`\r\n\r\n### Security\r\n\r\n- Update multiple NPM and R...","content":"## [1.11.7] - 2025-01-30\r\n\r\n### Bug Fixes\r\n\r\n- [`worker`] Avoid crash on Bun due to stub `promiseHooks`\r\n\r\n### Security\r\n\r\n- Update multiple NPM and Rust dependencies\r\n\r\n","publishedAt":"2025-01-30T18:21:46.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.11.7","media":[]},{"id":"rel_XK6il_sUqF8m57Bn5AijW","version":"v1.11.6","title":"1.11.6","summary":"## [1.11.6] - 2025-01-08\r\n\r\n### Features\r\n\r\n- Introduce Update-with-Start (#1585)\r\n\r\n- Aside from Update-with-Start, all Workflow Update APIs are no l...","content":"## [1.11.6] - 2025-01-08\r\n\r\n### Features\r\n\r\n- Introduce Update-with-Start (#1585)\r\n\r\n- Aside from Update-with-Start, all Workflow Update APIs are no longer experimental (#1590)\r\n\r\n- [`client`] Add `client.workflow.count` high level API (#1573, thanks to @THardy98)\r\n\r\n- [`workflow`] Expose `AbortController` to the worker sandbox (#1576, thanks to @lukeramsden)\r\n\r\n- [`workflow`] Propagate OpenTelemetry context when scheduling local activities (#1577, thanks to @THardy98)\r\n\r\n### Misc\r\n\r\n- Thanks to @GSmithApps for doc improvements (#1591)\r\n","publishedAt":"2025-01-08T16:50:07.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.11.6","media":[]},{"id":"rel_a4BWhVQvIEbqp8r1LRkkr","version":"v1.11.5","title":"1.11.5","summary":"### Noteworthy Changes\r\n\r\n- **Normalize construction of user facing enums** (#1534)\r\n\r\n  All user-facing enums have been revisited to be more in line ...","content":"### Noteworthy Changes\r\n\r\n- **Normalize construction of user facing enums** (#1534)\r\n\r\n  All user-facing enums have been revisited to be more in line with usual TypeScript conventions, rather than sticking to Temporal's Protobuf enum definitions.\r\n  \r\n  In short, that means:\r\n  \r\n    - No more redundant prefixes on enum values;\r\n\t- No more `UNSPECIFIED` values — TypeScript's `undefined` already means that;\r\n\t- Enum types are now string unions, and users may choose to provide the string value directly.\r\n\t  \r\n  For example:\r\n  \r\n  ```diff\r\n      await startChild(sleep, {\r\n  -     parentClosePolicy: ParentClosePolicy.PARENT_CLOSE_POLICY_ABANDON,\r\n\t  \r\n  +     parentClosePolicy: ParentClosePolicy.ABANDON,\r\n          /* or even */\r\n  +     parentClosePolicy: 'ABANDON',\r\n      });\r\n  ```\r\n  \r\n  Built-time compatibility is preserved for enum values that existed before. For example, code using `ParentClosePolicy.PARENT_CLOSE_POLICY_ABANDON` will still compile, but a deprecation will be reported.\r\n\t\r\n  :boom: Compile-time backward compatibility is only preserved for enums that were imported from user facing packages, such as `@temporalio/common`, `@temporalio/client` and `@temporalio/workflow`. Enum definitions imported directly from the `@temporalio/proto` package may no longer compile.\r\n\r\n### Features\r\n\r\n- Add experimental support for user-implementable Slot Supplier. (#1553, temporalio/sdk-core#838, temporalio/sdk-core#842)\r\n\r\n- Add support for Workflow ID conflict policy. (#1490)\r\n\r\n- Expose classes `TextEncoder` and `TextDecoder` inside of the Workflow sandbox. (#1562, kudo to @lukeramsden)\r\n\r\n- The OpenTelemetry Interceptor now adds correlation metadata on emitted logs from Workflow and Activity context loggers. (#1565)\r\n\r\n- The OpenTelemetry Interceptor now passes the tracing metadata on signals. (#1449, kudo to @iravid)\r\n\r\n- [`client`] Add utility functions `isGrpcDeadlineError` and `isGrpcCancelledError`. (#1548)\r\n\r\n\r\n\r\n### Bug Fixes\r\n\r\n- [`worker`] Fix memory leak on non-existant activity (#1563)\r\n\r\n- [`activity`] Abort reason is now an instance of `CancellationFailure` (#1561, kudo to @ikonst)\r\n\r\n- [`worker`] Ensure Resource Tuner always hand out a minimum of one slot for sticky and not sticky Workflow Task pollers (temporalio/sdk-core#835)\r\n\r\n\r\n### Docs\r\n\r\n- Clarify `ChildWorkflowOptions.taskQueue` default value (#1551, kudo to @ikonst)\r\n\r\n\r\n### Miscellaneous Tasks\r\n\r\n- Upgrade to TypeScript 5.6 (#1560)\r\n- Upgrade to Neon 1.0 (#1554)\r\n","publishedAt":"2024-11-20T23:58:18.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.11.5","media":[]},{"id":"rel_8_Lskfk70dV47TSeAIkAm","version":"v1.11.4","title":"1.11.4","summary":"_This release was retracted due to inconsistencies in some package.json. Please use [v1.11.5](https://github.com/temporalio/sdk-typescript/releases/ta...","content":"_This release was retracted due to inconsistencies in some package.json. Please use [v1.11.5](https://github.com/temporalio/sdk-typescript/releases/tag/v1.11.5) instead._","publishedAt":"2024-11-20T18:01:28.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.11.4","media":[]},{"id":"rel_cj4gbF226nAOyjpNCgIx1","version":"v1.11.3","title":"1.11.3","summary":"### Bug Fixes\r\n\r\n- [`worker`] Gracefully shut down Worker on unexpected errors (#1539)\r\n- [`worker`] Avoid a spurious error if Worker receives SIGINT ...","content":"### Bug Fixes\r\n\r\n- [`worker`] Gracefully shut down Worker on unexpected errors (#1539)\r\n- [`worker`] Avoid a spurious error if Worker receives SIGINT while already shutting down (#1547)\r\n\r\n### Features\r\n\r\n- [`Schedule`] Support query for listing schedules (#1535, Kudos to @nikhilbhatia08 🙏)\r\n- [`client`] :test: Add experimental support for Cloud Operations API (#1538)\r\n","publishedAt":"2024-10-17T22:07:50.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.11.3","media":[]},{"id":"rel_ZlmiPcP3F3Uq_CNZUiYq2","version":"v1.11.2","title":"1.11.2","summary":"## Important ⚠️ ⚠️ ⚠️ \r\n\r\n- This release fixes a bug in 1.11.0 and 1.11.1 that may result in Workflows failing to replay with the very same code.\r\n  W...","content":"## Important ⚠️ ⚠️ ⚠️ \r\n\r\n- This release fixes a bug in 1.11.0 and 1.11.1 that may result in Workflows failing to replay with the very same code.\r\n  We urge users who are already using v1.11.0 or v1.11.1 to promptly upgrade to this release.\r\n\r\n\r\n### Bug Fixes\r\n\r\n- [`workflow`] Workflow Activation Encoder was discarding SDK flags (#1530)\r\n- [`core`] Respect gRPC timeouts on get wf execution history (temporalio/sdk-core#812)\r\n- [`core`] Attempt to address unusal rpc cancellation error (temporalio/sdk-core#811)\r\n- [`core`] Fix legacy query failure replying (temporalio/sdk-core#809)\r\n- [`core`] Fix possible NDEs caused by LAs & immediate cancels resolving in different order upon replay (temporalio/sdk-core#808)\r\n- [`workflow`] Fix potential incoherencies in Workflow Activation Jobs ordering (#1513, temporalio/sdk-core#789)\r\n- [`core`] Include Search Attribute updates made in-workflow when continuing as new (temporalio/sdk-core#797)\r\n- [`core`] Add basic validation on Activity Tasks (temporalio/sdk-core#795)\r\n- [`core`] Do not send queries after we would fail WFT (temporalio/sdk-core#792)\r\n\r\n\r\n### Dependencies\r\n\r\n- Upgrade multiple vulnerable deps (#1518, #1521)\r\n\r\n\r\n## Thanks\r\n\r\n- Thanks to [Ilya Priven](@ikonst) for multiple docs improvements (#1507, #1525, #1527, #1524).\r\n\r\n","publishedAt":"2024-09-25T17:38:13.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.11.2","media":[]},{"id":"rel_04Ey8LXVERxdtX_A-3A-x","version":"v1.11.1","title":"1.11.1","summary":"### Bug Fixes\r\n\r\n- [`client`] Reexport WorkflowExecutionAlreadyStartedError from `@temporalio/client` (#1498)\r\n","content":"### Bug Fixes\r\n\r\n- [`client`] Reexport WorkflowExecutionAlreadyStartedError from `@temporalio/client` (#1498)\r\n","publishedAt":"2024-08-16T19:58:25.000Z","url":"https://github.com/temporalio/sdk-typescript/releases/tag/v1.11.1","media":[]}],"pagination":{"page":1,"pageSize":20,"totalPages":3,"totalItems":55},"summaries":{"rolling":{"windowDays":90,"summary":"The Temporal TypeScript SDK shifted focus toward Nexus maturation and worker efficiency. Version 1.16.0 introduced module pre-loading to reduce per-workflow memory overhead by sharing bundled code across executions, while restructuring the Nexus inbound interceptor API to separate start and cancel operation handling (breaking `NexusClient` into `NexusServiceClient` and replacing the generic `execute` method). The prior release bumped the Node.js minimum to 19, added experimental Bun support, and graduated worker deployment versioning to GA after establishing connection replacement infrastructure.","releaseCount":2,"generatedAt":"2026-04-11T14:01:34.744Z"},"monthly":[]}}