ARIA live regions are a mechanism for announcing dynamic content changes to
screen reader users without requiring focus to move. When content on a page
updates — such as a status message, search result count, or error notification
— a live region ensures screen readers announce the change automatically.
[1]
| Value | Behaviour |
|---|---|
| polite | Waits until the user is idle before announcing. Use for most non-critical updates. |
| assertive | Interrupts whatever the screen reader is currently announcing. Use only for urgent errors. |
| off | Updates are not announced. The default for most elements. |
Overuse of assertive is one of the most disruptive mistakes in accessible
development. Reserve it for truly critical alerts such as session timeouts
or payment failures.
[2]
Several ARIA roles have implicit live region behaviour built in:
| Role | Implicit behaviour |
|---|---|
| alert | assertive — use for urgent error messages |
| status | polite — use for non-urgent status messages |
| log | polite — use for chat logs and activity feeds |
| timer | off by default — use for countdowns |
| progressbar | Announced on update |
| [1] |
The live region element must be present in the DOM before the content update
occurs. Injecting a live region dynamically at the same time as its content
is unreliable — many screen readers will not announce it.
Correct pattern:
Injecting the live region and content simultaneously. The container must
pre-exist in the DOM. Inserting a div with role="alert" and content at the
same time is unreliable across browsers and screen readers.
[3]
Overusing assertive. Interrupting the screen reader mid-sentence for
non-critical updates is disruptive and disorienting.
Updating a live region too frequently. Rapid updates in a polite region
may cause announcements to be skipped. Debounce updates where possible.
Placing interactive content in a live region. Live regions should contain
text announcements only. Do not place buttons, links, or inputs inside them.
Last edited Apr 5, 2026, 7:19 PM · P**** J****