HomeGuidesReferenceLearn
ArchiveExpo SnackDiscord and ForumsNewsletter

Runtime Versions

Learn how to set the runtime version for an app.


Every update targets one compatible runtime. Each time you build a binary for your app it includes the native code present at the time of the build and only that code, and this unique combination and configuration of the build is what is represented by the runtime version.

By default, the runtime version is determined by the Expo SDK version, but this will not adequately describe the different runtime versions of your app if you build more than once per SDK release. In this case, you will need to specify a runtimeVersion to ensure your updates are delivered only to compatible builds. This runtimeVersion should be updated whenever you update your project's native modules and change the JSā€“native interface.

The runtime version string must conform to this format.

Setting the runtime version for an update

Updates published with the runtime version set in app.json will be delivered to builds running the same runtime version, and only to those builds.

app.json
{
  "expo": {
    "runtimeVersion": "1.0.0"
  }
}

Setting the runtime version for a build

Configuration for the managed workflow

If you are using the managed workflow, runtimeVersion is specified in app.json:

app.json
{
  "expo": {
    "runtimeVersion": "1.0.0"
  }
}

Configuration for the bare workflow

If you are using the bare workflow, set the runtime version in AndroidManifest.xml on Android Expo.plist on iOS.

For an iOS build, add an entry to the Expo.plist with the key EXUpdatesRuntimeVersion. The value is a string that represents the runtime version.

+ <key>EXUpdatesRuntimeVersion</key>
+ <string>1.0.0</string>

For an Android build, add an entry to android/app/src/main/res/values/strings.xml with the name expo_runtime_version. The value is a string that represents the runtime version.

Then add a <meta-data> element to the AndroidManifest.xml whose android:name attribute is expo.modules.updates.EXPO_RUNTIME_VERSION and android:value attribute is a reference to the runtime version in strings.xml.

+ <meta-data android:name="expo.modules.updates.EXPO_RUNTIME_VERSION" android:value="@string/expo_runtime_version"/>

FAQ

Can I have a different runtime version on Android and iOS?

Yes, if you want to be able to control the runtime version on a platform level, you can:

  1. Have platform-specific channels: android-production, ios-production.
  2. Have platform-specific runtime versions: android-1.0.0, ios-1.0.0.

However, you cannot set a platform-specific configuration field such as android.runtimeVersion or ios.runtimeVersion

Can I test updates with a custom runtime version on Expo Go?

Expo Go is meant for updates targeting an Expo SDK. If you want to test an update targeting a custom runtime version, you should use a development build.