Skip to content

docs(馃摎): say which loops reach the display's full rate on iOS - #579

Merged
wcandillon merged 1 commit into
mainfrom
ios-frame-rate-docs
Oct 19, 2026
Merged

wcandillon merged 1 commit into
mainfrom
ios-frame-rate-docs

Conversation

@wcandillon

Copy link
Copy Markdown
Owner

Counterpart of react-native-skia PR 4273 (item 1 of react-native-skia discussion 4187).

No native change is needed here: a WebGPU view has no display link, the loop that calls present() sets the frame rate. The docs now say so where frames are presented and on the Worklets page: a loop on the Reanimated UI runtime or on a worklet runtime runs at the display's rate (120 Hz on a ProMotion iPhone or iPad), React Native's requestAnimationFrame on the JS thread runs at 60 Hz on iOS, and an app created from an Expo or React Native template before React Native 0.82 may still carry iOS's 60 Hz iPhone cap, pointing at Reanimated's "Enable 120 fps" guide for the Info.plist opt-in (Expo prebuild sets it since 2023, the React Native template since 0.82).

The example app opts in through a pod install hook: react-native-test-app generates the Info.plist from its own template and ignores ios.infoPlist in app.json unless config plugins are listed. Verified with a pod install, the generated plist carries CADisableMinimumFrameDurationOnPhone.

A worklet or UI-runtime loop presents at the display's rate, 120 Hz on ProMotion, while React Native's JS-thread requestAnimationFrame runs at 60 Hz on iOS; apps from templates older than React Native 0.82 may still carry the iPhone 60 Hz cap, documented through Reanimated's guide. The example app opts in from its Podfile since react-native-test-app takes no extra plist keys from app.json.
@wcandillon
wcandillon merged commit fe08e79 into main Oct 19, 2026
3 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant