| title | Compare Azure Functions Runtime Versions |
|---|---|
| description | Learn how Azure Functions supports multiple versions of the runtime, and understand the differences between them and how to choose the one that's right for you. |
| ms.topic | concept-article |
| ms.custom | devx-track-extended-java, devx-track-js, devx-track-python, ignite-2023, devx-track-ts |
| ms.date | 04/09/2026 |
| zone_pivot_groups | programming-languages-set-functions |
::: zone pivot="programming-language-csharp" Azure Functions currently supports two versions of the runtime host. The following table details the currently supported runtime versions, their support level, and when to use them:
| Version | Support level | Description |
|---|---|---|
| 4.x | GA | Recommended runtime version for functions in all languages. Check out Supported language versions. |
| 1.x | GA* | Supported only for C# apps that must use .NET Framework. This version is in maintenance mode, with enhancements provided only in later versions. Support ends for version 1.x on September 14, 2026. Migrate your apps to version 4.x. For more information, see supported language versions. |
* Support ends September 14, 2026. For more information, see the version 1.x support announcement. ::: zone-end ::: zone pivot="programming-language-java,programming-language-javascript,programming-language-typescript,programming-language-powershell,programming-language-python" Azure Functions currently supports only version 4.x of the runtime host.
::: zone-end
Important
Versions 2.x and 3.x of the Azure Functions runtime are no longer supported. For more information, see Retired versions.
Migrate apps from Azure Functions version 3.x to version 4.x.
[!INCLUDE functions-support-levels]
All functions in a function app must share the same language. Choose the language of functions in your function app when you create the app. The language of your function app is maintained in the FUNCTIONS_WORKER_RUNTIME setting, and can't be changed when there are existing functions.
[!INCLUDE functions-supported-languages]
For information about language versions of previously supported Functions runtime versions, see Retired runtime versions.
The FUNCTIONS_EXTENSION_VERSION application setting determines the version of the Functions runtime that published apps use in Azure. In some cases and for certain languages, other settings might apply.
By default, function apps created in the Azure portal, by the Azure CLI, or from Visual Studio tools are set to version 4.x. You can modify this version if needed. You can only downgrade the runtime version to 1.x after you create your function app but before you add any functions. You can update to a later major version even with apps that have existing functions.
[!INCLUDE functions-migrate-apps] ::: zone pivot="programming-language-csharp"
The following major runtime version values are used:
| Value | Runtime target |
|---|---|
~4 |
4.x |
~1 |
1.x |
Important
Don't arbitrarily change this app setting, because other app setting changes and changes to your function code might be required. For existing function apps, follow the migration instructions. ::: zone-end
To resolve issues that your function app could have when running on the latest major version, you must temporarily pin your app to a specific minor version. Pinning gives you time to get your app running correctly on the latest major version. The way that you pin to a minor version differs between Windows and Linux. To learn more, see How to target Azure Functions runtime versions.
Older minor versions are periodically removed from Functions. For the latest news about Azure Functions releases, including the removal of specific older minor versions, monitor Azure App Service announcements.
::: zone pivot="programming-language-csharp" There's technically not a correlation between binding extension versions and the Functions runtime version. However, starting with version 4.x, the Functions runtime enforces a minimum version for all trigger and binding extensions.
If you receive a warning about a package not meeting a minimum required version, you should update that NuGet package to the minimum version as you normally would. Find the minimum version requirements for extensions used in Functions v4.x in the linked configuration file.
For C# script, update the extension bundle reference in the host.json:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}::: zone-end ::: zone pivot="programming-language-java,programming-language-javascript,programming-language-typescript,programming-language-powershell,programming-language-python" There's technically not a correlation between extension bundle versions and the Functions runtime version. However, starting with version 4.x, the Functions runtime enforces a minimum version for extension bundles.
If you receive a warning about your extension bundle version not meeting a minimum required version, update your existing extension bundle reference in the host.json as follows:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}To learn more about extension bundles, see Extension bundles. ::: zone-end
[!INCLUDE functions-runtime-1x-retirement-note]
These versions of the Functions runtime reached end of extended support on December 13, 2022.
| Version | Current support level | Previous support level |
|---|---|---|
| 3.x | Out of support | GA |
| 2.x | Out of support | GA |
Migrate your apps to version 4.x as soon as possible to get full support. For a complete set of language-specific migration instructions, see Migrate apps to Azure Functions version 4.x.
Apps using versions 2.x and 3.x can still be created and deployed from your CI/CD DevOps pipeline, and all existing apps continue to run without breaking changes. But your apps aren't eligible for new features, security patches, and performance optimizations. You can only get related service support after you upgrade your apps to version 4.x.
Versions 2.x and 3.x are no longer supported because .NET Core 3.1, a core dependency, reached end of support. This requirement affects all languages supported by Azure Functions. ::: zone pivot="programming-language-csharp"
Make the following updates to function apps to locally change the targeted versions.
In Visual Studio, you select the runtime version when you create a project. Azure Functions tools for Visual Studio supports the two major runtime versions. The correct version is used when debugging and publishing based on project settings. The version settings are defined in the .csproj file in the following properties:
<TargetFramework>net8.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>If you're using the isolated worker model, you can choose, net9.0, net8.0, or net48 as the target framework. You can also choose to use preview support for net10.0. If you're using the in-process model, you can choose net8.0 or net6.0, and you must include the Microsoft.NET.Sdk.Functions extension set to at least 4.4.0. .NET 10 isn't supported by the in-process model; if you are on the in-process model and wish to use .NET 10, migrate your app to the isolated worker model.
.NET 6 was previously supported on the isolated worker model and the in-process model, but it reached the end of official support on November 12, 2024.
.NET 7 was previously supported on the isolated worker model but reached the end of official support on May 14, 2024.
<TargetFramework>net48</TargetFramework>
<AzureFunctionsVersion>v1</AzureFunctionsVersion>Azure Functions Core Tools is used for command-line development and also by the Azure Functions extension for Visual Studio Code. For more information, see Install the Azure Functions Core Tools.
For Visual Studio Code development, you might also need to update the user setting for the azureFunctions.projectRuntime to match the version of the tools installed. This setting also updates the templates and languages used during function app creation.
::: zone-end