Skip to content

[bug]: Base UI Combobox icon controls lack accessible names #11589

Description

@liljamesjohn

Describe the bug

The Base UI Combobox registry component renders three icon-only buttons without accessible names:

  • The default popup trigger created by ComboboxInput.
  • The clear action rendered by showClear.
  • The remove action automatically rendered by ComboboxChip.

Browser accessibility trees expose each control as an unnamed button. Consumers cannot label the internal trigger or chip-remove button, and ComboboxClear is not exported.

Base UI's own Combobox examples explicitly provide aria-label="Open popup", aria-label="Clear selection", and item-specific labels such as aria-label={Remove ${language.value}}.

Affected component/components

Combobox (Base UI variant)

How to reproduce

  1. Create or use a Base UI shadcn project.
  2. Run pnpm dlx shadcn@4.18.0 add combobox.
  3. Render a ComboboxInput with its default trigger and inspect the accessibility tree. The trailing button has no name.
  4. Render ComboboxInput showClear with a selected value. The clear button has no name.
  5. Render a multiple combobox with ComboboxChip. The chip-remove button has no name.
  6. Tab to and inspect each icon-only button with browser accessibility tools or a screen reader.

Expected: each button has a stable accessible name, with an item-specific name for chip removal where possible.

Actual: each button is exposed without an accessible name.

Reproduction link

Current registry source: https://github.com/shadcn-ui/ui/blob/1773ecfeeb4a04366978d353e69b5c7ded78dcb2/apps/v4/registry/bases/base/ui/combobox.tsx

Base UI reference: https://base-ui.com/react/components/combobox

Logs

Not applicable. This is visible in the rendered accessibility tree.

System Info

shadcn 4.18.0
Node.js v24.19.0
macOS 26.4.1
Chromium accessibility tree
Base UI registry variant

Before submitting

  • I've made research efforts and searched the documentation.
  • I've searched open and closed issues.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions