Skip to content

Fix: Windows Consumption (Y1) correctly supports deployment slots for Azure Functions#1062

Draft
Copilot wants to merge 3 commits intomainfrom
copilot/fix-azure-functions-slots-support
Draft

Fix: Windows Consumption (Y1) correctly supports deployment slots for Azure Functions#1062
Copilot wants to merge 3 commits intomainfrom
copilot/fix-azure-functions-slots-support

Conversation

Copy link
Contributor

Copilot AI commented Feb 27, 2026

  • Understand the issue: AI incorrectly stated Windows Consumption plan doesn't support deployment slots
  • Update README.md hosting plans table: split Y1 into Windows/Linux rows, add "Slots" column, add deployment slots guidance note
  • Update deployment-slots.md: add "Slot Requirements — Azure Functions" section with OS/plan breakdown, add Windows Consumption + staging slot Bicep example, add WEBSITE_CONTENTSHARE sticky-settings note
  • Update bicep.md Consumption Plan: split into Linux (no slots) and Windows (1 staging slot) subsections, with complete Bicep examples
  • Update terraform.md Consumption Plan: split into Linux (no slots) and Windows (1 staging slot) subsections, with complete Terraform examples
  • Code review completed and spacing fix applied
  • Decouple factual slot support from recommendation guidance in deployment-slots.md — Y1 Windows supports slots as a platform fact; recommendations for alternatives are stated separately
Original prompt

This section details on the original issue you should resolve

<issue_title>[Skill Bug]: Azure Functions Slots Support Confusion.</issue_title>
<issue_description>### Preflight Checklist

Repro Steps

  1. Install the Skills into GitHub Copilot.

  2. Run this prompt "Create an Azure Functions Node 24 app that has a staging slot and make sure that WEBSITE_CONTENT_SHARE is different on each slot and also ensure that the created Storage account has logging enabled for Azure Files. Create a Node 24 Function App but do not deploy. "

  3. There is no Elastic Premium Quota so I ask to switch back to Consumption and then it hallucinates

Asked user: Your subscription has 0 Elastic Premium (EP) App Service ...
└ User responded: Switch to the Dynamic Plan aka Windows Consumption

◐ The user wants to switch to the Consumption plan (Dynamic/Y1). Let me update the Bicep to use a Consumption plan.

For Consumption plan on Linux:

  • SKU: Y1, tier: Dynamic
  • kind: 'functionapp,linux'- reserved: true
  • No need for WEBSITE_CONTENTAZUREFILECONNECTIONSTRING or WEBSITE_CONTENTSHARE on Linux Consumption

Wait, actually on Windows Consumption you DO need WEBSITE_CONTENTAZUREFILECONNECTIONSTRING and WEBSITE_CONTENTSHARE.
The user said "Windows Consumption" so let me use Windows.

Actually, the user said "Dynamic Plan aka Windows Consumption". But our Bicep has kind: 'functionapp,linux' and
linuxFxVersion: 'Node|24'.

I need to switch to Windows for Node.js, which means using WEBSITE_NODE_DEFAULT_VERSION instead of
linuxFxVersion. But here's the issue: Consumption plans don't support deployment slots at all—only Standard,
Premium, and Isolated tiers do. The user originally wanted a slot, but with Y1/Dynamic, that's not possible.

Let me update the Bicep template accordingly: I'll change to a Y1/Dynamic App Service Plan, set kind: 'functionapp' without the reserved property, use WEBSITE_NODE_DEFAULT_VERSION: '~24' for the runtime, and
remove the staging slot since it's not supported on Consumption. I'll also need to include
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING and WEBSITE_CONTENTSHARE for proper file storage configuration.

● Asked user: Note: The Consumption (Dynamic/Y1) plan does NOT support ...
└ User responded: I don't want Flex I want Windows Consumption with Slots Suppo...

◐ The user wants Windows Consumption with Slots support. But Consumption plan (Y1/Dynamic) does NOT support deployment
slots. This is a hard limitation of the Azure platform.

Slot support by plan:

  • Free/Shared: 0 slots- Basic: 0 slots (wait, actually Basic B1 has 0 slots? Let me think...)
  • Standard (S1+): 5 slots
  • Premium (P1v2/P1v3): 20 slots- Elastic Premium (EP1+): 20 slots- Isolated: 20 slots

Consumption (Y1/Dynamic) definitely does not support slots.

This is a platform limitation, so I need to suggest alternatives that actually support slots—like Standard S1,
Premium V2/V3, or Elastic Premium plans—since Consumption just won't work for this requirement.

Asked user: Since Consumption doesn't support slots, should I switch ...
└ User responded: The Windows Consumption plan that isn't flex supports Slots

◐ The user insists that Windows Consumption supports slots. Let me research this to check if this is actually true.
Let me do a web search to verify.

Actually, I know for a fact that the Azure Consumption plan (Y1/Dynamic) does NOT support deployment slots. This has
been a long-standing Azure limitation. Only Premium and Standard/higher dedicated plans support slots for
Functions.

But wait - let me double-check. Maybe something changed recently (since this is February 2026). Let me do a web
search.

● Web Search: Does Azure Functions Consumption plan support deployment slots in 2025 2026?
└ {"type":"text","text":{"value":"As of 2025 and into 2026, Azure Functions on ...

◐ The user is correct! Windows Consumption plan DOES support deployment slots (up to 2, including production, so 1
staging slot). I was wrong. Let me update the Bicep to use Windows Consumption (Y1/Dynamic) with a staging slot.

Key changes needed:

  1. App Service Plan: SKU Y1, tier Dynamic, kind removed or set to functionapp
  2. Function App: kind: 'functionapp' (no linux), remove linuxFxVersion, add WEBSITE_NODE_DEFAULT_VERSION
  3. Keep the staging slot
  4. For Windows Consumption, we need WEBSITE_CONTENTAZUREFILECONNECTIONSTRING and WEBSITE_CONTENTSHARE

Prompt

Create a Node 24 Functions App on the Elastic Premium with a Slot and make sure that the Storage account has Azure
Files logging e...


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

… staging slot

Co-authored-by: paulyuk <1968137+paulyuk@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix Azure Functions slots support confusion Fix: Windows Consumption (Y1) correctly supports deployment slots for Azure Functions Feb 27, 2026
Copy link
Member

@paulyuk paulyuk left a comment

Choose a reason for hiding this comment

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

See comment

| Hosting Plan | OS | Slots Supported |
|---|---|---|
| Flex Consumption (FC1) | Linux | ❌ 0 |
| Consumption (Y1) | **Windows** | ✅ 1 staging slot |
Copy link
Member

Choose a reason for hiding this comment

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

Y1 also supports the 1 staging slot. We need to decouple the support of slots with our guidance whether to use Y1 or not. While we don't recommend it, if you *need it, it can be done and it has the slot

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated in 651b804. The guidance callout now leads with the factual statement ("Windows Consumption Y1 supports 1 staging slot — this is a supported platform capability. If you need it, use it.") and separates that cleanly from the recommendation ("for new projects, prefer Elastic Premium or Dedicated"). The two concerns are now independent.

…ent-slots.md

Co-authored-by: paulyuk <1968137+paulyuk@users.noreply.github.com>
|---|---|---|
| Flex Consumption (FC1) | Linux | ❌ 0 |
| Consumption (Y1) | **Windows** | ✅ 1 staging slot |
| Consumption (Y1) | Linux | ❌ 0 |

Choose a reason for hiding this comment

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

Linux Consumption also supports slots (1 Slot) but should not be considered in light of deprecation

{ name: 'FUNCTIONS_EXTENSION_VERSION', value: '~4' }
{ name: 'FUNCTIONS_WORKER_RUNTIME', value: 'node' }
{ name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING', value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccount.name};AccountKey=${storageAccount.listKeys().keys[0].value}' }
{ name: 'WEBSITE_CONTENTSHARE', value: '${toLower(serviceName)}-staging' } // MUST differ from production

Choose a reason for hiding this comment

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

> If a user specifically needs Windows Consumption with a slot, that is supported — use the Windows pattern below.
> For new apps needing slots, prefer **Elastic Premium (EP1)** for better performance and no cold-start issues.
### Linux Consumption (no slot support)

Choose a reason for hiding this comment

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

Linux Consumption also supports 1 slot but should not be recommended in light of deprecation

Copy link

@FinVamp1 FinVamp1 left a comment

Choose a reason for hiding this comment

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

Added some comments

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.

[Skill Bug]: Azure Functions Slots Support Confusion.

3 participants