How to fix aria required parent on Headless / Custom (I build in code)

Wrap every ARIA role that requires a parent container (e.g. `menuitem`, `option`, `listitem`) inside the correct parent element carrying the matching ARIA role (e.g. `menu`/`menubar`, `listbox`, `list`).

Steps for Headless / Custom (I build in code)

  1. Search your component codebase for the element carrying the orphaned child ARIA role (e.g. `role='menuitem'`, `role='option'`).
  2. Identify its required parent role from the ARIA spec and add a wrapping element with that role directly enclosing all sibling child-role elements in your component's JSX, HTML template, or rendering function.
  3. Where possible, use native semantic HTML elements that carry implicit ARIA roles (e.g. `<ul>`/`<li>` for lists) instead of adding roles to generic divs.
  4. Run automated tests with axe-core (e.g. via jest-axe or Cypress-axe) as part of your CI pipeline to catch regressions, then verify manually with a screen reader.
Official Headless / Custom (I build in code) documentation ↗
<ul role="menubar">
  <li role="none"><a href="/shop" role="menuitem">Shop</a></li>
  <li role="none"><a href="/about" role="menuitem">About</a></li>
</ul>

What is aria required parent?

ARIA (Accessible Rich Internet Applications) roles come in pairs: a "child" role must always live inside a specific "parent" role for screen readers to make sense of the relationship. For example, a `menuitem` must be inside a `menu` or `menubar`, an `option` must be inside a `listbox`, and a `row` must be inside a `grid` or `rowgroup`. When the required parent wrapper is missing, screen readers either skip the element entirely or announce it with confusing, broken context. The `aria-required-parent` rule flags every place where a child ARIA role exists without its mandatory parent container role.

Screen reader users — including many people with visual impairments or motor disabilities — rely on these structural relationships to understand and navigate menus, dropdowns, product option lists, and navigation bars. A broken parent-child ARIA structure means those users cannot operate your navigation or select product options, which directly reduces conversions and creates a real legal accessibility risk under laws such as the ADA (US), EAA (EU), and the Equality Act (UK). Failing WCAG 2.1 Success Criterion 1.3.1 (Info and Relationships) can expose your store to accessibility lawsuits, which have surged in recent years against ecommerce sites. Fixing this also signals structural HTML quality to search engines, supporting your overall SEO health.

See the complete Aria required parent guide for every platform and the full background.

Not sure if your Headless / Custom (I build in code) store has this?

Run a free SEOLZ scan — we’ll find aria required parent and every other issue across your whole site.

Scan my site free

Fix aria required parent on another platform