Essentials

Compatibility mode

Updated: Sep 4, 2026
Compatibility mode helps older apps run on newer VR devices. After an app launches, it changes some device information returned by selected APIs.
If you’re looking for how to control which build a device receives, see Target app builds by device instead.

What is compatibility mode

In compatibility mode, selected APIs report an older Quest model instead of the physical headset. This helps existing apps avoid results they were not built or tested to handle. Compatibility mode does not change anything about the device’s physical hardware.

How compatibility mode works

Meta Quest 2, Meta Quest Pro, Meta Quest 3, and Meta Quest 3S support compatibility mode.
Horizon OS manages compatibility mode automatically.
When an app launches, Horizon OS checks the app’s com.oculus.supportedDevices manifest entry. Compatibility mode turns on if the entry does not list the physical headset. The runtime then chooses the most recent older Quest model that the app lists. This is the app’s compatibility model.
For Meta Quest 3, the older compatibility models are Meta Quest Pro, Meta Quest 2, and the original Quest. If the manifest entry is missing, the runtime uses the original Quest. This choice doesn’t depend on the app’s target Android SDK version. The fallback doesn’t require adding the original Quest identifier to a new app’s manifest.

What compatibility mode changes

In compatibility mode:
  • Device-identification APIs can report the compatibility model instead of the physical headset.
  • Some APIs return only values supported by both the physical headset and the compatibility model. For example, available display refresh rates are limited to rates that both models support.
  • If the app sends a compatibility-adjusted device-type result to a backend, the backend receives the compatibility model.
  • Code that uses the reported model can behave differently than it did on the headset used for testing.
These changes apply only to specific APIs. Do not assume every API or backend signal reports the compatibility model.
Compatibility mode does not change CPU or GPU speed. It also does not change passthrough quality.

How can my application specify which devices are supported

The com.oculus.supportedDevices manifest entry lists the VR devices that your app supports. The runtime uses this list to decide whether to turn on compatibility mode. It also uses the list to choose the compatibility model.
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 can generate this entry from project settings. If the project or engine version predates a newer headset, inspect the generated manifest. Confirm that it includes every Quest model the app supports.

Check capabilities directly

No public API directly reports whether compatibility mode is active.
Don’t use android.os.Build.MODEL to infer whether compatibility mode is active. Don’t use it, or any single reported device value, to decide whether a feature is available.
Check for the capability that your app needs. Don’t rely only on the reported headset model. Provide a fallback when a capability is unavailable.

Engine-specific guides