ios-accessibility

Installation
SKILL.md

iOS accessibility — Dynamic Type, VoiceOver, contrast, and audits

Source: Apple HIG Accessibility (developer.apple.com/design/human-interface-guidelines/accessibility), the SwiftUI accessibility modifiers reference + @Environment accessibility keys, and the performAccessibilityAudit / Accessibility Inspector tooling (WWDC23 "Perform accessibility audits", carried into Xcode 26/27). Plus WWDC 2026 / iOS 27 Liquid Glass refinement coverage (MacRumors, TechTimes, Neowin — June 2026) for the new transparency slider and material legibility changes (§6). iOS 26 = shipping baseline; iOS 27 (WWDC 2026) = current cycle — most of this skill is version-stable; the iOS 27 deltas are the Liquid Glass transparency slider and material-legibility tuning, flagged inline. Cross-checked across multiple passes (June 2026). Apple's stance: accessibility is a foundational design decision, not a retrofit — design for it from the first layout.

1. The system settings you must respond to

Apple ships these as user toggles; your app inherits some for free and must honor the rest. Each maps to a SwiftUI @Environment key (read once, branch your view):

Setting @Environment key What you do
Larger Text (Dynamic Type) \.dynamicTypeSize Use built-in text styles; reflow at AX sizes (§2)
Bold Text (inherited automatically) Don't fight it; test layouts don't clip
Reduce Motion \.accessibilityReduceMotion Drop large transitions; cross-fade instead (§6)
Reduce Transparency \.accessibilityReduceTransparency Swap materials/blur for opaque fills (still binary; see §6 for the iOS 27 slider)
Increase Contrast \.colorSchemeContrast (.increased) Use higher-contrast color pair
Differentiate Without Color \.accessibilityDifferentiateWithoutColor Add shape/text/icon, not just hue (§4)
VoiceOver running \.accessibilityVoiceOverEnabled Rarely branch on this — fix labels instead

Don't gate core meaning on any single setting. These refine an already-accessible layout; they are not the layout.

Installs
4
First Seen
Oct 8, 2026