VoiceOver
SupportedEvery interactive element has a label, hint, and value. Custom rotor for sentence-by-sentence transcript navigation. Audio playback no longer silences VoiceOver.
Tap targets, status changes, error states, and progress indicators all announce. The transcript view exposes a Sentences rotor so VO users can jump between sentences in a meditation or wellness exercise. Modal sheets and overlays each have an Escape custom action.
Voice Control
SupportedEvery button and control responds to its visible label. Radio groups, decks, and per-item context labels are wired so similar buttons disambiguate cleanly.
If a screen has two heart buttons (one on a meditation card, one on an affirmation), each has its own contextual label so Voice Control can target the right one without you reading out the index.
Larger Text (Dynamic Type)
SupportedThe app honors your Dynamic Type setting up to and including the largest accessibility sizes (AX1–AX5).
Buttons, inputs, paywall pricing, mini-cards, the home hero, and progress cards scale at runtime via @ScaledMetric. The rest of the app reads your Dynamic Type setting at launch, if you change the slider while the app is open, relaunch to see the new size.
Dark Interface
Not yetThe app has six themed palettes (default Moonstone, plus Garnet, Forest, Eucalyptus, Dawn, and Golden Hour) but does not yet adapt to the system Dark Mode setting.
Themes can be switched in Settings. A system-driven Dark Mode is a future project, every color token in the design system would need a light/dark variant.
Differentiate Without Color Alone
SupportedMood, achievement tier, progress, and streak indicators each use shapes, icons, or text in addition to color.
Mood tags use SF Symbols (leaf, link, bolt, sun, wind, moon, cloud, etc.). Achievement tiers render the tier name as text. Progress bars show 'Done' or a percentage. The weekly streak indicator uses three distinct dot shapes (filled with checkmark, outlined, subtle) plus the day-letter labels above each dot.
Sufficient Contrast
SupportedAll body text and iconography meet WCAG AA contrast across every theme. Primary CTA button labels meet AA-large at the rendered size (18pt semibold).
Contrast is verified by an automated test fixture (ContrastAuditTests) on every release branch. The fixture covers six themes and five token categories. One documented edge case: white-on-CTA-accent on five of the six themes sits between 3.93:1 and 4.22:1, below AA-normal (4.5:1) but above AA-large (3:1), which is the threshold for the button's rendered size.
Reduced Motion
SupportedThe app's centralized motion vocabulary honors your Reduce Motion setting. Looping breathing animations, ambient pulses, sync banners, and confetti are suppressed.
Reduce Motion users still see celebration moments (streak milestones, achievement unlocks) as static content with haptic and VoiceOver feedback, the celebration isn't skipped, just the scale and opacity sweep.
Captions
SupportedEvery meditation and wellness exercise has a full transcript. Meditation transcripts are time-synchronized to playback; wellness transcripts use sentence-level navigation.
Tap 'Read along' on the player to open the transcript. Each sentence highlights as it's spoken (meditation only). VoiceOver users can jump between sentences via the Sentences rotor (VO+R).
Audio Descriptions
Not applicableThe app has no video content. Audio descriptions only apply to videos.