Combobox
Searchable single-selection dropdown (wraps Base UI Combobox).
Basic
Sizes
sm / md / lg, matching Input and Button heights.
States
Disabled and invalid. disabled dims the whole field, toggle included, and blocks input.
No results
Type a query with no matches (e.g. "xyz") to see the built-in empty state.
Controlled
When to use
- A single selection from a list long or unfamiliar enough that typing to filter is faster than scrolling.
- Async or large option sets where you'd otherwise need a custom search UI.
When not to use
- A short, fixed list (under ~10 items) - a plain Select is fewer keystrokes and simpler to scan.
- Multiple selections - use MultiSelect, which has its own chip-based value model.
- Free-text entry that isn't really a selection from a list - use Input instead.
Keyboard
Mobile behavior
- Opens the on-screen keyboard immediately on tap, same as a text input - there's no separate "open" step on touch.
- The popup is width-matched to the trigger and viewport-clamped, so it doesn't overflow narrow screens.
Accessibility notes
- Base UI wires role="combobox" on the input with aria-expanded and aria-activedescendant tracking the highlighted item.
- The empty state ("No results found.") is rendered in the list region so it's discoverable by screen reader users navigating the popup, not just sighted users.
Common mistakes
- Forgetting aria-label when there's no visible <label> - the input then announces as an unlabeled text box.
- Expecting item-level disabled to work - it isn't currently supported on Combobox items (Select does support it; see Select for that case).
- Filtering the items array yourself on every keystroke - Base UI already filters by label internally, so a custom filter usually just fights it.
Known limitations
- Individual items don't currently support a disabled flag (Select does).
- Filtering matches item label substrings only - there's no built-in fuzzy or multi-field search.
Related components
Combobox props
The full option list - Base UI filters it internally as the user types.
Controlled selected item.
Input placeholder text.
Applies the invalid visual/aria state.
API reference
Options to render.
Accessible name for the search input. Required when there is no visible `<label>` for this combobox.
Points at an existing visible label's id, as an alternative to `aria-label`.
Extra classes merged onto the input.
Paints the error state. Pair with `FormField`'s `error` for the message.
Text shown while nothing is selected.
Control height, matching `Input` and `Button` at the same size.
Also accepts everything from Omit<React.ComponentPropsWithoutRef<typeof import("@base-ui/react/combobox").Combobox.Root<ComboboxItem, false>>, "items" | "multiple">.
Coding agents read this reference, with its examples, from the version your project has installed, through the Fuji UI MCP server. Set up your agent
