Hysen Labs
Open-source project
PoomSmart/CAHighFPS avatar
PoomSmart

CAHighFPS

Makes your CoreAnimation applications use the highest available FPS.

40 stars6 forksLogosMIT
DEEP OPEN-SOURCE ANALYSIS

CAHighFPS: raise the frame rate of CoreAnimation apps

CAHighFPS lets jailbroken iOS devices run CoreAnimation apps at the highest refresh rate available.

What CAHighFPS changes

CAHighFPS makes CoreAnimation applications use the highest available frames per second, or a custom rate you choose. The README explains the problem it solves by quoting Apple's description of CADisplayLink, a timer object that lets an app synchronize its drawing to the display refresh rate. The README notes that A5 devices, the iPhone 4s and iPad 2, were the first to introduce a 60 Hz refresh rate, and that applications can run at their best at 60 frames per second. Some applications choose a frameInterval value of 2, which renders at 60 divided by 2, or 30 FPS, which the README says does not make sense on devices capable of higher rates. CAHighFPS enforces frameInterval so the effective rate matches the chosen FPS, using 1 when the display maximum is selected. The README also covers preferredFramesPerSecond, the replacement CADisplayLink property that until iOS 15.0 takes over from frameInterval. By adjusting these values, the tweak raises the render rate of apps that otherwise cap themselves low on capable hardware. The README quotes Apple's own CADisplayLink description to define the problem, so the explanation stays anchored to the official framework behavior rather than to guesswork about how drawing is timed on screen.

Settings you can adjust

The README describes a Settings panel reached at Settings, then CAHighFPS. The FPS control is a slider from 0 to 120. A value of 0, which is the default, uses the highest refresh rate of the device. Any other value is forced for enabled apps and is clamped to the display's maximum. A Systemwide switch applies the chosen FPS to every app except SpringBoard and those in the Blacklisted Apps list. It is off by default so existing per app selections keep working. An Applications list acts as a whitelist used when Systemwide is off, so only those apps get the chosen FPS. A Blacklisted Apps list names apps that are skipped when Systemwide is on. The README reminds users to reopen an app after changing settings for the new rate to take effect. These four controls, the FPS slider, Systemwide, Applications, and Blacklisted Apps, give the user both global and per app control over the frame rate, which covers most real usage patterns without needing to edit configuration files. Reopening an app after a settings change is called out explicitly, which tells the user that the new rate only applies once the targeted app restarts and reloads its own display link from the beginning.

How the frame rate is enforced

The README explains enforcement through two CADisplayLink properties. The older one is frameInterval, now deprecated, which developers set to limit FPS. If frameInterval is 1 the FPS is 60, following the logic of the setFrameInterval method the README references with an image. CAHighFPS enforces frameInterval so the effective rate equals the chosen FPS, using 1 when the display maximum is selected. The newer property is preferredFramesPerSecond, which substitutes for frameInterval up to iOS 15.0. If it is set to zero the system tries to match the display's maximum, and otherwise it uses the given value. The README describes how the tweak targets these properties so that applications which hard code a low frameInterval still render at the device's capability. The documentation stays technical and references Apple's own CADisplayLink documentation for the definitions. The result is that the user's slider choice is translated into the correct CADisplayLink setting for each supported app, whether through the old or the new property. The split between frameInterval and preferredFramesPerSecond covers old and new iOS versions, so the tweak can enforce the rate whether the app uses the deprecated property or the current one Apple recommends. This dual property handling is why the tweak works across a wide range of iOS apps regardless of the CADisplayLink API each one was built against.

Editorial conclusion

CAHighFPS is written in Logos and is released under the MIT license. It is configured from Settings, where an FPS slider runs from 0 to 120.

DEEP OPEN-SOURCE ANALYSIS

Official sources

Community notes

Community notes