Skip to content
easeweb
Search topics

Alerts that cut off VoiceOver for routine updates

A planning app writes every notice, from "Sam opened this task" to "Connection lost", into one role="alert" region, so in VoiceOver each routine update cuts into whatever is being read, and in other screen readers the urgent one sounds like the rest.

WCAG 2.2
SC 4.1.3AA· new in 2.1
Required by
EN 301 549 (EU)
Broken <div id="notices" class="notices" role="alert">
The accessibility problem illustrated: No vision:Why do I keep getting cut off?
01

The problem

VoiceOver users are cut off in the middle of what they are reading each time the app reports something routine, and in every screen reader the one urgent message sounds like all the others.

02

Try it

Press Read next line, as a screen reader user presses the Down arrow, and listen as the notices arrive.

A notice arrives a moment into each line. The panel shows what the screen reader says; on the page, the words read so far are highlighted, and red marks what was never read. The reader starts out reading as VoiceOver does: which notices cut the line off? Then switch to JAWS and Narrator: can you still tell the urgent one?

Broken Can you fix this?

BrokenEvery notice in one alert region
Screen reader (simulated):

Write the launch email

Due 12 May

The launch email goes out on Monday at 9:00, after the final proofread.

Keep it short, with one link to the new collection.

Ask Alex for the product photos before Friday.

Send the draft to the team for comments by Thursday.

Screen reader says:

(Press Read next line)

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Send routine notices to a status region, and keep the alert region for messages that can't wait.

  1. 1Use role="status" for routine notices, so they wait their turn.
  2. 2Use role="alert" only for a message people must act on now.
  3. 3Render both regions empty with the page, and never move focus to a notice.
Before Every notice in one alert region
<div id="notices" class="notices" role="alert"></div>
After A status region for routine notices, an alert region for urgent ones
<div class="notices">  <p id="notice-status" role="status"></p>  <p id="notice-alert" role="alert"></p></div>

Fixing this with an AI coding assistant? Get this guide as Markdown, or get every guide in your coding agent.

04

Verify the fix

4 checks, no mouse.

Test with: Screen reader, Keyboard

0 of 4 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after the notification component, or the list of messages it sends, changes.

Limits

Live regions behave differently across screen readers and browsers, and from one version to the next: what this guide describes is how the releases current in 2026 behaved. Understanding 4.1.3 also notes that assistive technology may delay, suppress or transform status messages to suit its user's settings. Whether a message is urgent is a judgement about the product, which only its team can make. This guide covers notices that arrive while someone is reading. A message that is never announced is covered in status messages that are shown but never announced, a clock that announces every second in countdown timers that screen readers keep reading out, and dialogs that ask people to confirm in confirmation dialogs that don't read out their question. Letting people put off interruptions altogether, at Level AAA, is a topic of its own. Test with the screen readers your users use.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

Keep this fixed as your code changes.

Turn guides like this into rules your coding agents and CI follow, then have the result retested with a keyboard and screen readers.

How retests work