When content changes somewhere the user isn't focused — a cart count, a "saved" toast, a results count — sighted users notice it visually, but screen reader users get no signal at all unless the region announces itself. An element with `aria-live="polite"` waits for the screen reader to finish its current sentence, then reports the change; `aria-live="assertive"` interrupts immediately.
`polite` is the default and almost always the right choice. `assertive` is for genuinely urgent warnings, like a session about to expire — overusing it keeps cutting the user off mid-sentence. For a message that appears as a whole new element, like a form error, `role="alert"` (implicitly assertive) is common too.
Left is the actual screen; right is a transcript of what a screen reader actually speaks. Every time the button auto-adds an item, a new line appears on the right independent of what's visually happening on the left.
When to use
Use it anywhere content updates without a focus change: toast notifications, live counters, autocomplete result counts, form validation summaries. Don't wire it to every tick of an animated number or spinner — it'll chatter constantly.