contentVercel
Don't Ship the Schema
MUST
MUST: Don't ship the schema—visuals may omit labels but accessible names still exist
Keep accessible names even when the visual design omits visible labels
Bad
Good
Why it matters
A dense or minimal layout is free to drop visible labels — a search field can rely on a placeholder, an action row can be icon-only. What it cannot drop is the underlying schema: every control still needs an accessible name in the tree. A placeholder is not a name (it disappears on input and is not reliably announced), and an icon is not a name. Use a visually-hidden `<label>` or `aria-label`, and mark the icon `aria-hidden`. The visual design is a projection of the schema, not a replacement for it.