How to build an accessible OverflowMenu in React

The kebab trigger carries a localized aria-label since it has no visible text, and the revealed list uses Dropdown's menu semantics so arrow keys, Home/End, Enter/Space, and Escape work without custom handling.

When to use a OverflowMenu

When not to use it

Keyboard interactions

Role menu, verified at WCAG 2.2-AA.

Common mistakes

Avoid: Rendering every row action as a visible Button in a crowded table

Prefer: <OverflowMenu items={[{ label: "Edit", value: "edit" }, { label: "Delete", value: "delete", destructive: true }]} onSelect={handle} />

A kebab menu keeps dense rows scannable; surfacing every action inline competes for attention and breaks alignment

Example

<OverflowMenu items={[{ label: "Edit", value: "edit" }, { label: "Delete", value: "delete", destructive: true }]} onSelect={handle} />

See the full OverflowMenu reference →