How to build an accessible Select in React

Renders a native <select> so options, type-ahead, and arrow-key navigation come from the platform; error text is linked via aria-describedby and role="alert" with aria-invalid on the control.

When to use a Select

When not to use it

Keyboard interactions

Role listbox, verified at WCAG 2.2-AA.

Common mistakes

Avoid: <Select options={fiftyCountries} placeholder="Search country" />

Prefer: <Combobox options={fiftyCountries} />

A long unfiltered native list is hard to scan; Combobox adds type-ahead filtering

Example

<Select label="Role" options={[{ value: "admin", label: "Admin" }]} />

See the full Select reference →