Skip to content

Update definition for "status message"#4840

Closed
patrickhlauke wants to merge 10 commits intomainfrom
patrickhlauke-issue4676
Closed

Update definition for "status message"#4840
patrickhlauke wants to merge 10 commits intomainfrom
patrickhlauke-issue4676

Conversation

@patrickhlauke
Copy link
Member

@patrickhlauke patrickhlauke commented Dec 30, 2025

The current definition for "status message" https://www.w3.org/TR/WCAG22/#dfn-status-messages manages to somehow miss out the fact that a status message refers to an actual discrete "message". The current definition makes it sound like any change of content may be interpreted as an "intrinsic" status message (see discussion #4672).

This PR changes the (normative) definition to make it clear that the WG always intended this to refer to explicit "status messages", and not somehow mandate the need for any dynamic content update (such as dynamically updating a list of results) must trigger some sort of SR announcement.

Closes #4676

Preview (in context): https://deploy-preview-4840--wcag2.netlify.app/understanding/status-messages#dfn-status-message

@netlify
Copy link

netlify bot commented Dec 30, 2025

Deploy Preview for wcag2 ready!

Name Link
🔨 Latest commit 435cb3f
🔍 Latest deploy log https://app.netlify.com/projects/wcag2/deploys/69960e6e2f0be4000935c559
😎 Deploy Preview https://deploy-preview-4840--wcag2.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@patrickhlauke
Copy link
Member Author

patrickhlauke commented Dec 30, 2025

Slotting the new definition in place of the term into the normative wording for the SC, results in:

In content implemented using markup languages, discrete pieces of content that are changed/updated dynamically and provide information to the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus.

(note that the definition is for "status message", singular, while the SC uses "status messages", plural, so I tweaked the replacement accordingly to make it plural)

compare this to the far more open-ended/vague current definition

"In content implemented using markup languages, changes in content that are not changes of context, and that provide information to the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus."

@electrickite
Copy link

electrickite commented Jan 15, 2026

@patrickhlauke I feel this new definition leaves us in a similar situation. To pressure test it, consider a received chat message. It satisfies "discrete pieces of content that are changed/updated dynamically" and also "provide[s] information to the user on the success or results of an action" and would be a status message under this new definition. Similar arguments can be made for dynamic search results.

The distinction we are trying to draw here seems to be around author intent. I wonder if something like this would capture it?

change in content that is not a change of context, the primary purpose of which is to provide information to the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors

The primary purpose of a chat message is not to "provide information to the user on the success or results of an action", it is to convey the text of the message. Similarly, the primary purpose of a set of search results is to display the links to matching pages.

@patrickhlauke
Copy link
Member Author

@electrickite still think it's a particularly obtuse reading of the words, but ... changed "and provides" to "to provide" which hopefully removes any such misinterpretation

@electrickite
Copy link

@patrickhlauke My job sometimes requires that I read standards as obtusely as possible, so I appreciate the change! :)

@bruce-usab
Copy link
Contributor

I so very much appreciate removing "change of context" from the definition for status message! Currently, there is some circular logic, but I have some concern that this is a change of meaning. I am looking forward to discussion on TF call!

@bruce-usab
Copy link
Contributor

bruce-usab commented Jan 16, 2026

Reviewed on TF call 1/16 and consensus for change. Since it is normative, will need to go through CFC. On call @scottaohara volunteered to update Understanding reflecting the question raised by issue.

@patrickhlauke patrickhlauke added the ErratumRaised Potential erratum for a Recommendation label Jan 26, 2026
Copy link
Contributor

@WilcoFiers WilcoFiers left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Firstly and always, never a fan of normative changes.

I acknowledge the previous definition was a little trickier to understand it was much easier to test than this one. Change of context is well understood, whereas "discrete piece of content" is pretty vague. What if 10 status messages show up at once, is that a "discrete piece of content"? Or if the message shows up along with some other new information?

By removing "change of context" I think you unintentionally added a requirement that even if a status message is focused when it appears, it also has to be programmatically determined. That's not currently the case because changing focus is a change of context. Arguably active element may be considered programmatically determined. That feels like stretching programmatically determined definition beyond what it was intended to do though. If that is intended I think that'd need to be clarified in an understanding doc.

I also think the wording isn't very clean. The "changed/update" phrase should probably be "changed or updated". The word "dynamic" seems redundant. A discrete change or update is always dynamic, no?

Overall, I think this new definition creates more grey area than the current one. I appreciate that a surface-level reading of it makes it easier to understand the intent of the definition, but if that comes at the cost of testability I don't think that's a good trade-off.

@patrickhlauke
Copy link
Member Author

patrickhlauke commented Jan 27, 2026

Just for comparison, grafting the current definition of status message into the 4.1.3 SC text:

In content implemented using markup languages, change in content that is not a change of context, and that provides information to the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus.

Grafting the proposed new wording in:

In content implemented using markup languages, discrete piece of content that is changed/updated dynamically to provide information to the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus.


@WilcoFiers

By removing "change of context" I think you unintentionally added a requirement that even if a status message is focused when it appears, it also has to be programmatically determined.

Looking at the grafted part above, I would think that the "without receiving focus" part in the SC text itself takes care of this. A "status message" itself is not tied to whether or not it does or doesn't receive focus ... the scoping of it needing to be announced when it's NOT receiving focus is part of the SC, not intrinsic to the definition of what a status message is, I'd say

I also think the wording isn't very clean. The "changed/update" phrase should probably be "changed or updated".

sure, happy to tweak this

The word "dynamic" seems redundant. A discrete change or update is always dynamic, no?

This tries to reinforce that it's a change that happens without, say, a page reload - to make sure that this doesn't unintentionally scope itself to "the page reloads, and there's a new count somewhere saying 'Results 11-20 of 100" now, and THAT now needs to be announced on page load"

@camusamta
Copy link

camusamta commented Jan 27, 2026

Really in support of this change, but something about 'discrete pieces of content' isn't sufficiently descriptive or clarifying for me. Is there a way to be clearer still, and more irreducible, perhaps with something like:

instructive content that is added or updated dynamically to provide information to the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors

  • "instructive content" helps to reaffirm that this intended for 'explicit messages'
  • "added" because a status message can appear as well as update

Edit: maybe just "content", even, instead of "instructive" or "discrete"?

@patrickhlauke
Copy link
Member Author

patrickhlauke commented Jan 27, 2026

Looking at the grafted part above, I would think that the "without receiving focus" part in the SC text itself takes care of this. A "status message" itself is not tied to whether or not it does or doesn't receive focus ... the scoping of it needing to be announced when it's NOT receiving focus is part of the SC, not intrinsic to the definition of what a status message is, I'd say

@WilcoFiers unless you mean that a "change of context" also covers the scenario where the content is changed under people's focus/feet (as in focus isn't moved per se, the content that is currently focused is) - which i think is a novel interpretation that (although logical once one thinks about it) doesn't come out of the definition for change of context https://www.w3.org/TR/WCAG22/#dfn-change-of-context (as in: don't think this was ever the intended interpretation for having that wording in the original status message definition?)

@bruce-usab
Copy link
Contributor

I think the benefits of the change outweigh the cons, even considering the churn necessary for CFC.

This isn’t the only place it happens, but it’s problematic to have too much of the detail (i.e., not a change of context) embedded in the definition — especially when that work is done by the SC.

@WilcoFiers
Copy link
Contributor

@WilcoFiers unless you mean that a "change of context" also covers the scenario where the content is changed under people's focus/feet (as in focus isn't moved per se, the content that is currently focused is) - which i think is a novel interpretation that (although logical once one thinks about it) doesn't come out of the definition for change of context https://www.w3.org/TR/WCAG22/#dfn-change-of-context (as in: don't think this was ever the intended interpretation for having that wording in the original status message definition?)

No that's not what I meant. That is an interesting scenario I'd never considered that. That might be a change of focus though since focus is set back to the body if the focused element is pulled? I'm not sure, but that isn't my main concern.

discrete pieces of content

This seems vague and raises questions for me that I don't have with the current text.

@dbjorge
Copy link
Contributor

dbjorge commented Jan 27, 2026

I sympathize with wanting to clarify the scenario from the motivating issue, but I don't think this proposed change achieves that goal and I agree that it creates new issues like Wilco pointed out.

1: It doesn't fix the issue

I don't think the new wording is actually any more clear than the original that it would exclude "a list of search results that appears after clicking a search button" from being considered a "status message". Comparing the wording:

  • (old) "change in content that is not a change of context, and that provides information to the user on the success or results of an action"
  • (new) "discrete piece of content that is changed/updated dynamically to provide information to the user on the success or results of an action"

...I don't see why someone wouldn't consider the list of results to be "a discrete piece of content", and I think it obviously "provides information... on the results of an action".

2: Dropping "change of context" is breaking

I agree with Wilco that dropping the "change of context" wording changes the requirement in a way that's probably not intended, and I don't think we should do that in an erratum.

@patrickhlauke , you said:

By removing "change of context" I think you unintentionally added a requirement that even if a status message is focused when it appears, it also has to be programmatically determined.

Looking at the grafted part above, I would think that the "without receiving focus" part in the SC text itself takes care of this. A "status message" itself is not tied to whether or not it does or doesn't receive focus ... the scoping of it needing to be announced when it's NOT receiving focus is part of the SC, not intrinsic to the definition of what a status message is, I'd say

I don't think this is right. Consider a case where a user performs an action and then focus is moved to information about the result. In the old wording, the movement of focus means that this is a "change of context" and thus not a "status message" for the purpose of the requirement. In the new wording, this now is a status message, and so now you've added a requirement to announce it (which might require announhcing more than just the change of focus would have done on its own).

3: "dynamic" and "discrete" are vague

I agree with @WilcoFiers and @camusamta 's feedback that "dynamic" and "discrete" both feel vague/off, and that it'd make sense to include "added" and not merely "changed/updated".

@patrickhlauke
Copy link
Member Author

patrickhlauke commented Jan 27, 2026

1: It doesn't fix the issue

Maybe I'm looking at this too closely myself, but saying that a "discrete piece of content that is changed/updated dynamically to provide information to the user on the success or results of an action..." to me would indicate that that's its sole purpose, and would not include the actual results/updated table/whatever, whereas "that provides information to the user" has more of that ambiguity.

But would welcome alternative suggestions on how to tackle the original issue that motivated this, as it's undisputable that currently the vague definition of status message lends itself to interpreting it in a way that would mandate ANY dynamic change/update as a result of an action needing to be announced explicitly (including things like "in a form, if you select a radio button, a new field appears"), which was not the original intent of the SC.

Maybe expanding to "discrete piece of content whose only purpose is to provide the user..." ... or would that still suggest that the list of results etc can also be seen as that?

Because as far as i remember, we never intended the actual results etc to be covered by this requirement, so somehow we need to make that clear.

I don't think this is right. Consider a case where a user performs an action and then focus is moved to information about the result. In the old wording, the movement of focus means that this is a "change of context" and thus not a "status message" for the purpose of the requirement. In the new wording, this now is a status message, and so now you've added a requirement to announce it (which might require announcing more than just the change of focus would have done on its own).

i think i'm seeing what you're getting at ... you saying that regardless of the "without receiving focus" at the end of the SC, the normative wording with the new definition inserted would now suggest that it must be (theoretically) possible for this to announce even IF it wasn't receiving focus?

i think similar to the painful confusion we had with the "pointer" definition, this "status message" definition is wrongly overloaded but now necessary because the vague / not precise enough wording of the SC? because to me, a status message is a status message, regardless of whether it receives focus or not. it's only that WHEN it happens and doesn't receive focus, we want to make sure it's programmatically determinable so that it can be announced. now wondering if that could only be fixed with an additional change to the normative wording of the SC itself.

EDIT: if we were to also touch the normative SC wording, we'd probably want to change "without receiving focus" to "when it doesn't receive focus"

@TestPartners
Copy link

Even "the success or results of an action" is problematic because some status messages are not the result of an action by anyone, let alone the user. A session timeout warning would be one example, as is a notification that you have new messages that may have been created automatically by the system.

@camusamta
Copy link

camusamta commented Jan 28, 2026

@patrickhlauke:

Maybe expanding to "discrete piece of content whose only purpose is to provide the user..." ... or would that still suggest that the list of results etc can also be seen as that?

I think this is really close. Because I still think 'discrete' raises the possibility for the same misinterpretations you're trying to address, what about something like:

"information that is added or updated dynamically, whose only purpose is to instruct the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors"

The grafted-in version:

"In content implemented using markup languages, information that is added or updated dynamically, whose only purpose is to instruct the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus.

The word 'only' could possibly be swapped for 'explicit', too, if that still reads as having ambiguity.

@lilzesh
Copy link

lilzesh commented Feb 2, 2026

In content implemented using markup languages, information that is added or updated dynamically, whose only purpose is to instruct the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors** can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus.

This still has the unintentional requirement Wilco was referring to in Patrick's initial proposal right, i.e., if the status message is focused, it would then still be required to be programmatically determined through role/properties? Can we simply slot change of context back in, in a different location, but retain what you have come up with to replace "change in content?"

E.g.:

In content implemented using markup languages, information that is added or updated dynamically, whose only purpose is to instruct the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors** can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus, unless a change of context has occurred.

@patrickhlauke
Copy link
Member Author

Can we simply slot change of context back in

I would really like to avoid doing that in the glossary/term definition ... if we're already going through the pain of a normative change, I'd be more in favour of slotting it somehow into the normative SC wording, and keeping the definition of what a "status message" is clean (a status is a status, whether it receives focus or not)

@bruce-usab
Copy link
Contributor

bruce-usab commented Feb 6, 2026

SC 4.1.3 includes “without receiving focus” so, as Patrick notes, that (redundantly) addresses the “not a change of context” clause of status messages. The glossary term could drop that, leaving:

change in content that provides information to the user on the success or results of an action, on the waiting state of an application, on the progress of a process, or on the existence of errors

We could also add note addressing #4676 clarifying than an updated search result (or whatever) does not meet this definition.

@bruce-usab
Copy link
Contributor

bruce-usab commented Feb 6, 2026

Discussed on TF call 6 Fed. @patrickhlauke will take another pass. From discussion, just changing the term without updated the SC may not be feasible. It was noted that the current phrasing of 4.1.3 precludes best practice of using ARIA Notify — because 4.1.3 requires role or properties (which is not how ARIA Notify works). The limiting current scoping to “markup languages” also limits the generalizability of this ICT (e.g., WCAG2ICT).

@TestPartners
Copy link

the current phrasing of 4.1.3 precludes best practice of using ARIA Notify

Why do you refer to ARIA Notify as a "best practice"? As far as I can tell, it does not improve the user experience in any way. It may make it easier for developers to implement announcements, but the poor discoverability makes testing much more difficult if you don't know what announcements a page is supposed to make (if any), and what triggers them. We will need to build new testing tools to help with this.

* reintroduces the change of context part, but in the SC text, not the definition of what is or isn't a status message
* removes the role/property part, so that the SC also covers things like `ariaNotify`
* removes the "In content implemented using markup languages" to make this SC applicable even for status messages in things like native apps when WCAG is used in a WCAG2ICT context
@patrickhlauke
Copy link
Member Author

patrickhlauke commented Feb 18, 2026

after discussion in the TF meeting two weeks ago, this is now a more fundamental rewrite:

  • modifies the definition for status message
  • crucially (as we're already in "normative change" territory) also modifies the normative wording of the SC to make it cover new technologies like ariaNotify (which would not be covered by the "role or properties" part) and non-HTML web content (by removing the markup languages clause, meaning that this SC could then also be applied in principle to native apps in light of WCAG2ICT cases)

Doing the combined "normative SC text with grafted in definition" dance, this PR would land on:

Status messages that don't cause a change of context can be programmatically determined such that they can be presented to the user by assistive technologies without receiving focus.

Discrete piece[s] of content that [are] added or updated dynamically, and whose only purpose is to provide information to the user on the success or results of an action, on the waiting state of an application, on the progress or completion of a process, or on the existence of errors that don't cause a change of context can be programmatically determined such that they can be presented to the user by assistive technologies without receiving focus.

@patrickhlauke
Copy link
Member Author

Closing this PR in favour of its successor #4952 (mainly because the description, thumbs up/down, and discussion/comments, may be confusing since this morphed considerably since it was first filed).

@patrickhlauke patrickhlauke deleted the patrickhlauke-issue4676 branch February 24, 2026 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4.1.3 Status Messages ErratumRaised Potential erratum for a Recommendation Normative

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Confusion regarding definition of "status message"

8 participants