We'd like to set Google Analytics cookies to learn how people use the Knowledge Base, so we can improve it. We set them only if you accept.

Skip to main content
Digital Accessibility Knowledge Base

composite-not-in-focus-sequence

Web validation

Composite components that include actionable items must appear in the page's tab sequence.

Composite components, such as grids, tablists, and trees, combine many interactive items into one widget. They use either the roving tabindex pattern or the aria-activedescendant pattern for keyboard navigation. In both patterns, at least one element of the widget must be reachable with the Tab key. That lets keyboard users enter the component and then move inside it with the arrow keys.

Tab stop targets for composite patterns:

Patternaria-activedescendant targetRoving tabindex target
gridrole="grid"role="gridcell", role="columnheader", role="rowheader"
listboxrole="listbox"role="option"
menu, menubarrole="menu", role="menubar"role="menuitem", role="menuitemcheckbox", role="menuitemradio"
radiogrouprole="radiogroup"role="radio"
tablistrole="tablist"role="tab"
treerole="tree"role="treeitem"
treegridrole="treegrid"role="gridcell", role="columnheader", role="rowheader"

Pass Patterns

Component uses aria-activedescendant

The container is in the tab sequence with tabindex="0", and arrow keys move aria-activedescendant.

HTML
<div role="grid" tabindex="0" aria-activedescendant="cell-1">
    <div role="row">
        <div id="cell-1" role="gridcell">A1</div>
        <div id="cell-2" role="gridcell">B1</div>
    </div>
</div>

Component uses roving tabindex

Exactly one item is focusable, and arrow keys move focus by updating tabindex values.

HTML
<div role="tablist">
    <button role="tab" tabindex="0" aria-selected="true">First tab</button>
    <button role="tab" tabindex="-1" aria-selected="false">Second tab</button>
</div>

Fail Patterns

No element is focusable

Neither the container nor its items can receive keyboard focus, so the widget is unreachable.

HTML
<div role="tree">
    <div role="treeitem">Node 1</div>
    <div role="treeitem">Node 2</div>
</div>

A listbox with no focusable option

The listbox container has no tabindex and no option is focusable, so the keyboard cannot enter it.

HTML
<ul role="listbox" aria-label="Fruit">
    <li role="option">Apple</li>
    <li role="option">Banana</li>
</ul>

WCAG techniques

Sufficient techniques

Try It Yourself

Using a keyboard

  1. Load the page.
  2. Press Tab until you expect to reach the composite widget, such as a tablist.
  3. Watch whether focus enters the widget.

Expected results: Focus stops on the widget or its selected item, so arrow keys can navigate inside.

Actual results: Focus skips the widget entirely, so its items cannot be operated.

Inspecting the browser dev-tools

  1. Inspect the composite container and its items.
  2. Check the tabindex values and whether the container uses aria-activedescendant.
  3. Confirm that exactly one element is in the tab sequence.

Expected results: The container has tabindex="0" with aria-activedescendant, or one item has tabindex="0" for roving tabindex.

Actual results: Neither the container nor any item is in the tab sequence.

FAQ

How does this issue relate to 2.1.1 Keyboard?

SC 2.1.1 requires all functionality to be operable with a keyboard. If a composite widget has no element in the tab sequence, keyboard users cannot enter or operate it, which fails the criterion.

Why is this issue marked as Critical?

When a composite widget is missing from the tab sequence, keyboard users and many assistive technology users cannot reach or operate it at all. That is a complete loss of functionality that blocks task completion across browsers and devices.

Standards and Regulations

StandardSuccess CriterionReference
WCAG 2.22.1.1 Keyboard (A)All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes, except where the underlying function requires input that depends on the path of the user's movement and not just the endpoints.
EN 301 5499.2.1.1 KeyboardSame as the WCAG text.
Section 5081194.21(a)When software is designed to run on a system that has a keyboard, product functions shall be executable from a keyboard where the function itself or the result of performing a function can be discerned textually.
508 Trusted Tester2.1.1-keyboard-access, 4.AAll functionality can be accessed and executed using only the keyboard.

Personas impacted by this issue

Learn More