Skip to main content
Home
Back to Guidelines

What is Status Messages?

Status messages are programmatically determinable without moving focus.

Good status messages help users hear confirmations, progress, or errors at the moment they happen. They should be tied to the triggering action and stay understandable even when focus does not move.

  • Use live regions for status updates that should be announced automatically.
  • Keep the message visible and associated with the action that triggered it.
  • Avoid forcing focus changes just to reveal the outcome.

Good vs Bad Examples

Use the tabs to compare the accessible pattern with the example to avoid.

Good Example 1 – Status Message Without Moving Focus

Contact form with a success message announced in place without moving focus.
html live code
<div role="status" aria-live="polite">Message sent successfully. We will get back to you shortly.</div>
Why this is correct (developer logic):
  • The status is announced in place.
  • Focus stays where the user is working.
  • Users get immediate feedback without disruption.

Good Example 2 – Persistent Status Message in Live Region

Profile update flow with a persistent live-region status message that remains visible.
html live code
<div role="status" aria-live="polite">Profile updated successfully. Your changes have been saved.</div>
Why this is correct (developer logic):
  • The live region stays visible long enough to be noticed.
  • Screen readers can announce the update automatically.
  • The user is informed without losing their place.

Implementation Checklist

Progress0 / 5 completed (0%)

Knowledge Check

Answer Yes or No to test your understanding of status messages.

Score: 0 / 5 · Answered: 0 / 5

Does the good example demonstrate status messages correctly?

Is the bad example acceptable for status messages?

Should this pattern be checked with keyboard and screen reader testing?

Should a status message be announced without forcing focus to move?

Is a short-lived toast the most reliable way to communicate a status message?