Skip to main content
U.S. flag

An official website of the United States government

Dot gov

The .gov means it’s official.
Federal government websites often end in .gov or .mil. Before sharing sensitive information, make sure you’re on a federal government site.

Https

The site is secure.
The https:// ensures that you are connecting to the official website and that any information you provide is encrypted and transmitted securely.

Components

Select

Use: Best practice English, Spanish USWDS v3
A select component allows users to choose one option from a menu.

Examples

Default

View va-select default in Storybook

Required

View va-select required in Storybook

Hint text

View va-select with hint text in Storybook

Read only

View va-select inert, or read only in Storybook

Error

View va-select error message in Storybook

Dynamic options

View va-select dynamic options in Storybook

Internationalization

View va-select internationalization in Storybook

Widths

View va-select widths in Storybook

Usage

Additional guidance for VA

Choosing the right component for the task

When deciding which component to use, consider the number of options available to the user. The total number of options will determine which component is right for the task:

  • 2 - 5 options: Use Radio button when there are only a few options that can all be exposed at once.
  • 6 - 15 options: Use Select for a limited number of options.
  • 16 - 100 options: Use Combo box, which combines a select with typeahead functionality for easier selection.
  • 101+ options: Use Search input with typeahead to help users quickly find the right option from a large set.

Exceptions to consider when choosing a component

In some cases, exceptions may be considered when choosing the right component:

  • When the options are known and memorable. Use Combo box if the user will know what to expect as options in the dropdown, such as a list of countries or states. See the USWDS address pattern.
  • When the radio button labels are long or radio tiles contain descriptive text. Long labels within a dropdown might make it difficult to read and select an option. Radio tiles often include descriptive text that cannot be used in a dropdown. In these cases, Radio button may be the better choice.

Contact the Design System team via #platform-design-system for help if you have other use cases that may be considered exceptions.

Errors

Hint text

Code usage

Attributes and Properties

Property Attribute Type Default Description enableAnalytics enable-analytics boolean false Whether or not to fire the analytics events error error string Error message to display. When defined, this indicates an error. formHeading form-heading string The content of the heading if `useFormsPattern` is true. formHeadingLevel form-heading-level number 3 The heading level for the heading if `useFormsPattern` is true. fullWidth full-width boolean false If true, sets the select to take the full-width of its container hint hint string Optional hint text. invalid invalid boolean false Whether or not `aria-invalid` will be set on the inner select. Useful when composing the component into something larger, like a date component. label label string Text label for the field. messageAriaDescribedby message-aria-describedby string An optional message that will be read by screen readers when the select is focused. name name string Name attribute for the select field. reflectInputError reflect-input-error boolean false Whether or not to add usa-input--error as class if error message is outside of component required required boolean false Whether or not this is a required field. showError show-error boolean true Whether an error message should be shown - set to false when this component is used inside va-date or va-memorable-date in which the error for the va-select will be rendered outside of va-select useFormsPattern use-forms-pattern string Enabling this will add a heading and description for integrating into the forms pattern. Accepts `single` or `multiple` to indicate if the form is a single input or will have multiple inputs value value string Selected value (will get updated on select). width width string Displays the select at a specific width. Accepts 2xs (4ex), xs (7ex), sm or small (10ex), md or medium (20ex), lg (30ex), xl (40ex), and 2xl (50ex). Defined in USWDS here: https://github.com/uswds/uswds/blob/develop/packages/uswds-core/src/styles/tokens/units/input-widths.scss

Events

Name Description component-library-analytics The event used to track usage of the component. This is emitted when an option is selected and enableAnalytics is true. vaKeyDown The event attached to select's onkeydown vaSelect The event emitted when the selected value changes vaSelectBlur The event emitted when the select element is blurred

Native Events

  • The native onKeyDown event is available on this component. It can be used by adding the event handler to your component and it will then listen to the event and respond accordingly when the event fires.

Accessibility considerations

Component checklist

Maturity

Guidance
Examples, usage, code usage, content considerations, and accessibility considerations are all complete.
Research
VFS team conducted research on this component which is linked from this page.
Stability
Component has been in production for more than 3 months with no significant issues found.
Adoption
Multiple teams have adopted this component.

Accessibility

While this component has been previously tested against older criteria, it has not yet been audited with the updated testing criteria.

Code assets

Variations
Storybook includes all variations (style, size, orientation, optional iconography, selection, error state, etc.)
Responsive
Component depicted in all responsive breakpoints.
Interactive states
Includes all interactive states that are applicable (hover, active, focus, keyboard focus, disabled).
Tokens
All design attributes (color, typography, layout, etc.) are available as tokens.
Internationalization
Describes i18n attributes.

Visual assets

Variations
Sketch library includes all variations (style, size, orientation, optional iconography, selection, error state, etc.)
Responsive
Component designed to work in all responsive breakpoints.
Interactive states
Includes all interactive states that are applicable (hover, active, focus, keyboard focus, disabled).
Tokens
All design attributes (color, typography, layout, etc.) are available as tokens.
100% complete (11 of 11)

Legend:

  • Complete
  • Incomplete
  • Not applicable
Edit this page in GitHub (Permissions required)
Last updated: Mar 21, 2025