Why it matters
People with vestibular disorders can get nauseous from motion; the OS setting exists for them. Without handling it, all entrances, parallax and ambient loops still run.
How to fix it
Honor the preference: motion-reduce: / motion-safe: variants, a global @media (prefers-reduced-motion: reduce) rule, or useReducedMotion() / . Show the finished state instead of hiding content.
Example
@media (prefers-reduced-motion: reduce) {
*, ::before, ::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; }
}References
More lint rules
void lint reports 67 rules in this category. Static source checks with no browser: Tailwind v4 silent failures, Next.js 16 API traps, React render-body bugs, accessibility markup, SEO files and motion hygiene.
scale-zero-entryElement enters from `scale(0)`scroll-timeline-no-fallbackBase rule hides an element; only an `@supports (animation-timeline: …)` block undoes itease-in-enter`ease-in` used for an entrance or hoverlong-ui-durationUI feedback transition longer than 500msoverflow-x-hidden-sticky`overflow-x: hidden` on html/body/root wrapper breaks `position: sticky`vh-heroHero sized with `100vh` / `h-screen`will-change-static`will-change` applied statically to many elementsz-index-soupMany distinct z-index values