03 — Tap Target
Turn VoiceOver On and Leave It On
You cannot design what you have never used. One week of screen-reader immersion will teach you more about your app than a quarter of analytics.
Here is the exercise, and fair warning, it is humbling: turn on VoiceOver (or TalkBack), turn the screen curtain on so the display goes black, and use your own app for one week of ordinary tasks. Most designers don't survive the login screen.
What you'll hit in the first ten minutes: unlabeled buttons announced as 'button'. Images read as filenames. A focus order that jumps from the header to the footer and back. Custom controls that swallow gestures whole. Every one of those is a person's daily experience of your product — you're just borrowing it for a week.
The four failures, ranked
Missing labels come first because they're the cheapest to fix and the most common: every interactive element needs an accessible label that says what it does, not what it looks like — 'Add to basket', not 'cart-icon-filled'. Focus order comes second: a screen reader linearises your screen, and if the visual hierarchy and the reading order disagree, the reading order is the truth. Third, announcements: when content changes — an error appears, items load — say so; silence after an action is the screen-reader equivalent of a frozen screen. Fourth, custom controls: that hand-rolled star rating needs roles, values and actions, or it's a decoration.
None of this is exotic. Both platforms hand you the tools: traits and actions on iOS, semantics on Android, one inspector each. The gap has never been tooling. It's that nobody on the team has ever listened to the app.
If the visual hierarchy and the reading order disagree, the reading order is the truth.
— Tap Target
The payoff reaches past the users who rely on it. The same structure VoiceOver needs is what powers voice control, keyboard navigation, UI tests, and increasingly the agents that use apps on people's behalf. An app that reads well is an app a machine can operate. Accessibility is the API you didn't know you were shipping.