How to target Azure Functions runtime versions

A function app runs on a specific version of the Azure Functions runtime. There are four major versions: 4.x, 3.x, 2.x, and 1.x. By default, function apps are created in version 4.x of the runtime. This article explains how to configure a function app in Azure to run on the version you choose. For information about how to configure a local development environment for a specific version, see Code and test Azure Functions locally.

The way that you manually target a specific version depends on whether you're running Windows or Linux.

Automatic and manual version updates

This section doesn't apply when running your function app on Linux.

Azure Functions lets you target a specific version of the runtime on Windows by using the FUNCTIONS_EXTENSION_VERSION application setting in a function app. The function app is kept on the specified major version until you explicitly choose to move to a new version. If you specify only the major version, the function app is automatically updated to new minor versions of the runtime when they become available. New minor versions shouldn't introduce breaking changes.

If you specify a minor version (for example, "2.0.12345"), the function app is pinned to that specific version until you explicitly change it. Older minor versions are regularly removed from the production environment. If your minor version gets removed, your function app goes back to running on the latest version instead of the version set in FUNCTIONS_EXTENSION_VERSION. As such, you should quickly resolve any issues with your function app that require a specific minor version. Then, you can return to targeting the major version. Minor version removals are announced in App Service announcements.

Note

If you pin to a specific major version of Azure Functions, and then try to publish to Azure using Visual Studio, a dialog window will pop up prompting you to update to the latest version or cancel the publish. To avoid this, add the <DisableFunctionExtensionVersionUpdate>true</DisableFunctionExtensionVersionUpdate> property in your .csproj file.

When a new version is publicly available, a prompt in the portal gives you the chance to move up to that version. After moving to a new version, you can always use the FUNCTIONS_EXTENSION_VERSION application setting to move back to a previous version.

The following table shows the FUNCTIONS_EXTENSION_VERSION values for each major version to enable automatic updates:

Major version FUNCTIONS_EXTENSION_VERSION value Additional configuration
4.x ~4 On Windows, enable .NET 6
3.x* ~3
2.x* ~2
1.x ~1

*Reached the end of life (EOL) for extended support on December 13, 2022. For a detailed support statement about end-of-life versions, see this migration article.

A change to the runtime version causes a function app to restart.

View and update the current runtime version

This section doesn't apply when running your function app on Linux.

You can change the runtime version used by your function app. Because of the potential of breaking changes, you can only change the runtime version before you've created any functions in your function app.

Important

Although the runtime version is determined by the FUNCTIONS_EXTENSION_VERSION setting, you should only make this change in the Azure portal and not by changing the setting directly. This is because the portal validates your changes and makes other related changes as needed.

Use the following procedure to view and update the runtime version currently used by a function app.

  1. In the Azure portal, browse to your function app.

  2. Under Settings, choose Configuration. In the Function runtime settings tab, locate the Runtime version. Note the specific runtime version. In the example below, the version is set to ~4.

    Screenshot showing how to view the runtime version.

  3. To pin your function app to the version 1.x runtime, choose ~1 under Runtime version. This switch is disabled when you have functions in your app.

  4. When you change the runtime version, go back to the Overview tab and choose Restart to restart the app. The function app restarts running on the version 1.x runtime, and the version 1.x templates are used when you create functions.

    Restart your function app.

The function app restarts after the change is made to the application setting.

Pin to a specific version on Linux

To pin a Linux function app to a specific host version, you set a version-specific base image URL in the linuxFxVersion site setting in the format DOCKER|<PINNED_VERSION_IMAGE_URI>.

Important

Pinned function apps on Linux don't receive regular security and host functionality updates. Unless recommended by a support professional, use the FUNCTIONS_EXTENSION_VERSION setting and a standard linuxFxVersion value for your language and version, such as Python|3.9. For valid values, see the linuxFxVersion reference article.

For apps running in a Consumption plan, setting linuxFxVersion to a specific image may also increase cold start times. This is because pinning to a specific image prevents Functions from using some cold start optimizations.

The following table provides an example of linuxFxVersion values required to pin a Node.js 18 function app to a specific runtime version of 4.11.2:

Hosting plan linuxFxVersion value
Consumption DOCKER|mcr.microsoft.com/azure-functions/mesh:4.11.2-node18
Premium/Dedicated DOCKER|mcr.microsoft.com/azure-functions/node:4.11.2-node18-appservice

When needed, a support professional can provide you with a valid base image URI for your application.

Use the following Azure CLI commands to view and set the linuxFxVersion. You can't currently set linuxFxVersion in the portal or by using Azure PowerShell.

To view the current runtime version, use with the az functionapp config show command.

az functionapp config show --name <function_app> \
--resource-group <my_resource_group> --query 'linuxFxVersion' -o tsv

In this code, replace <function_app> with the name of your function app. Also replace <my_resource_group> with the name of the resource group for your function app. The current value of linuxFxVersion is returned.

To update the linuxFxVersion setting in the function app, use the az functionapp config set command.

az functionapp config set --name <FUNCTION_APP> \
--resource-group <RESOURCE_GROUP> \
--linux-fx-version <LINUX_FX_VERSION>

Replace <FUNCTION_APP> with the name of your function app. Also replace <RESOURCE_GROUP> with the name of the resource group for your function app. Finally, replace <LINUX_FX_VERSION> with the value of a specific image provided to you by a support professional.

You can run this command from the Azure Cloud Shell by choosing Try it in the preceding code sample. You can also use the Azure CLI locally to execute this command after executing az login to sign in.

The function app restarts after the change is made to the site config.

Next steps