Developers Must Opt In To 120Hz Animations On iPhone 13 Pro


As a general rule, for better visual appearance use faster refresh rates when animating fast-moving items that travel across large areas of the screen. But, if you’re animating a smaller item that doesn’t move over a great distance, but “animates in place”, that typically doesn’t benefit from a high refresh rate. You can use slower refresh rates when animating smaller items without any impact to the visual appearance. Selecting the right animation speed is always a tradeoff between a smoother visual appearance and saving energy. As a guiding principle, strive for the lowest animation speed possible while maintaining good visual appearance.

If it wasn't for the PR stink on Friday, presumably this documentation would have taken even longer to appear.

This documentation should have been made available alongside the iOS 15 and Xcode 13 Release Candidate a week ago. Because it wasn’t, app developers didn’t even have a chance to get their software ProMotion-ready for iPhone 13 launch day. Indeed, the lack of published documentation meant that everyone assumed that adopting 120Hz would be done automatically by the system. This is how it works on the iPad Pro, which has supported ProMotion since 2017. But for the iPhone 13, high frame rate animation is actually gated twice, firstly by a global Info.plist key and secondly by the fact that each individual animation in the codebase will need to be audited and marked as wanting high refresh rate pacing.

All apps will see ProMotion benefits when the user is actively interacting with the display and generating touch events, which thankfully means scrolling is always ultra-responsive and fluid across the system.

However, this also puts an onus on developers to meticulously check all the animations in their app and do the code changes where it makes sense. 60 FPS animations in app like Twitter will stick out like a sore thumb if the user has just finished scrolling their timeline at a smooth 120 FPS rate. The stark contrast could even make it feel like the app is lagging, as the user’s brain becomes accustomed to seeing smoother motion. Whilst the work needed to opt-in is only one line of code, it is a pretty laborious task to do that for every animation in an app and I fear that very few developers will bother. Even for someone who cares, it’s an easy thing to forget when adding a feature or implementing a new screen of an app.

Clearly, Apple believes the benefit to battery life is worth the pain of enforcing selectivity. The second half of this document actually recommends not adopting 120Hz indiscriminately and reserving its use for “high-impact animations” only. That is, animations that cause significant on-screen content changes like a full-screen wipe to a new page. I guess we will have to trust their judgement on this, but it definitely should have been accompanied by better communication as it is such a big departure from the precedent set by ProMotion on the iPad Pro.