Accessibility

Last updated: September 1, 2026

Klepto works toward WCAG 2.1 Level AA conformance on iPhone, iPad, and Mac. The app is built on Apple’s native SwiftUI, which gives us VoiceOver, Switch Control, Dynamic Type, and Reduce Motion / Increase Contrast support out of the box; we add labels, contrast adjustments, and gesture alternatives on top.

What works today

  • VoiceOver — every actionable control has a meaningful label. Icon-only decorative chrome is hidden from the screen reader so it doesn’t clutter narration.
  • Dynamic Type — all text scales with the system size setting, including custom fonts (they use relativeTo: so they honor the user’s preference).
  • Reduce Motion — animations skip cleanly when the setting is on. The app respects UIAccessibility.isReduceMotionEnabled at every meaningful transition.
  • Increase Contrast — small-font secondary text bumps to a higher-contrast tint. The “expired banner” and other tinted UI use adaptive colors that clear 4.5:1 in both light and dark modes.
  • Photo reorder without gestures — drag-to-reorder in the add-item photo strip has a VoiceOver-friendly alternative (Move up / Move down actions).
  • Live announcements — save, error, identify complete, and item-count changes get announced via UIAccessibility.post so VoiceOver users hear state changes.
  • Keyboard on Mac — sheet Cancel closes with Escape, primary actions commit with Return, and every button is reachable via Tab with a visible focus indicator.

Known gaps

  • Full app-wide device audit on every release — we run a pre-submit checklist that covers new / changed screens; older screens that haven’t been touched since the last audit aren’t re-verified every cycle.
  • Admin dashboard at admin.klepto.io is not accessibility-audited — it’s a solo-use developer surface, not user-facing.

How to report an issue

Anything Klepto’s accessibility support gets wrong is a bug. Email [email protected] with what you were trying to do, what assistive tech you had on, and the screen or scan involved. We’ll respond within a few days.