Distribute and grow

Application Manifests for Release Builds

Updated: Aug 31, 2026
To upload your app for review to be added to the Meta Horizon Store, it must have an app manifest (AndroidManifest.xml) that conforms to the specifications described in this topic. Apps whose manifests do not conform will fail the Virtual Reality Checks (VRC) VRC.Quest.Packaging.1 and/or VRC.Quest.Packaging.4.
Note that builds that whose manifests do not conform to these specifications may potentially still be uploaded to the Developer Dashboard, or sideloaded and launched on a Meta Quest Device.
This topic contains the following sections:

Manifest specification for release

You can find the general specifications for your app’s AndroidManifest.xml file in Android Manifest Settings in the native development guide.
For release on the Store, your app’s manifest should also meet the following requirements:
  • android:minSdkVersion, android:targetSdkVersion, and android:compileSdkVersion must be set appropriately according to the below tables.
    • If your app is only intended to support in-lifecycle Meta Quest devices, the following values are recommended for best support.
    DeviceRecommended minSdkVersionRecommended targetSdkVersionRecommended compileSdkVersion (optional)
    Quest 2
    32
    34
    34
    Quest Pro
    32
    34
    34
    Quest 3 family
    32
    34
    34
    DeviceminSdkVersiontargetSdkVersioncompileSdkVersion (optional)
    Quest 2
    29-34
    32-34 for immersive, 32-36 for 2D
    32+
    Quest Pro
    29-34
    32-34 for immersive, 32-36 for 2D
    32+
    Quest 3 family
    29-34
    32-34 for immersive, 32-36 for 2D
    32+
SdkVersion values correspond to Android OS versions. All Horizon OS releases since HzOS version 76 on April 2025 have used Android 14 (SdkVersion 34). Previous Horizon OS versions used Android 12 (SdkVersion 32). As such, the recommended targetSdkVersion is 34.
A lower minSdkVersion indicates support for users on older versions of Android. Since many versions of Horizon OS have the same Android OS version, developers who wish to restrict usage to new versions of HzOS (i.e. to support new mixed reality features) should examine Requiring Minimum OS Versions.
compileSdkVersion is optional in your app manifest; however, if listed, it must be greater than or equal to the android:targetSdkVersion. Having a higher compileSdkVersion than targetSdkVersion ensures you receive up-to-date compiler error messages.
Although maxSdkVersion is supported by Android, it is not recommended for Meta Quest devices.
  • installLocation must be set to auto (or 0, which is the same). This accommodates installing apps on SD card external storage. If you have a special circumstance and require a different install location setting, contact the store team using the Get Developer Support form.
  • In the manifest node, declare the android.hardware.vr.headtracking feature according to your app class:
    • Immersive (VR) apps require 6DoF head tracking hardware, so the following line must appear:
      <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
    
    • Panel (2D) apps do not require 6DoF hardware. Either omit this element, or set android:required="false" to indicate that the app can run in both 3DoF and 6DoF modes:
      <uses-feature android:name="android.hardware.vr.headtracking" android:required="false" android:version="1" />
    
  • In the application node, android:label must contain the name of the app or a reasonable representation of the app name, and the label must be unique on the platform.
  • In the application node, android:debuggable must be set to false, or unset. Your app must be a release version, not a debug version.
  • In the activity node which launches your app, specify the following intent-filter values:
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    
    Note: For OpenXR apps, an additional category value is required under intent-filter:
      <category android:name="com.oculus.intent.category.VR" />
    
  • In the activity node which launches your app, android:excludeFromRecents must be set to true.
  • In the application node, add a com.oculus.supportedDevices meta-data element that specifies the Meta Quest devices your app supports. Use the canonical metadata below.

Supported Meta Quest devices

The canonical com.oculus.supportedDevices identifiers are:
Meta Quest devicesupportedDevices identifier
Meta Quest 2
quest2
Meta Quest Pro
questpro
Meta Quest 3
quest3
Meta Quest 3S
quest3s
Separate multiple identifiers with a pipe (|).
To declare support for all current Meta Quest devices, add this element to the application node in AndroidManifest.xml:
<meta-data
    android:name="com.oculus.supportedDevices"
    android:value="quest2|questpro|quest3|quest3s" />
Unity and Unreal Engine add this element automatically when you configure the target devices in the project settings. For more information, see Compatibility mode.

Unity app manifests

The Unity Android project settings allow you to set some of the required application manifest options for building a mobile app suitable for the Store. To set the remaining manifest settings, use the features provided by the Meta XR Core SDK for Unity, or edit the manifest directly.
To configure Unity to build Meta Quest Android .apk packages
  1. Open the Unity Editor.
  2. Go to Meta > Tools > Create store-compatible AndroidManifest.xml.
  3. Go to Edit > Project Settings > Player.
  4. Expand the Other Settings properties, and select the Android tab.
  5. Under Identification, enter a package name in the Package Name field. The package name should contain your company name and the app name, and it must be unique among apps uploaded to the Meta Horizon Store. Having a codename for the app in the package name is acceptable, as long as that codename is not also the name of an app on the Meta Horizon Store.
  6. Go to Meta > Tools > Project Setup Tool.
  7. Click “Fix” or “Apply” next to all appropriate items.

Unreal app manifests

Meta recommends using Meta’s fork of Unreal Engine for Unreal development. In addition to fixes that improve Unreal’s performance on Meta Quest devices, the fork includes the Project Setup Tool, which simplifies the process of modifying your app manifest.
To configure Unreal Engine to build Meta Quest Android .apk packages
  1. From the main menu, select Edit then Project Settings.
  2. Under the Platforms header, select Android.
  3. Change Install Location to Auto.
  4. Verify that Remove Oculus Signature Files from Distribution APK is not checked. If it’s selected, please uncheck this box.
  5. Under the Project header, select Packaging.
  6. Verify that For Distribution is checked.
  7. Finally, sign your Android package by following the steps in Unreal Engine’s Signing Projects for Release guide.
  8. Under the Meta XR Tools header, select Meta XR Project Setup Tool.
  9. Click “Fix” or “Apply” next to all appropriate items.