120fps in mobile development — what it is, ProMotion features and optimization

Author: IT Sectr Published: 2026-04-01 Reading time: 8 min

120fps — a frame rate of 120 frames per second available on displays with 120 Hz refresh rate, where each frame takes 8.3 ms. According to Apple WWDC 2023 Session, ProMotion automatically switches frequency from 24 to 120 Hz to balance smoothness and power consumption. 8.3 ms is half the standard budget, requiring serious rendering optimization.

Key Takeaways

  • 120fps — frame rate of 120 frames per second with a rendering budget of 8.3 ms per frame
  • ProMotion — Apple’s technology with dynamic frequency from 24 to 120 Hz
  • LTPO displays — panels with low-temperature polycrystalline oxide supporting 1–120 Hz
  • Frame pacing — uniformity of frame output, critical at 120fps
  • Optimization for 120fps requires twice as efficient code as for 60fps

What is 120fps

120fps is double the standard frame rate, where the display updates the image 120 times per second. Each frame has a time budget of 8.33 ms — half that of 60fps. This means the GPU and CPU must process graphics twice as fast, and all algorithms that work within 16.7 ms at 60fps only fit at 120fps if they are twice as efficient.

The first mobile device with a 120 Hz display was the Razer Phone (2017) with Sharp’s IGZO panel. Apple introduced 120 Hz in the iPad Pro (2017) under the name ProMotion, and in iPhones only in 2021 with the iPhone 13 Pro. On Android, 120 Hz became mainstream starting in 2020: Samsung Galaxy S20, OnePlus 8 Pro, Xiaomi Mi 10. Today, 90–120 Hz is the standard for flagship devices, and LTPO technology enables dynamic frequency switching.

User perception of 120fps differs from 60fps not so much by the absence of stutter, but by the feeling of instant response — the cursor, scrolling, and animations follow the finger with minimal latency. This feeling is often described as a “liquid” or “oily” screen. After using 120 Hz, returning to 60 Hz subjectively feels like lag, even if there are no objective frame drops.

How 120 Hz displays work

A 120 Hz display physically updates pixels 120 times per second, sending a signal over the MIPI DSI/DPI bus at double frequency. Each pixel receives a new brightness value every 8.3 ms. For OLED panels, this means that the emission time of each subpixel is reduced, requiring brighter backlight to maintain the same image brightness.

LTPO technology

LTPO (Low-Temperature Polycrystalline Oxide) is an OLED display manufacturing technology that combines LTPS (high switching speed) and IGZO (low static power consumption). LTPO allows the display to dynamically change its refresh rate from 1 to 120 Hz without additional power cost. In Always-On Display mode, the frequency drops to 1 Hz; during scrolling, it rises to 120 Hz. This provides energy savings of up to 30% compared to displays constantly running at 120 Hz.

Frame Pacing at 120fps

Frame pacing — the uniformity of intervals between frames, is the most important parameter at 120fps. While at 60fps a 2–3 ms difference between frames is unnoticeable, at 120fps the same absolute difference accounts for 25% of frame duration and is perceived as stutter. For smooth 120fps, each frame must fit within 8.3 ms ±1 ms. Tools like FrameRate in Xcode Instruments show not only the average FPS but also a histogram of intervals for evaluating frame pacing.

swift
// iOS — detecting 120 Hz display via CADisplayLink
func checkDisplayRefreshRate() {
    let link = CADisplayLink(target: self,
                                  selector: #selector(step))
    if let preferredRate = link?.preferredFrameRateRange {
        print("Max frequency: \("preferredRate.maximum) Hz")
    }
}

ProMotion in iOS

ProMotion is Apple’s trademark for displays with adaptive refresh rates up to 120 Hz. First introduced in the iPad Pro 10.5 (2017), it later appeared in the iPhone 13 Pro (2021) and MacBook Pro (2021). ProMotion is not just 120 Hz — it is intelligent frequency management: the system analyzes the type of content and switches the frequency for the optimal balance of performance and power consumption.

ProMotion operating modes

ProMotion supports four modes: 24 Hz for static content and 24fps video, 30 Hz for 30fps video, 60 Hz for UI navigation, and 120 Hz for scrolling and gaming. Switching between modes happens within a single frame (8.3 ms) and is imperceptible to the user. Developers can influence frequency selection via preferredFrameRateRange in CADisplayLink, but the final decision is made by the system based on content analysis.

API for developers

Apple provides APIs for working with ProMotion starting from iOS 15. CADisplayLink.preferredFrameRateRange allows setting a preferred frequency range. UIScene.ActivationConditions can affect the frequency when transitioning between scenes. For Metal rendering, CAMetalLayer.displaySyncEnabled must be true for synchronization with ProMotion. If an app is not optimized for 120fps, iOS automatically switches it to 60 Hz, which can be seen in Xcode under the GPU Report section.

swift
// iOS — requesting 120fps for gaming mode
let displayLink = CADisplayLink(
    target: self,
    selector: #selector(gameLoop)
)
if #available(iOS 15.0, *) {
    displayLink?.preferredFrameRateRange =
        CAFrameRateRange(minimum: 80,
                          maximum: 120,
                          preferred: 120)
}
displayLink?.add(to: .current,
                    forMode: .default)

Optimization for 120fps

Optimization for 120fps is not just about doubling code speed, but rethinking the rendering architecture. Operations that fit within 16.7 ms at 60fps must now complete in 8.3 ms. This affects all stages of the pipeline: CPU preparation, GPU rendering, and system calls.

Reducing draw calls for 120fps

At 120fps, the number of draw calls per frame must be half that at 60fps to maintain the same GPU load. If 400 draw calls are acceptable at 60fps, then at 120fps no more than 200 are allowed. Use texture atlases, mesh merging, and GPU instancing to reduce draw calls. On Metal, use Indirect Command Buffers; on Vulkan, use Secondary Command Buffers for parallel command recording.

Shaders — another critical factor. Complex pixel shaders with multiple texture lookups and mathematical operations can easily exceed the 8.3 ms budget. Use low-precision shaders (half instead of float), reduce the number of instructions and texture samples. On mobile GPUs (Apple A17, Snapdragon 8 Gen 3), each texture lookup takes 2–4 cycles, and at 120fps this can become a bottleneck.

CPU and Main Thread

At 120fps, the main thread must prepare a frame in 4–5 ms to leave time for GPU rendering. Any synchronous operation on the main thread — reading from a database, JSON parsing, image loading — creates stutter. Move all heavy operations to background threads, use asynchronous APIs and thread pools. In iOS, DispatchQueue with qualityOfService .userInteractive should be reserved only for critical rendering code.

Component120fps budget60fps budget
CPU (main thread)4 ms8 ms
GPU rendering4 ms8 ms
Compositing0.3 ms0.7 ms
VSync wait0–2 ms0–5 ms

120fps vs 60fps

Comparing 120fps and 60fps is not just about doubling smoothness. The difference is perceived differently depending on the type of content. For scrolling and UI animations, 120fps provides a subjectively more “responsive” interface. For gaming, the advantage of 120fps is evident in reduced motion blur and more accurate tracking of fast objects.

Power consumption — the main trade-off. 120fps consumes 30–50% more power than 60fps at the same display brightness. This means that on a 4000 mAh battery, an hour of gaming at 120fps drains the battery about 25–30% faster. LTPO displays partially solve the problem by reducing the frequency in static scenes to 1 Hz, but during active use (scrolling, gaming) the frequency stays at maximum.

The choice between 60fps and 120fps depends on developer priorities. For social networks, messengers, and news apps, 120fps does not provide a significant advantage — the main interaction (reading, text input) does not benefit from ultra-smoothness. For games, maps, graphics editors, and apps with intensive animation, 120fps becomes a competitive advantage and a quality marker.

Testing 120fps requires a special approach: standard 60fps metrics do not reveal frame pacing issues at 120 Hz. Use a high-speed camera (120+ fps) to record actual screen behavior or built-in platform tools — Xcode Metal Capture for iOS and AGI (Android GPU Inspector) for Android. These tools show the exact time of each frame, including VSync wait, and help identify micro-stutters.

Frequently Asked Questions

Is 120fps always better than 60fps?

Not always. 120fps requires twice the energy and computing resources. For static content and simple UIs, 60fps is sufficient. The advantage of 120fps is noticeable in dynamic scenes: scrolling, gaming, transition animations.

How to check if an app is running at 120fps?

Use Xcode Instruments (Core Animation template) or Android Studio Profiler. On iOS, check CADisplayLink.timestamp — the interval between calls should be around 8.3 ms. On Android, enable Show refresh rate in Developer Options.

Why does 120fps drain the battery faster?

The display updates pixels twice as often, the GPU performs twice the rendering operations, and the CPU processes twice as many frames. Each operation consumes energy. LTPO displays reduce frequency in static scenes, but during active use, power consumption increases proportionally to the frequency.

Can an app run at 120fps on Android?

Yes. Starting from Android 11, the system supports different refresh rates. Developers can request 120 Hz via WindowManager.setPreferredRefreshRate. However, not all devices can stably maintain 120fps — GPU rendering optimization is necessary.

Will the average user notice the difference between 60 and 120fps?

In a blind test, most users do notice the difference during scrolling and animations. However, for everyday use (social media, video, messengers), the difference is subjectively small. After getting used to 120 Hz, returning to 60 Hz feels sluggish.

Summary

  • 120fps — frame rate with an 8.3 ms budget for ultra-smooth animation
  • ProMotion — Apple’s adaptive technology with a 24–120 Hz range
  • LTPO displays dynamically change frequency from 1 to 120 Hz to save energy
  • Frame pacing is critical at 120fps — unevenness of 2–3 ms is already noticeable
  • Draw calls at 120fps should not exceed 200 per frame
  • Power consumption at 120fps is 30–50% higher than at 60fps
  • Choosing 120fps is justified for games, maps, and apps with intensive animation

We will develop a mobile application turnkey

IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.

Discuss the project

Read also