---
title: "Animations keep running with prefers-reduced-motion (smooth/reduced-motion-ignored)"
description: "smooth/reduced-motion-ignored: People with vestibular disorders set reduce motion to avoid nausea and dizziness; infinite or large animations must stop for…"
canonical: https://void-design.vercel.app/rules/smooth/reduced-motion-ignored
lastModified: 2026-09-16
---

# Animations keep running with prefers-reduced-motion

`smooth/reduced-motion-ignored` · severity **warn** · category Smoothness · detected by `void smooth` and `void audit`

## Why it matters

People with vestibular disorders set reduce motion to avoid nausea and dizziness; infinite or large animations must stop for them (WCAG 2.3.3).

## How to fix it

Wrap non-essential motion in @media (prefers-reduced-motion: no-preference) or disable it under reduce; in JS check matchMedia('(prefers-reduced-motion: reduce)') / useReducedMotion().

## Example

```
@media (prefers-reduced-motion: reduce) {
  *, ::before, ::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; }
}
```

## References

- https://www.w3.org/WAI/WCAG22/Understanding/animation-from-interactions

## More smoothness rules

`void smooth` reports 13 rules in this category. How the page feels after it loads: dropped frames during a scripted scroll, long animation frames, INP of real clicks, shifts after input, animated layout properties, idle rAF loops and reduced-motion handling.

- `layout-shift-after-input` Layout shifts long after an interaction — [smooth/layout-shift-after-input](https://void-design.vercel.app/rules/smooth/layout-shift-after-input)
- `layout-shift-on-scroll` Layout shifts while scrolling — [smooth/layout-shift-on-scroll](https://void-design.vercel.app/rules/smooth/layout-shift-on-scroll)
- `animate-layout-property` Animation of a layout-triggering property — [smooth/animate-layout-property](https://void-design.vercel.app/rules/smooth/animate-layout-property)
- `transition-all` transition: all — [smooth/transition-all](https://void-design.vercel.app/rules/smooth/transition-all)
- `will-change-overuse` will-change is applied too broadly — [smooth/will-change-overuse](https://void-design.vercel.app/rules/smooth/will-change-overuse)
- `raf-loop-idle` requestAnimationFrame loop runs while idle — [smooth/raf-loop-idle](https://void-design.vercel.app/rules/smooth/raf-loop-idle)
- `scroll-timeline-no-fallback` Content is invisible without scroll-driven-animation support — [smooth/scroll-timeline-no-fallback](https://void-design.vercel.app/rules/smooth/scroll-timeline-no-fallback)
- `multiple-webgl-contexts` Multiple WebGL contexts — [smooth/multiple-webgl-contexts](https://void-design.vercel.app/rules/smooth/multiple-webgl-contexts)

Detected by `void smooth` and `void audit`. Explain it in a terminal: `void rules smooth/reduced-motion-ignored`
