Last updated: May 8, 2026
Onyx is designed to be usable by everyone, including people who use VoiceOver, Reduce Motion, Dynamic Type, and other iOS accessibility features. This page describes what we've done and what to do if something doesn't work for you.
What we've built in
VoiceOver support
- Every interactive element has a descriptive accessibility label
- Recovery score, macro rings, and chips are grouped so VoiceOver reads them as a single coherent unit instead of disjointed numbers
- Decorative elements are hidden from VoiceOver
Reduce Motion
- Honors
UIAccessibility.isReduceMotionEnabled plus an in-app toggle in Settings → Preferences → Reduce motion
- When reduced, animations are collapsed to instant: the morning recovery reveal, ring closure celebration, post-workout shimmer, illness alert pulse, and weekly time-lapse all become snap transitions instead of motion
- Functional content remains animated only when needed for clarity (e.g., loading spinners)
Dynamic Type
- All body text scales with the system text size
- Layouts reflow to avoid truncation at the largest accessibility sizes
Touch targets
- All buttons meet or exceed the 44×44pt minimum (Apple HIG)
- Small icons in lists are wrapped in 44pt hit areas even when the visual is smaller
- Touch targets have at least 8pt spacing between them
Color and contrast
- Body text meets WCAG 2.1 AA contrast (4.5:1) on both light and dark backgrounds