Accessibility

Working toward WCAG 2.2 AA. Showing our work.

An accessibility statement that's actually a status report — what's done, what's in progress, and where you can tell us we got it wrong.

Last reviewed · April 30, 2026

Our commitment

Accessibility is a feature.

Vibes is designed for people who use VoiceOver, Switch Control, Dynamic Type, AssistiveTouch, and every other accessibility tool Apple ships. We test on real devices with real adaptive technology — not because compliance demands it, but because the people who depend on it deserve a music app that works as well for them as it does for anyone else.

We aim for WCAG 2.2 Level AA across the iOS app and this website. We're not perfectly there yet. The list below is honest about both.


In the iOS app

What we do today.

VoiceOver. Every interactive element has an accessibility label, hint, or trait. Custom controls expose semantic role. The "play" button announces "Play preview of [song] by [artist]" rather than "button."

Dynamic Type. All text scales with the user's preferred text size, including the editorial display type. We test up to AccessibilityXXXL.

Reduce Motion. When Reduce Motion is on, all animations swap to instant transitions. Our scrollable hero parallax is disabled. Drift animations stop. Particle effects don't fire.

Increase Contrast. All text/background combinations meet WCAG AA contrast ratios at default sizes. Increase Contrast bumps every gray to full white.

Reduce Transparency. Liquid Glass surfaces fall back to solid materials.

Haptics. Used as supplementary feedback, never as the only confirmation of an action.

Audio descriptions. Songs in Vibes are real songs from streaming services — they include lyrics where the streaming partner provides them. Audio descriptions for video content (we don't have any yet) will be added when we do.


On this website

Web side. Same rules.

Semantic HTML. Real headings, real lists, real landmark regions. Skip-to-content link on every page. Page titles are unique and descriptive.

Keyboard navigation. Every interactive element is keyboard reachable in a sensible order. Focus indicators are visible (we don't strip the default outline).

Color contrast. All text passes WCAG AA at default size. Display headlines pass AAA at most viewport widths.

prefers-reduced-motion. Honored across all animations on the site. Bento card hover lifts disabled. The hero parallax disabled.

Alt text. Every meaningful image has alt text. Decorative images have alt="".

Forms. Every input has a real <label>. Error messages are announced via aria-live.


Known issues

Honest about what's broken.

— The animated waveform in the playable hero demo doesn't currently expose its state via VoiceOver beyond the play/pause status.
— The horizontal scroll-snap on the mobile bento has poor swipe-target alignment for Switch Control users in some configurations. We're working on it.
— A few historical blog posts have non-descriptive link text ("read more"). We're rewriting them on the next pass.

If you hit something we missed, email accessibility@vibes.app. We don't get this right by ourselves.


Standards

What we measure against.

— WCAG 2.2 Level AA
— Apple's iOS Accessibility Programming Guide
— EN 301 549 (EU accessibility directive) for the website

We run automated checks (axe, Lighthouse) on every deploy. Manual screen-reader walkthroughs happen quarterly with VoiceOver on iOS and macOS.

Report an issue