component · forms
Select
also called dropdown list (nngroup), picker (hig), select menu, pull down menu, native select (shadcn)
A closed control that shows the current choice and opens a list of options when pressed, with no typing.
A select is closed most of the time. It shows one value on one line, and pressing it lifts a list of the alternatives over the layout; picking one puts the list away again. That closed resting state is the point of the control: it costs the same single line whether it holds four options or forty.
What separates a select from a combobox is that you never type into it. Every option has to be readable by eye, which is also the honest limit on the pattern: somewhere past a dozen or so entries, scanning stops working and a control that filters as you type is the better answer. A select is for a set you can hold in your head, like paper sizes, currencies, or a status.
The names vary more than the thing does. “Dropdown” is the everyday word, but it is
loose enough to cover menus and comboboxes too, so it is worth reserving for casual
use. Apple calls the closed control a pop-up button and the term “picker” covers the
list it opens. On the web the plain <select> element is often called the native
select, in contrast with the custom one a design system ships.
The native element is still the cheapest correct answer: it gets the platform’s own
picker, keyboard behaviour, and typeahead for free, including the wheel that iOS
puts up. A custom select has to earn that back by hand, and the pattern to copy is
the select-only combobox: a button that carries aria-haspopup="listbox" and
aria-expanded, a listbox of options with one marked selected, and dismissal on
choosing, on Escape, and on a click outside.
Which word?
| If you want | say |
|---|---|
| one choice from a known list, no typing | select |
| a text field that filters a list as you type | combobox |
| the button opens a list of commands, nothing more | menu button |
| the options are on screen already, not behind a popup | listbox |
| choosing a date where the day of week matters | date picker |
| choosing which model answers the request | model selector |
| picking from a tree inside a field | tree select |
| the iOS drum you spin to pick a value | wheel picker |
| the loose word for anything that opens downward | dropdown |
Implementations
Specimens illustrate the concept; for production use, start here.
| base-ui | Select |