Version 3 of the Durable Functions SDK is now generally available!🎉 This is the first version of the Durable Functions SDK with official support for v4 of the Node.js programming model. This changelog is meant as a detailed list of changes in this new version. See the official Durable Functions migration guide for a less detailed, more user-friendly list of changes. Learn more about the v4 programming model.
npm package
https://www.npmjs.com/package/durable-functions/v/3.0.0
Added
- APIs to register Durable functions (orchestrations, activities, and entities) using code, under the
app
namespace (#453 and #384) - APIs to obtain trigger options for Durable triggers (orchestrations, activities, and entities) under the
trigger
namespace (#453 and #384) - API to obtain a Durable Client input options under the
input
namespace (#453 and #384) - A streamlined way to call activities and suborchestrations (#418)
- A streamlined way to register Durable Functions client functions for HTTP and timer triggers (#414)
- Preliminary support for Node 20
Removed
- The old
orchestrator()
andentity()
APIs (#453)
Changed
- Update minimum version of Node.js to
18.x
- Update minimum version of TypeScript to
4.x
- Update minimum version of core tools required for local testing to
4.0.5382
- Update
@azure/functions
dependency to4.x
(Seev4.0.0
changelog for a more detailed list of changes to@azure/functions
) - Improve exported types
- Rename the
IOrchestrationFunctionContext
interface toOrchestrationContext
, and export it from the root of the package (#455) - Rename the
IEntityFunctionContext<T>
interface toEntityContext<T>
and export it from the root of the package (#455) - Rename the
DurableOrchestrationClient
class toDurableClient
and export it from the root of the package (#154) - Export new type definitions
OrchestrationHandler
,OrchestrationTrigger
, andOrchestrationOptions
for orchestrationsEntityHandler
,EntityTrigger
, andEntityOptions
for entitiesActivityHandler
,ActivityTrigger
, andActivityOptions
for activitiesDurableClientInput
for client functions
- Switch to manual declaration of type definitions (#458)
- Remove private fields from exported class definitions
- Remove
@hidden
fields from exported class definitions - Remove non-user facing classes/interfaces from public type definitions (#352)
- Rename the
- Where applicable, switch
DurableClient
APIs from using discrete optional arguments to using an options object (#441 and #415)getStatus()
getStatusBy()
purgeInstanceHistoryBy()
raiseEvent()
readEntityState()
rewind()
signalEntity()
startNew()
waitForCompletionOrCreateCheckStatusResponse()
- Update the
callHttp()
API under theDurableOrchestrationContext
class (#456 and #439)- Switch to using one options object for all arguments
- Rename
uri
argument tourl
- Rename
content
argument tobody
- Deprecate
asynchronousPatternEnabled
flag in favor ofenablePolling
- Remove the Durable-specific
IHTTPRequest
,IHttpResponse
,DurableHttpRequest
andDurableHttpResponse
classes, in favor ofHttpRequest
andHttpResponse
from@azure/functions
, which represent a subset of the fetch standard based on the undici npm package. See Changelog here for more details. - Breaking bug-fixes
- Fixed a bug where input to sub-orchestrations would get serialized twice (#436)
- Stopped supporting the creation of compound tasks (
Task.any
andTask.all
) with no children, as it lead to ambiguous state (#424) - Fixed a bug where
DurableClient.getStatus()
was returning incorrect results. Updated thegetStatus()
API to be more type-safe and consistent with type contract (#486)
Patched
- Fixed a bug where sometimes activities can be scheduled multiple times (#485)