Skip to content

aria-actions: handling focus when actions are synthetically triggered #2691

@smhigley

Description

@smhigley

Amended Issue Description: Per discussion in January 15, 2026 ARIA WG telecon, the original dewscription of this issue by @smhigley has been amended by @mcking65 to include content on focus management use cases and the questions they raise.

The problem:

When actions are triggered from the referencing element e.g. through the actions rotor or an actions-specific UI, the desired UX would be for focus to stay on the referencing element.

Right now, it moves to the action as a natural result of triggering a click event.

Possible solutions:

  1. Do not call focus on the action when synthetically triggering it. Pros: best user experience. Cons: AT detection vector?
  2. Call focus back on the referencing element immediately after the click. Pros: less of a detection vector. Cons: depending on the timing, this could trigger SR behavior like mode switching, starting to read the change, etc.
  3. ??

I've chatted with Jamie, Brett, and Chrome folks, and there are no technical issues with implementing any of these solutions. The question is mostly around whether implementing specific focus behavior after synthetically triggering it is a privacy concern.

Focus Management Use Cases

To analyze the efficacy of potential solutions, it is helpful to walk them through the focus management requirements presented by specific aria-actions use cases. Following are several use cases based on the
APG Experimental Example of Scrollable Listbox with Actions on Options.

Note: that as of Jan 18, 2026, this example is still a PR. In December, the task force discussed redesigning the content to make it more realistic and approachable. The functionality and structure of the example will largely remain as is, so the relevance of the use cases will be preserved. However, the details of the use cases may need to be revised as the example evolves.

Overview of scenario and use cases

Let's consider a specific scenario where a user wants to:

  1. Use the "Move Up" action to move the "Californium" option up two positions in the list from 7 to 5.
  2. Use the "Favorite" action to mark "Californium" as a favorite.

Below, the steps for executing this scenario and their expectations are described for 3 use cases: a screen reader user, a keyboard user, and a mouse+keyboard user.

Use Case 1: Screen Reader User

  • This use case is in VoiceOver for iOS terms since it is one platform where many people understand the commands and expectations.
  • It assumes that:
    • The listbox element has DOM focus.
    • The value of aria-activedescendant refers to "Californium" before step 1 is performed.
  • Note: This use case is hypothetical; it cannot be tested with the APG example because Safari does not yet implement support for aria-actions.
Step Commands Expectationss
1 - Select the "Move up" Action swipe down OR VO-CMD-DownArrow VO announces "Move Up". DOM focus remains on the listbox and aria-activedescendant still refers to Californium.
2 - Activate the "Move up" Action Double Tap OR VO-Space VO announces the live region notification "Moved to position 6". DOM focus remains on the listbox and aria-activedescendant still refers to Californium.
3 - Activate the "Move up" Action Double Tap OR VO-Space VO announces the live region notification "Moved to position 5". DOM focus remains on the listbox and aria-activedescendant still refers to Californium.
4 - Select the "Favorite" Action swipe down twice OR VO-CMD-DownArrow twice VO announces "Move Down" then "Favorite". DOM focus remains on the listbox and aria-activedescendant still refers to Californium.
5 - Activate the "Favorite" Action Double Tap OR VO-Space VO announces the live region notification "Favorited Californium". DOM focus remains on the listbox and aria-activedescendant still refers to Californium.

Use Case 2: Keyboard User

The following steps assume that:

  • The listbox element has DOM focus.
  • The value of aria-activedescendant refers to "Californium" before step 1 is performed.

Note: Changes to the value of aria-activedescendant remain essential in this use case because the keyboard user may be a screen reader user who is not using screen reader commands to activate the actions.

Step Commands Expectationss
1 - Select the "Move up" Action RightArrow DOM focus remains on the listbox, and the element referenced by aria-activedescendant changes from "Californium" to the "Move up" button.
2 - Activate the "Move up" Action Enter OR Space Californium moves up, DOM focus remains on the listbox, and the element referenced by aria-activedescendant continues to be the "Move up" button for the "Californium" option.
3 - Activate the "Move up" Action Enter OR Space Californium moves up, DOM focus remains on the listbox, and the element referenced by aria-activedescendant continues to be the "Move up" button for the "Californium" option.
4 - Select the "Favorite" Action RightArrow twice DOM focus remains on the listbox, and the element referenced by aria-activedescendant changes from "Move Up" to the the "Favorite" button.
5 - Activate the "Favorite" Action Enter OR Space The "Californium" option is marked as a favorite, DOM focus remains on the listbox, and the element referenced by aria-activedescendant continues to be the "Favorite" button for the "Californium" option.

Mouse+Keyboard user

The following steps assume that:

  • "Californium" is scrolled into view when step 1 is performed.
  • The listbox element may NOT have DOM focus.

Note: This use case differs from use case 2 only in steps 1 and 2.

Step Commands Expectationss
1 - Select the "Move up" Action Hover over "Californium" and then move the pointer over the "Move up" button Focus (document.activElement) remains wherever it was; it could be anywhere on the page.
2 - Activate the "Move up" Action Click DOM focus is set on the listbox, aria-activedescendant is set on the listbox to refer to the "Move up" button for the "Californium" option, and the "Californium"option moves up.
3 - Activate the "Move up" Action Enter OR Space Californium moves up, DOM focus remains on the listbox, and the element referenced by aria-activedescendant continues to be the "Move up" button for the "Californium" option.
4 - Select the "Favorite" Action RightArrow twice DOM focus remains on the listbox, and the element referenced by aria-activedescendant changes from "Move Up" to the the "Favorite" button.
5 - Activate the "Favorite" Action Enter OR Space The "Californium" option is marked as a favorite, DOM focus remains on the listbox, and the element referenced by aria-activedescendant continues to be the "Favorite" button for the "Californium" option.

Questions

  1. Should we be aiming to enable AT and browsers to support all three of the above use cases without putting undue burden on authors?
  2. If not, how would that impact the utility of aria-actions?
  3. If yes, what are the browser requirements?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions