Supporting Reduced Motion accessibility setting in SwiftUI
Learn how to respect system settings for reduced motion to improve usability for motion-sensitive users.
14 Jul 2025 · 3 min read
The goal of supporting the Reduced Motion setting is to support users who are sensitive to visual motion. Motion sensitivity can cause discomfort such as nausea, dizziness, or headaches, especially when animations include scaling, spinning, or rapid movement.
Let's look at how we can support Reduced Motion in our iOS apps.

Users can enable this setting in the iOS Settings app under Accessibility → Motion → Reduce Motion. If enabled, users may also choose to Prefer Cross-Fade Transitions, which replaces more intense system animations with simple fade transitions, for example, when opening or closing apps.
We can respect this setting by reducing or disabling non-essential animations in our apps, especially those that serve decorative or transitional purposes.
SwiftUI provides the accessibilityReduceMotion environment value, which we can use to check whether Reduced Motion is enabled:
@Environment(\.accessibilityReduceMotion) private var reduceMotion
With this, we can conditionally modify animations based on the user’s preference:
struct AnimatedLogo: View {@Environment(\.accessibilityReduceMotion) private var reduceMotionvar body: some View {Image(systemName: "star.fill").rotationEffect(reduceMotion ? .zero : .degrees(360)).animation(reduceMotion ? nil : .linear(duration: 1).repeatForever(autoreverses: false),value: reduceMotion)}}
In this example, if Reduce Motion is enabled, the animation is disabled entirely. Otherwise, the image spins continuously.
We could also consider switching to simpler transition styles, like using .opacity instead of .scaleEffect or .offset, to respect the user's preference while maintaining functional transitions.
Note: If we also wanted to check whether Prefer Cross-Fade Transitions is enabled, we can use UIAccessibility.prefersCrossFadeTransitions. There's currently no environment value available for that setting in SwiftUI.



Newsletter
Like to support my work?
Say hi
Related tags
Articles with related topics
Latest articles and tips



