The display refresh rate represents how many times per second a headset’s screen
refreshes. A higher refresh rate enables higher frame rates, brighter output,
and improved color clarity. However, higher refresh rates require your app to
perform its work in shorter amounts of time.
The default display refresh rate for apps is 72 Hz. If you want to run your app
at a different refresh rate, you are responsible for ensuring that your app is
performant enough to sustain that rate. Apps that can’t consistently render at
the desired display refresh rate will fail Meta Horizon Store review. Such apps
might exhibit judder, flickering black areas on the peripheries, and other
performance-related problems.
Get refresh rates supported by the device
Some headset models are capable of higher display refresh rates than others.
The table below lists the primary currently available refresh rates.
Device Model
60 Hz
72 Hz
80 Hz
90 Hz
96 Hz
100 Hz
120 Hz
Quest
Media apps only
✓
-
-
-
-
-
Quest 2
Media apps only
✓
✓
✓
✓
✓
✓
Quest Pro
-
✓
✓
✓
-
-
-
Quest 3
-
✓
✓
✓
✓
✓
✓
Quest 3S
-
✓
✓
✓
✓
✓
✓
60 Hz must only be used by media player apps. It is provided as a way to
synchronize 30 FPS or 60 FPS video with the display refresh rate for smooth
playback. Note that media apps can use higher refresh rates, as long as the
refresh rates are supported by the device and the app remains performant.
Non-media player apps that set the display refresh rate to 60 Hz will fail the
Store review.
To see the current refresh rate on your headset:
Enable developer mode on the Meta Horizon mobile App. For instructions, see
Enable Developer Mode.
Use the Meta Quest Developer Hub desktop to:
Install the OVR Metrics Tool. For instructions, visit the
Meta Horizon Store.
Configure the Metrics Performance HUD Settings in the Meta Quest
Developer Hub to display the frame rate by choosing the settings gear icon,
and then check the two boxes for Average FPS.
To get the list of refresh rates supported by a device:
Note: While the following API will get you a list of refresh rates, it is deprecated.
Requesting values that aren’t returned by this API is allowed on supported devices.
For instance, Quest 2, Quest Pro, Quest 3, and Quest 3S all support 76 Hz. To
maximize compatibility with future headsets, stay with refresh rates listed on the
chart above.
If you want to set refresh rates other than 72 Hz
for your app, the supported devices section of your Android manifest must
include a device that supports this rate. In Unreal Engine, this can be done
through Project Settings as described in
Set Target Device.
If an app with a display refresh rate higher than 72 Hz experiences thermal
events, dynamic throttling may change the refresh rate to 72 Hz as a first step.
If thermal conditions worsen, dynamic throttling may take an additional step to
change frame rate while maintaining the refresh rate (the equivalent of
minVsyncs=2).
Handle refresh rate change events (Optional)
If you need your app to know if dynamic
throttling reduces the refresh rate so that the app can respond in some way, you
can do so through the event Blueprint Oculus Display Refresh Rate Change.
The old and new refresh rates are given as the float values From Refresh
Rate and To Refresh Rate.
Note: This event only fires when your project uses the OVR legacy runtime. If your project uses OpenXR, this event is not dispatched during dynamic throttling.
Testing how an app handles dynamic throttling
You can simulate the dynamic throttling from a higher display refresh rate.
While your app is running, broadcast an intent through the adb shell activity
manager. For example, this command simulates throttling for 10 seconds:
adb shell am broadcast -a com.oculus.vrruntimeservice.COMPOSITOR_SIMULATE_THERMAL --es subsystem refresh --ei seconds_throttled 10
If you aren’t able to see a visible change in your app, you can verify the refresh rate change by using the Get Current Display Frequency Blueprint and logging the returned value.
Meta Quest 3 extended refresh rates
Meta Quest 3 supports display refresh rates above 120 Hz, up to 240 Hz. This is
exclusive to Meta Quest 3. It is not available on Meta Quest 3S, and it is not
available on any other headset. Meta Quest 3S uses a different display panel that
does not support rates above 120 Hz.
Extended refresh rates require HorizonOS v2.7 or later.
Extended refresh rates depend on the specific display hardware in Meta Quest 3. Do not assume that a future headset will support rates above 120 Hz, and do not make an extended rate a requirement for your app to run. Fall back to a rate from the list the device reports when a request for an extended rate does not succeed.
Up to 207 Hz (standard)
On Meta Quest 3, the display hardware accepts any integer refresh rate from 72 Hz
through 207 Hz, and you can request any of them through the standard APIs
described above. No additional setup is
required. 207 Hz is the highest rate at which the system can deliver a full frame
of data to the display at full resolution.
Up to 240 Hz (developer mode)
Rates above 207 Hz require display scaling, because a full-resolution frame
exceeds the available bandwidth to the display above 207 Hz. Enable developer
mode, then run both of the following commands:
The first command enables display scaling. The frame is rendered at a lower
resolution, sent to the display as a smaller payload, and upscaled to the panel’s
native resolution by the display hardware. The smaller payload fits within the
available bandwidth at 240 Hz.
The second command sets the target refresh rate. Accepts any integer from 72
through 240.
Display scaling trades image quality for bandwidth. The upscaled image is not
identical to a natively rendered full-resolution image, and the difference is
visible in fine detail such as small text and thin geometry.
To reset both properties and return to the default behavior:
Perceived motion blur changes at extended refresh rates. Each frame is displayed
for a shorter time, which reduces the smearing that comes from tracking a moving
object across a longer frame. The change is most visible in high-contrast
scenarios, such as a bright object moving across a dark background. Test the
motion in your own content at the rate you plan to ship, because the result
depends on your scene’s contrast and motion speed.
Performance considerations for extended refresh rates
A higher refresh rate shortens the time your app has to produce each frame. The
frame budget at each rate is:
Refresh rate
Frame budget
72 Hz
13.9 ms
90 Hz
11.1 ms
120 Hz
8.3 ms
207 Hz
4.8 ms
240 Hz
4.2 ms
At 240 Hz your app has less than a third of the frame budget it has at 72 Hz. An
app that misses this budget will judder, which defeats the reason to raise the
rate at all. Extended refresh rates suit apps that render a light scene and
benefit from low latency and smooth motion, such as rhythm games, competitive
shooters, sports and racing titles, and simple high-contrast environments. An app
with a dense scene, heavy post-processing, or a high draw call count is a poor
candidate.
Dynamic throttling applies at extended rates in the same way it applies above
72 Hz.