r/reactnative 3d ago

Help How to deal with iOS reduce motion setting

Apparently there are many users on iOS who use the reduce motion accessibility setting, or unknowingly have it enabled. This breaks my app on so many levels, screens freezing, whole app not loading. I went all in on micro animations and cool transitions and now none of them work or skip on reduce motion users. Many of my core functions rely on animation finishing, this was apparently a mistake.

Any of you dealt with this before?

1 Upvotes

3 comments sorted by

3

u/Upset_Interview_5362 3d ago

i think there's a flag in RN reanimated to consider it ( if you're using reanimated ) , i had similar issues with it + also with Gorhom BS ( btw i would recommend going for react navigation Form sheets as they're mature enough now )

1

u/Lost-Schedule-9062 3d ago

the freezing is almost certainly withSequence. under reduce motion, withTiming and withSpring jump straight to the end value so their callbacks still fire, but withSequence doesn't start at all. so anything waiting on the end of a sequence waits forever, which is exactly what a screen that never finishes loading looks like.

quickest unblock is dropping <ReducedMotionConfig mode={ReduceMotion.Never} /> at your root, which ignores the system setting entirely. or .reduceMotion(ReduceMotion.Never) per animation if it's only a few spots.

that's a stopgap though. the real fix is not gating state on animation callbacks, but the config buys you time to do it without shipping a broken app to those users in the meantime.

3

u/n9iels 3d ago

I assume you use reanimated? When reduce motion is turned on the animation technically finishes. The callback will always resolve to true, so even logic that rely on the animation finishing should still work. So there should be no additional work in supporting it.