Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

Select component for Stripe Apps


Select component for Stripe Apps

Use Select to pick from a set of options in a dropdown.

SDK version

To add the Select component to your app:

Loading example...

<Select
 name="demo-001"
 label="Choose a pet"
 onChange={(e) => {
 console.log(e);
 }}
>
 <option value="">Choose an option</option>
 <option value="dogs">Dogs</option>
 <option value="cats">Cats</option>
</Select>

Select props

PropertyType
childrenRequired React.ReactNode The contents of the component.
autoCompleteOptional string | undefined Specifies one of the possible autocomplete behaviors.
autoFocusOptional boolean | undefined If true, React will focus the element on mount.
cssOptional CSS | undefined Related types: CSS.
defaultValueOptional (string | string[]) | undefined A string (or an array of strings for multiple={true}). Specifies the initially selected option that a user can change.
descriptionOptional string | undefined Descriptive text that will be rendered adjacent to the control’s label.
disabledOptional boolean | undefined Sets whether or not the element should be disabled. Prevents selection.
errorOptional string | undefined Error text that will be rendered below the control.
formOptional string | undefined Specifies the id of the <form> this input belongs to. If omitted, it’s the closest parent form.
hiddenElementsOptional ("label" | "description" | "error")[] | undefined Visually hides the specified elements. The hidden elements will still be present and visible to screen readers.
invalidOptional boolean | undefined Sets whether or not the element is in an invalid state. This is a display-only prop, and will not prevent form submission.
labelOptional React.ReactNode Text that describes the control. Will be both visible and clickable.
multipleOptional boolean | undefined If true, the browser allows multiple selection.
nameOptional string | undefined Specifies the name for this input that’s submitted with the form.
onChangeOptional ((event: React.ChangeEvent<HTMLSelectElement>) => void) | undefined Required for controlled inputs. Fires immediately when the input’s value is changed by the user (for example, it fires on every keystroke). Behaves like the browser input event.
requiredOptional boolean | undefined If true, the value must be provided for the form to submit.
sizeOptional ("small" | "medium" | "large") | undefined The size of the component.
valueOptional (string | string[]) | undefined A string (or an array of strings for multiple={true}). Controls which option is selected.

CSS

PropertyType
widthOptional (number | "auto" | "fill" | "min" | "max" | "fit" | "1/2" | "1/3" | "2/3" | "1/4" | "2/4" | "3/4" | "1/5" | "2/5" | "3/5" | "4/5" | "1/6" | "2/6" | "3/6" | "4/6" | "5/6" | "1/12" | "2/12" | "3/12" | "4/12" | "5/12" | "6/12" | "7/12" | "8/12" | "9/12" | "10/12" | "11/12") | undefined The width of the component. See Sizing for details.

State management

Use the Select component as an uncontrolled input:

Loading example...

<Select
 name="demo-001"
 label="Choose a pet"
 onChange={(e) => {
 console.log(e);
 }}
>
 <option value="">Choose an option</option>
 <option value="dogs">Dogs</option>
 <option value="cats">Cats</option>
</Select>

Disabled

You can disable a Select component, which prevents changes.

Loading example...

<Select name="demo-001" disabled label="Choose a pet">
 <option value="">Choose an option</option>
 <option value="dogs">Dogs</option>
 <option value="cats">Cats</option>
</Select>

Width

Set the width of a Select component using the available values with the css prop:

Loading example...

<Select
 css={{
 width: 'fill',
 }}
 name="demo-001"
 label="Choose a pet"
 onChange={(e) => {
 console.log(e);
 }}
>
 <option value="">Choose an option</option>
 <option value="dogs">Dogs</option>
 <option value="cats">Cats</option>
</Select>

See also

Last verified 2026-09-24

Is this helpful?