diff --git a/frontend/src/components/Toaster.tsx b/frontend/src/components/Toaster.tsx index 02a6be86..1db2d501 100644 --- a/frontend/src/components/Toaster.tsx +++ b/frontend/src/components/Toaster.tsx @@ -18,11 +18,11 @@ export default function Toaster() { return ( // Stable, always-mounted polite live region — a polite region must PRE-EXIST in the DOM for a // screen reader to announce content later inserted into it (a region created together with its - // first message is unreliably announced). Non-error toasts render inside here and are announced - // politely; error/fatal toasts additionally carry role="alert", which announces assertively on - // insertion regardless. + // first message is unreliably announced). `aria-live` (not role="status") on purpose: + // role="status" implies aria-atomic="true", which would re-read the WHOLE stack on every toast; + // aria-live defaults atomic=false, so only the newly-added toast is spoken. Error/fatal toasts + // additionally carry role="alert", which announces assertively on insertion regardless.
@@ -32,7 +32,7 @@ export default function Toaster() { return (