Accessibility
Accessibility
Our commitment
Gallery Checkup is designed to be used by everyone, regardless of how they read, hear, move, or see. We test the app with iOS accessibility settings enabled and follow the Web Content Accessibility Guidelines (WCAG) 2.2 at the AA level where applicable to a native mobile app, plus Apple's Human Interface Guidelines for accessibility on iOS and iPadOS.
Supported assistive technologies
| Feature | What it does in Gallery Checkup |
|---|---|
| VoiceOver | Every photo, button, badge, and status indicator has a descriptive label. Decisions (Keep / Remove / Skip) are announced. Scan completion is announced with the number of bundles ready to review. |
| Voice Control | All buttons are individually nameable. Icon-only buttons (more options, clear, hear summary) have explicit labels so they can be activated by name. |
| Dynamic Type | All text scales with the system text size, including the largest five "Accessibility Sizes". Layouts switch from horizontal to vertical at large sizes so nothing gets cut off. |
| Dark Mode | A full dark palette is included. The app follows the system setting — never forced. |
| Increased Contrast | A dedicated high-contrast palette ships for users with Increase Contrast enabled in iOS Settings, raising text and border contrast above standard ratios. |
| Reduce Motion | Every bounce, rotate, shimmer, ring pulse, and symbol effect is replaced with a quiet, near-instant alternative when Reduce Motion is on. |
| Reduce Transparency | Materials and glass effects are swapped for solid surfaces automatically. |
| VoiceOver Rotor | A custom "Bundles" rotor lets VoiceOver users jump between cleanup bundles without scrubbing through every row. |
| Differentiation without color | Selection state, success, and destructive actions are always communicated by both an icon (checkmark, trash, lock) and a label, never color alone. |
WCAG 2.2 conformance summary (AA)
| Criterion | Status | Notes |
|---|---|---|
| 1.1.1 Non-text Content | Pass | All meaningful imagery has accessibilityLabel; decoration is hidden. |
| 1.3.1 Info & Relationships | Pass | Headings, list semantics, selected/header traits applied. |
| 1.3.4 Orientation | Pass | No orientation lock. |
| 1.4.1 Use of Color | Pass | Icons + text accompany every color signal. |
| 1.4.3 Contrast (Minimum) | Pass | Palette audited to meet ≥4.5:1 for body text and ≥3:1 for large text. |
| 1.4.4 Resize Text | Pass | Dynamic Type to AX5 supported. |
| 1.4.10 Reflow | Pass | Responsive layouts adapt to 320 pt width × AX5 without horizontal scrolling. |
| 1.4.11 Non-text Contrast | Pass | Borders, controls, focus indicators meet 3:1. |
| 2.1.1 Keyboard | Pass | Fully operable with hardware keyboard via Switch Control / Voice Control. |
| 2.2.2 Pause, Stop, Hide | Pass | All looping animations respect Reduce Motion. |
| 2.3.1 Three Flashes | Pass | No flashing content. |
| 2.3.3 Animation from Interactions (AAA) | Pass | Motion gated by Reduce Motion. |
| 2.4.1 Bypass Blocks | Pass | VoiceOver rotor for bundles; section headers throughout. |
| 2.4.6 Headings and Labels | Pass | Section titles use isHeader; status hero exposes its title as a heading. |
| 2.4.7 Focus Visible | Pass | System focus ring + custom indicator on key controls. |
| 2.4.11 Focus Not Obscured (Min) | Pass | Floating buttons do not cover focused row. |
| 2.5.1 Pointer Gestures | Pass | All multi-touch gestures have single-pointer alternatives. |
| 2.5.3 Label in Name | Pass | Accessibility labels include the visible text of the control. |
| 2.5.7 Dragging Movements | Pass | Video scrubbing has button equivalents. |
| 2.5.8 Target Size (Minimum) | Pass | Interactive elements meet 44×44 pt. |
| 3.1.1 Language of Page | Pass | App declares English and Portuguese (Brazil). |
| 3.3.1 Error Identification | Pass | Errors (e.g. video preview unavailable) announced and visually marked. |
| 4.1.2 Name, Role, Value | Pass | All controls expose role and state to assistive tech. |
| 4.1.3 Status Messages | Pass | Scan completion, review decisions, and async errors posted as accessibility announcement. |
Detailed behaviors
- VoiceOver descriptions for photos and videos include the media type, capture date, file size, the reason it was flagged, whether it is a favorite, whether it lives in an album, and whether it has been marked for removal.
- The daily check-up plan announces each step with its category, item count, and completion state.
- The "Hear summary" button (Apple Intelligence narration) automatically reveals the written transcript on screen and posts the same text to VoiceOver, so the summary is never audio-only.
- The video scrubber has both a slider (with continuous accessibility value) and explicit Previous / Next buttons, so users who cannot drag can step through the video.
- Localization: full Brazilian Portuguese and English coverage. The app respects the system language; no in-app override is required.
Known limitations
- Captions and audio descriptions for video content are not applicable — Gallery Checkup does not produce audio or video content. When the user previews their own video, any embedded captions are played through the iOS system player without modification.
- AAA contrast (1.4.6) is not formally claimed; the palette is tuned for AA and meets AAA in many but not all combinations.
- Apple Intelligence summaries depend on device support and may be unavailable on older hardware; the app falls back to the written summary.
Feedback
If you encounter an accessibility barrier, please email us at [email protected]. We treat accessibility reports as priority bugs.