Skip to content

Set DTS as default backend, remove preview bundles#5108

Draft
andystaples wants to merge 1 commit into
microsoft:mainfrom
andystaples:andystaples/set-dts-as-default
Draft

Set DTS as default backend, remove preview bundles#5108
andystaples wants to merge 1 commit into
microsoft:mainfrom
andystaples:andystaples/set-dts-as-default

Conversation

@andystaples

Copy link
Copy Markdown
Contributor

Sets the Durable Task Scheduler (DTS) as the default storage backend for durable Azure Functions.
Also removes the special-casing we had to configure for preview extension bundles, as the DTS extensions have been present in the public extension bundles for a long time.

Copilot AI review requested due to automatic review settings June 15, 2026 15:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Updates the Durable Functions creation flow to prioritize the Durable Task Scheduler (DTS) option and removes preview/prerelease configuration previously applied to DTS in project setup.

Changes:

  • Reorders durable storage type quick-pick items and shifts the “default” description to DTS.
  • Removes the DTS-specific preview extension bundle update for non-.NET projects.
  • Removes prerelease package installation behavior for DTS .NET dependencies.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.

File Description
src/commands/createFunction/durableSteps/DurableStorageTypePromptStep.ts Reorders quick-pick options and changes which option is labeled as default.
src/commands/createFunction/durableSteps/DurableProjectConfigureStep.ts Removes preview bundle wiring and prerelease NuGet installation flags for DTS setup.

Comment on lines +19 to +20
{ label: 'Durable Task Scheduler', description: defaultDescription, data: DurableBackend.DTS },
{ label: 'Azure Storage', data: DurableBackend.Storage },

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extension owners - is this valid? Where is the default defined, is it always just the first list item, or is there a different system for this?

@MicroFish91 MicroFish91 Jun 15, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure why the description was originally chosen as "default". It may have been because the Azure Storage setup required very little extra configuration.

Either way though, I don't think there's any defaulting happening on the extension side so the way you have it is okay. The user still has to explicitly choose the storage option. That said, feel free to change the description label to something else more fitting!

Comment on lines 80 to 83
case DurableBackend.DTS:
hostJson.extensions.durableTask = this.getDefaultDTSTaskConfig();
// Non- .NET projects require a special preview extension bundle to work properly
// Todo: Remove once this functionality is out of preview
if (context.language !== ProjectLanguage.CSharp && context.language !== ProjectLanguage.FSharp) {
hostJson.extensionBundle = {
id: 'Microsoft.Azure.Functions.ExtensionBundle.Preview',
version: '[4.29.0, 5.0.0)',
};
ext.outputChannel.appendLog(localize('extensionBundlePreview', 'Updated "host.json" extension bundle to preview version to enable new DTS features.'));
}
await setLocalAppSetting(context, context.projectPath, ConnectionKey.DTS, '', MismatchBehavior.Overwrite);
await setLocalAppSetting(context, context.projectPath, nonNullValue(tryGetVariableSubstitutedKey(ConnectionKey.DTSHub)), '', MismatchBehavior.Overwrite);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll let the extension owners weigh in here - the setting [4.*, 5.0.0) will now pull in a compatible bundles version, but I'm not sure if we need to think about pinned bundle versions less than the first one that brought in DTS or not

@MicroFish91 MicroFish91 Jun 15, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For new projects this likely isn't a concern, since the default range will automatically pull in a compatible version like you mentioned. For existing projects, it could become an issue if a user has pinned their range below 4.29.

We could add a check. If the configured range would resolve to an incompatible version, we warn the user and/or update the bundle setting.

Feel free to address that here or open it as a separate issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants