AXS-49Recommended
Follow the system setting for less motion
When Reduce Motion is on in iOS or Remove animations is on in Android, replace zooms, slides and parallax with a fade or nothing.
How to do it
Apple's guidelines say motion can cause dizziness and should shrink when the setting is on. Read accessibilityReduceMotion in SwiftUI or UIAccessibility.isReduceMotionEnabled in UIKit. On Android, Remove animations sets the animator duration scale to 0, and ValueAnimator.areAnimatorsEnabled() returns false. Check the setting in your own animation code too, since custom animations do not follow it by themselves. The web version is Respect people who turn motion off.
Examples
Plain text example
@Environment(\.accessibilityReduceMotion) private var reduceMotion
var transition: AnyTransition { reduceMotion ? .opacity : .move(edge: .trailing) }
Kotlin example
val animate = ValueAnimator.areAnimatorsEnabled()
val transition = if (animate) slideInHorizontally() else fadeIn(tween(durationMillis = 0))
How to check
A UI test runs each main flow with the setting on. Every screen transition uses a fade or none, and no view animates its position or scale.
Sources
- Apple – isReduceMotionEnabled
- Android – ValueAnimator.areAnimatorsEnabled
- WCAG 2.2 – 2.3.3 Animation from Interactions
Related rules
- AXS-41 Respect people who turn motion off in Accessibility
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/accessibility/native-apps/native-reduced-motion">Agent Wranglers accessibility playbook</a>. In code you write, add a comment next to it with the same link.