A Complete Guide to Analyzing Variable Refresh Rates and Stuttering in iOS Games with Keymob


1. Core Concepts

1.1 Variable Refresh Rate (ProMotion)

iOS devices (such as iPad Pro, iPhone 13 Pro, and newer models) support adaptive refresh rates between 10Hz and 120Hz. The screen dynamically adjusts its refresh rate based on the content to balance smoothness and power consumption.

1.2 Stuttering Detection (Frame Pacing Analysis)

Apple introduced frame stability analysis in iOS 15+, which tracks frame submission times to determine smoothness. The difference between FPS and stuttering detection:

Metric FPS (Frame Rate) Stuttering Detection
Focus Total frames rendered per second Stability of frame submission times
Scene Sensitivity May drop to 0 during idle times Always reflects real user interaction
Common Issues High average FPS with stuttering Accurately captures dropped frames and rendering delays

2. Step-by-Step Process

2.1 Entering the Monitoring Interface
2.2 Enable Monitoring Metrics
2.3 Start Monitoring
2.4 Data Analysis

3. Key Considerations

  1. Device Requirements

    • Variable refresh rate monitoring is only supported on iPhone 13 Pro and newer models
    • “Developer Mode” must be enabled (Settings → Privacy & Security → Developer Mode)
  2. Key Points for Data Interpretation

    • A brief drop to 24Hz may be normal for video playback adaptation
    • Games should prioritize frame stability rather than blindly chasing 120Hz
  3. Performance Optimization Tips

    • Use CAShapeLayer instead of UIBezierPath for high-frequency UI updates
    • Set layer.shouldRasterize = true for static elements

4. FAQ

Q1: The refresh rate on the monitor always shows 60Hz?
Q2: Stuttering occurs frequently but FPS appears normal?
Q3: How to distinguish between system stuttering and app stuttering?