Reduced Motion
Many users prefer minimal or no animations due to:- Vestibular disorders
- Motion sensitivity
- Distraction or cognitive load
- Battery conservation
- Slow devices
prefers-reduced-motion system preference.
useReducedMotion Hook
Respond to user preferences:Global Reduced Motion
Apply reduced motion site-wide:reducedMotion="always":
- Spring animations become instant
- Duration-based animations complete immediately
- Layout animations still work but without transition
Implementation
Motion tracksprefers-reduced-motion automatically. From reduced-motion/index.ts:9-21:
Semantic HTML
Motion components render standard HTML elements:ARIA Attributes
Animation states should be communicated:Focus Management
Maintain logical focus flow:Keyboard Navigation
Ensure interactive elements are keyboard accessible:Drag Accessibility
Draggable elements need keyboard alternatives:Live Regions
Announce dynamic content changes:Animation Duration Guidelines
Follow WCAG duration recommendations:Color and Contrast
Ensure animated elements maintain contrast:Testing Accessibility
Manual Testing
- Keyboard only - Navigate without mouse
- Screen reader - Test with VoiceOver/NVDA/JAWS
- Reduced motion - Enable in system preferences
- High contrast - Test in high contrast mode
- Zoom - Test at 200% zoom
Automated Testing
Best Practices
Reduced Motion Strategies
Crossfade Instead of Slide
Simplify Complex Animations
Maintain Feedback
Even with reduced motion, provide visual feedback:Resources
Next Steps
Performance
Optimize for all devices
Spring Animations
Create natural motion
Drag Interactions
Add accessible gestures
Layout Transitions
Smooth layout changes