Select
The selection family on one page: a platform-native select, a custom-styled Select, and a MultiSelect with chips. For a searchable single select, see Combobox.
Native Select
Platform-native select, best for progressive enhancement and mobile pickers.
Select
Custom-styled dropdown (wraps Base UI Select), keyboard-first and scrollable.
Sizes
sm / md / lg, matching Input and Button heights.
States
Disabled and invalid.
Disabled option
Individual items take disabled - the item is skipped by keyboard navigation and shown at reduced opacity.
Controlled
Multi Select
Multi-selection combobox with removable chips. The chevron stays pinned on the right; chips stay on one line and truncate when they overflow.
Many selections overflow
With several values selected the chips truncate and the chevron never shifts.
When to use
- A short, known list of options where users pick from what's shown rather than typing to search - Select.
- Options users need to search or filter by typing - use Combobox instead.
- Multiple values from one list with visible removable chips - MultiSelect.
- A form that must work with zero JS or needs the OS's native picker UI on mobile - NativeSelect.
When not to use
- Long lists (50+ items) without search - switch to Combobox so users can filter by typing.
- Binary choices - a Switch or two Radio options are clearer than a one-of-two Select.
Keyboard
Mobile behavior
- Select and MultiSelect open a positioned popup identical to desktop - no native picker swap.
- NativeSelect renders the OS's own picker (wheel/sheet) on mobile, which is often the better choice for long lists on touch devices.
Accessibility notes
- Base UI Select applies role="listbox"/"option" with aria-selected, and disabled items get aria-disabled plus removal from arrow-key traversal.
- MultiSelect's chip removal buttons each carry their own accessible name ("Remove {label}").
Common mistakes
- Leaving out aria-label (or a linked <label>) on an icon-only or placeholder-only trigger - it announces with no name.
- Using Select where a long, searchable list actually needs Combobox - users are left scrolling instead of typing to filter.
Related components
Select / MultiSelect props
The option list. On Select, disabled items are skipped by keyboard navigation.
Controlled value - the selected item's value for Select, the selected item objects for MultiSelect.
Uncontrolled initial value.
Shown when no value is selected.
Applies the invalid visual/aria state.
API reference
Options to render.
Accessible name for the trigger button. Required when there is no visible `<label>` for this select.
Points at an existing visible label's id, as an alternative to `aria-label`.
Extra classes merged onto the trigger.
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/select").Select.Root<Value>>, "items" | "children">.
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
