Skip to content

CONCEPT Cited by 1 source

Redundant error signalling

Definition

Redundant error signalling is the UI-design discipline of encoding error state across multiple perceptual channels rather than relying on any single one — classically, the "never colour alone" rule from WCAG 1.4.1 Use of Color (Level A). An error should be simultaneously indicated by:

  1. Colour (red / semantic-danger token) — for most sighted users.
  2. Icon (error glyph) — for users who cannot perceive the colour (colour-blindness; low contrast under ambient conditions).
  3. Text (the error message itself) — for users who want the literal description.
  4. Announcement to assistive tech (focus event → TalkBack / VoiceOver announces the error) — for users who cannot see the screen.

Each channel covers a different failure mode of the others. The discipline generalises beyond errors to any critical state (success, warning, required-field indication, unread-count badges).

Canonical minimal counterexample

From Slack's 2025-11-19 VPAT post, the P3 "Errors indicated by color alone" theme:

  • Before: error text under an edit field was rendered in red. No icon. "To users unable to perceive red text, the error text is just another message on the screen and not necessarily an error."
  • After: error text in red plus an error icon beside it.

The fix is small in implementation cost but high in discoverability for users unable to perceive red as a danger signal.

WCAG mapping

Covered by WCAG 2.1 Success Criterion 1.4.1 Use of Color (Level A): "Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element."

Compositional structure

Redundant error signalling composes with:

  • Focus-announced errors — the component-level mechanism on Android for layer (4) above; Slack updated OutlinedTextField so TalkBack announces the inline error when focus returns, and SKBanner error variant to auto- announce. See systems/slack-kit.
  • Severity-gated filtering — which violations bubble up to user-visible errors at all; see concepts/severity-filtered-violation-reporting for the internal-dev-tool altitude of the same principle.
  • Component-library defaults — if the component library (e.g. Slack Kit) ships the redundant signalling by default, every consumer screen picks it up without rework.

Anti-patterns

  • Red text only, no icon — the Slack P3 before-state.
  • Icon only, no text — opaque to users without visual familiarity with the iconography.
  • Colour change of a border / background without text — fails for colour-blindness and for users with low-contrast displays.
  • Silent error state — error indicated in the UI but not announced to assistive tech; the Slack P1 before-state (fixed at the OutlinedTextField / SKBanner layer).

Seen in

Last updated · 470 distilled / 1,213 read