microsoft / microsoft/vscode-azurefunctions

Update Durable Functions VS Code templates to use Durable Task Scheduler by default

Open
#5,000 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

durable
Dominant language
TypeScript
Stars
319
Forks
158
Avg merge
2d 13h
Merged PRs (30d)
4

Description

Summary

Update the Durable Functions VS Code project templates to use Durable Task Scheduler (DTS) as the default backend instead of Azure Storage.

Motivation

DTS is the recommended backend for Durable Functions, offering the best performance, built-in monitoring, orchestration versioning, and retention policies. New projects should default to the optimal experience
out of the box.

Required Changes

  1. Update host.json configuration

The generated host.json should configure DTS (azureManaged) as the storage provider with the hubName property:

 {
   "version": "2.0",
   "extensions": {
     "durableTask": {
       "hubName": "%TASKHUB_NAME%",
       "storageProvider": {
         "type": "azureManaged",
         "connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING"
       }
     }
   }
 }
  1. Update extension bundles (non-.NET languages only)

For JavaScript/TypeScript, Python, Java, and PowerShell templates, update the extension bundle in host.json to a version that includes the azureManaged storage provider:

 {
   "extensionBundle": {
     "id": "Microsoft.Azure.Functions.ExtensionBundle",
     "version": "[4.*, 5.0.0)"
   }
 }
  1. Update NuGet package (.NET only)

For .NET isolated templates, ensure the project references the Durable Task extension package:

 <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.16.3" />
  1. Update local.settings.json for emulator defaults

The generated local.settings.json should include the DTS emulator connection string and task hub name:

 {
   "IsEncrypted": false,
   "Values": {
     "AzureWebJobsStorage": "UseDevelopmentStorage=true",
     "FUNCTIONS_WORKER_RUNTIME": "<dotnet-isolated|node|python|java|powershell>",
     "DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;Authentication=None",
     "TASKHUB_NAME": "default"
   }
 }
  1. Integrate DTS emulator for local development

The template scaffolding should ensure the DTS emulator Docker container is available for local development:

 docker pull mcr.microsoft.com/dts/dts-emulator:latest
 docker run --name dtsemulator -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:latest
  • Port 8080 — emulator endpoint (used by the connection string)
  • Port 8082 — built-in monitoring dashboard (http://localhost:8082)

Consider adding a VS Code task or tasks.json entry to start the emulator automatically, so F5 works out of the box without manual Docker commands.

6. Templates to Update

The following Durable Functions template categories need to be updated to use DTS as the default backend. These templates span multiple repos and surfaces (VS Code, CLI, Portal).

Repo: Azure/azure-functions-templates

Template Languages
DurableFunctionsOrchestration C# (Isolated, 2.x), Python, TypeScript, JavaScript, Java
DurableFunctionsOrchestrator C# (Isolated, 2.x), Python, TypeScript, JavaScript, PowerShell
DurableFunctionsHttpStart C# (Isolated, 2.x), Python, TypeScript, JavaScript, PowerShell
DurableFunctionsActivity C# (2.x), Python, TypeScript, JavaScript, PowerShell
DurableFunctionsEntityClass C# (Isolated, 2.x)
DurableFunctionsEntityFunction C# (Isolated, 2.x)
DurableFunctionsEntity Python, TypeScript, JavaScript
DurableFunctionsEntityHttp C# (2.x)
DurableFunctionsEntityHttpStart C# (2.x), TypeScript, JavaScript

Repo: Azure/azure-functions-templates-mcp-server

Template Language
DurableFunctionsOrchestration C#
DurableFunctionsEntityClass C#
DurableFunctionsEntityFunction C#
DurableFunctions Java

7. Acceptance Criteria

  • New Durable Functions projects created from VS Code templates use DTS as the default backend
  • host.json is pre-configured with azureManaged storage provider
  • Non-.NET templates include extension bundle [4.*,
    5.0.0)
  • .NET isolated templates reference Microsoft.Azure.Functions.Worker.Extensions.DurableTask v1.16.3+
  • local.settings.json includes emulator connection string and task hub name
  • DTS emulator is downloaded and configured for local development
  • F5 local debugging experience works seamlessly with the emulator
  • Documentation/comments in generated files guide users on switching to a cloud DTS resource for deployment

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in Azure/azure-functions-templates and Azure/azure-functions-templates-mcp-server by inspecting the listed Durable Functions template categories and their generated host.json, local.settings.json, and project package references. Run the relevant template-generation and local F5 flow, then verify that DTS is the default, the emulator is configured, and the documented acceptance criteria are met.

Written by the indexing model from the issue text.

Assessment

Tech stack
azure, csharp, docker, java, javascript, powershell, python, typescript, vscode
Domain
cloud, devops, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.