F7.08.1Honour prefers-reduced-motiondesign

The OS reduced-motion setting must be honoured

Aliases: Reduce Motion · prefers-reduced-motion · system motion switch

What it is

The OS control labelled Reduce Motion (or equivalent) is a capability statement the user has already made. It is not a theme toggle and not a taste vote on decoration. Playing large translations, parallax or spring-scales on top of it overwrites that statement. Honouring it means: after reading the preference, stop motion that moves large pixel fields, or replace it with a non-travel alternative — not hiding another switch inside the app for the user to hunt down.

Why it happens

The setting lifts “I cannot safely digest large optic flow” out of per-app hidden options and into a system-level contract. Sources include vestibular sensitivity, migraine, attention easily captured by motion, and simply saving power or reducing distraction. An app cannot tell from one session which of those is in play, so it cannot decide “this clip is fine.” The enforcement point is a media query or system API: not querying is equivalent to assuming the user can take the product’s most aggressive optic flow.

An in-app “motion on/off” that defaults to on makes people who already declared at the system pay a second search cost. When the two switches disagree, they cannot predict whether the next release will still respect the OS.

This leaf is about whether the contract is executed. Why large travel makes people ill is a vestibular-conflict question. An implementer who feels fine still exposes everyone who has already declared.

Where it stops holding

  • Older devices without the setting cannot be “honoured”; the app needs an equivalent control, still defaulting safe on sensitive paths.
  • After the user turns reduced motion off at the OS, the app should not keep forcing the weakest path — the contract runs both ways.
  • Motion that is the content of a game or a film can stay; the interactive shell around it should still honour the preference.

Applying it

  • Read the OS reduced-motion preference before starting motion. If set, take the no-large-travel branch; do not merely show a settings sentence that “suggests you turn it off.”
  • Do not require a second declaration inside the app. An in-app switch, if it exists, may only tighten further, never exceed the OS.
  • Check: enable the OS setting and walk the main paths. Full-page translation, parallax or spring-scale still running means the contract was overwritten.

Related

  • Same group: F7.08.2 Reduced is not off; a fade can replace travel · F7.08.3 Critical state changes must remain perceptible under reduced motion
  • Nearby: F7.09 Parallax and vestibular discomfort · J4.08.1 Autoplay and animation must be dismissible
  • Search terms: prefers-reduced-motion · reduced motion · OS motion setting

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/F7.08.1