Requiring Minimum OS Versions
Updated: Sep 3, 2026
Applications may require a minimum version of the Horizon Operating System (Horizon OS) to launch. This restriction can be added:
- Implicitly, by using a feature available only in a newer Horizon OS version. For example, if your application supports Quest 3, it requires a minimum Horizon OS version of v56, the first version that supports Quest 3.
- Explicitly, by defining a minimum Horizon OS version in your app’s
uses-horizonos-sdk manifest element. This is useful if your app has implicit dependencies on a specific Horizon OS version, such as attempting to launch a system package with an intent supported only in a newer Horizon OS version, or for multiplayer applications that want to ensure all players have the latest security updates.
Handling API version compatibility
The VR Platform SDK evolves over time, with new APIs being added in each Horizon OS release. When your app calls an API that was introduced in a newer Horizon OS version than what the device is running, the API returns error code ProviderOperationNotSupported (1003).
You have two options for handling this:
- Gracefully handle the error - Allow your app to run on older devices and handle the case when the API is not available
- Require a minimum Horizon OS version - Prevent your app from being installed on devices that don’t support the APIs you need
Option 1: Gracefully handle the error
If the API is optional for your app’s functionality, you can call it and handle the error when it’s not supported. This allows your app to work on older devices while still taking advantage of newer features when available.
import horizon.platform.iap.Iap
import horizon.platform.iap.IapException
private val iap = Iap()
suspend fun restorePurchases() {
try {
val purchases = iap.getViewerPurchasesDurableCache()
// Use the purchases
} catch (e: IapException) {
if (e.code == 1003) {
// API not available on this device - use fallback behavior
Log.w(TAG, "API not supported on this Horizon OS version: ${e.message}")
} else {
// Handle other errors
Log.e(TAG, "IAP error: ${e.message}")
}
}
}
When to use this approach:
- The API provides optional or enhanced functionality
- You want maximum device compatibility
- Your app can provide a reasonable fallback experience
Option 2: Require a minimum Horizon OS version
If your app requires certain APIs to function properly, you can declare a minimum Horizon OS version in your
AndroidManifest.xml. This prevents your app from being installed or upgraded on devices running older Horizon OS versions. See the
Requiring a minimum Horizon OS version section below for details.
When to use this approach:
- Your app’s core functionality depends on specific APIs
- You don’t want to maintain fallback code paths
- You’re targeting newer devices with specific capabilities
Each API in the VR Platform SDK documentation indicates when it was introduced. Look for notes like:
This API was added in Horizon OS v83.
To determine the minimum version for your app:
- Identify all the Platform SDK APIs your app uses
- Find the highest version number among those APIs
- Use that version as your
minSdkVersion
Determining the Horizon OS versions used by your app’s users
Your app can also determine the Horizon OS version of the currently running device by calling the following code in a Java plugin built with your app:
PackageManager pm = context.getPackageManager();
try {
return pm.getPackageInfo("com.oculus.systemdriver", PackageManager.GET_META_DATA).versionName;
} catch (Exception e) { return e.toString(); }
Requiring a minimum Horizon OS version to use your app
To explicitly define a minimum Horizon OS version, add the following line to your AndroidManifest.xml file, as a child of your root <manifest> element. Replace [version] with your preferred Horizon OS version number, such as “83” or “205”.
<horizonos:uses-horizonos-sdk horizonos:minSdkVersion="[version]" horizonos:targetSdkVersion="[version]" />
Some settings and features in your app implicitly require a minimum Horizon OS version. For example:
When multiple features apply, your app requires the highest minimum Horizon OS version among all relevant features. For example:
- Using multiple Platform SDK APIs that were introduced in different Horizon OS versions requires the highest version among them.
When you declare a minSdkVersion:
- The Meta Horizon Store will only show your app to users on compatible devices
- Users on older devices won’t be able to install or update to this version
- You can safely call the APIs without error handling for version compatibility
Checking the minimum Horizon OS version for your app
The Developer Dashboard shows the reason it selected a specific Minimum OS version for your app as shown in the following screenshots.
- Start with error handling: During development, handle errors gracefully to understand which APIs might not be available
- Test on multiple versions: If possible, test your app on devices running different Horizon OS versions
- Document your requirements: Clearly communicate to users what Horizon OS version your app requires
- Consider staged releases: If adding a
minSdkVersion, consider how it affects your existing user base