Live regions must be able to announce status messages
Rule
status-messages· ARIA · impact serious · Static + live
Why it matters
Status messages (SC 4.1.3) must reach assistive technology without the user moving focus, which only works when the live-region markup itself is sound. This rule is a HYBRID static + live check. Statically it checks declared live regions: a region inside an aria-hidden subtree can never announce, a focusable role="alert"/"status" wrongly ties the message to focus, and aria-live="assertive" on the body or a large container interrupts the user with every change. On a live scan it additionally watches the page mutate (a MutationObserver installed before page scripts run): status-looking content — toasts, snackbars, notification banners, including ones auto-removed after a few seconds — that is INSERTED outside any live region appears silently for screen-reader users, and is warned per insertion. Invalid aria-live token values (e.g. aria-live="true") are already failed by aria-valid-attr.
How to fix
Keep live regions outside aria-hidden subtrees, on non-interactive elements (use role="alertdialog" when the alert contains controls), and scope them to the small element whose text changes — never the whole page. Render dynamic status messages (toasts, "added to cart", form feedback) INTO a live region: give the toast container role="status" (or aria-live="polite"), or role="alert" for urgent errors.
Example
<div role="status" aria-hidden="true">Saved</div>
<div role="status">Saved</div>
Example
<button role="alert">Session expired</button>
<p role="alert">Session expired — sign in again.</p>
Example
<body aria-live="assertive"><h1>Latest news</h1></body>
<body><h1>Latest news</h1><div aria-live="polite"></div></body>
An assertive region spanning the page re-announces every DOM change; scope live regions to the message element.
WCAG success criteria
4.1.3 Status Messages — Level AA
Status messages (saved, results count, errors that don’t take focus) must be programmatically exposed — e.g. via a live region — so assistive tech announces them without focus moving.
Standards
This rule contributes to the following standards:
WCAG AA EN 301 549
| Standard | Criteria |
|---|---|
| EN 301 549 | 9.4.1.3 |