LoyaltyCards is committed to ensuring digital accessibility for all users, including those with disabilities. We strive to continually improve the user experience for everyone and apply relevant accessibility standards.
🟡 Partial Compliance. LoyaltyCards is partially conformant with WCAG 2.1 Level AA — some parts of the application do not yet fully conform.
Basic support via iOS defaults, supplemented August 31, 2026 with targeted work on the highest-traffic screens of both apps. Customer app: loyalty card list items and the card detail stamp grid now expose one combined, accurate description instead of many unlabeled elements; previously-unlabeled icon buttons (flashlight, settings, search-clear) got semantic labels; the QR code image itself now describes what scanning it will do. Supplier app: previously-unlabeled icon-only buttons (back navigation, settings, flashlight toggles, stamp-count +/-) got tooltips. This was a targeted pass on specific screens, not an exhaustive audit — custom widgets elsewhere in either app may still lack semantic labels.
Body text scales with system settings; some headings use fixed sizes; QR code size doesn't scale (functional limitation); card layout may break at extreme text sizes (200%+).
The app follows the device's system light/dark appearance (both apps' main.dart wire up real, distinct light/dark ColorScheme objects, defaulting to system mode), but there is no in-app toggle to choose Light/Dark/System independent of the device setting. Verified July 20, 2026: every text-color usage most likely to cause an illegible-text bug in dark mode (21 instances across both apps, all using the app's branded `BrandColors.textPrimary`/`textSecondary` symbols) was checked against its background — all of them pair fixed text with a fixed background (branded info/success/warning badges), so none go illegible in dark mode. This is a deliberate, pre-existing pattern, not an oversight. The visible effect is that these badges keep a fixed light background regardless of theme, so in dark mode they can look like a light-colored card on an otherwise dark screen — a style inconsistency, not a legibility problem. That check's scope had a real limit, though: two separate, genuinely invisible-text bugs were later found and fixed on the "Tell a Friend"/"Tell a Business" screen shared by both apps — neither used the symbols the check covered. One (found August 30) was a hardcoded dark headline color invisible on the dark background; the other (found August 31, while capturing Play Store screenshots) was a missing app-bar text color that defaulted to dark-on-dark. Both are fixed now, but their existence means "verified" above should be read as "no issues found in the specific pattern checked," not "no dark-mode legibility bugs anywhere."
Users with visual impairments cannot scan QR codes independently, and there's currently no non-visual alternative. Workaround: request assistance from business staff, or have the business scan the customer's QR code and verbally confirm details. Voice-guided scanning and manual code entry are potential future enhancements, not currently scheduled. NFC as a non-visual alternative would require architecture changes and is not on the current product roadmap.
Cards use color and layout to convey information, which can be harder for color-blind or screen-reader users. Business name and stamp count are always present as text, mitigating this partially.
VoiceOver support relies mostly on iOS defaults, with targeted custom work (August 31, 2026) on each app's highest-traffic screens — not yet a comprehensive pass across either app. Mitigations: all buttons have text labels, navigation is linear and predictable, and success/error/info/warning messages now announce automatically app-wide via the apps' shared feedback component.
See "Dark Mode" above — branded callout badges keep a fixed light background regardless of theme (verified as a style issue, not a legibility one), and users cannot force a light/dark mode independent of their device setting.
Manual testing has covered basic VoiceOver navigation, Dynamic Type at system sizes, Reduce Motion, manual WCAG contrast checks, and touch target measurement. Not yet run as part of CI/CD, but the August 31, 2026 semantic-labeling work has one dedicated automated widget test asserting on the actual semantics tree (not just visible text) for the Customer app's wallet home screen — no broader automated accessibility testing exists yet, and no formal audit or testing with users who have disabilities has been performed. Notably, neither invisible-text dark-mode bug described under "Dark Mode" above was caught by a dedicated accessibility pass — both were found through ordinary manual use.
| Level | Status |
|---|---|
| A | Partially Conformant |
| AA | Partially Conformant |
| AAA | Not Conformant |
Evaluation Method: self-assessment (manual testing + targeted code review). Last Evaluation: April 18, 2026 (general); dark-mode legibility risk specifically re-checked July 20, 2026; VoiceOver semantic-labeling and live-region work landed August 31, 2026; this page corrected September 7, 2026 to log two invisible-text dark-mode bugs found and fixed after the July check. Next Evaluation: before the final pre-submission build, covering the remaining open roadmap items.
Relevant standards we track: Americans with Disabilities Act (ADA) Title III and Section 508 in the US; WCAG 2.1 and EN 301 549 internationally; Apple's iOS Human Interface Guidelines and App Store Review Guideline 2.5.18 (Accessibility). We are actively working toward full WCAG 2.1 Level AA compliance.
Email: ian.hamlet@dotconnected.com — subject line "Accessibility Issue - [App Name]". Please include which app, device/iOS version, assistive technology used (if any), and a description of the barrier. We aim to respond within 48 hours.