Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

Switch component for Stripe Apps


Switch component for Stripe Apps

Use Switches (similar to checkboxes) to indicate or control boolean values.

SDK version

To add the Switch component to your app:

A common use of Switches is for settings that you save immediately—in other words, Switch is rarely part of a larger form that needs to be submitted separately.

Here’s a simple example of a Switch.

Loading example...

<Switch
 label="This is a Switch."
 onChange={(e) => {
 console.log(e.target.checked);
 }}
/>

Switch props

PropertyType
autoFocusOptional boolean | undefined If true, React will focus the element on mount.
checkedOptional boolean | undefined Controls whether the input is selected. When you pass this prop, you must also pass an onChange handler that updates the passed value.
defaultCheckedOptional boolean | undefined Specifies the initial value 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.
nameOptional string | undefined Specifies the name for this input that’s submitted with the form.
onChangeOptional ((event: React.ChangeEvent<HTMLInputElement>) => 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.
readOnlyOptional boolean | undefined If true, the input is not editable by the user.
requiredOptional boolean | undefined If true, the value must be provided for the form to submit.
tabIndexOptional number | undefined Overrides the default tab key behavior. Avoid using values other than -1 and 0.
valueOptional string | undefined Controls the input’s text. When you pass this prop, you must also pass an onChange handler that updates the passed value.

State management

Use the Switch component as an uncontrolled input:

Loading example...

<Switch
 onChange={(e) => {
 console.log(e.target.checked);
 }}
 defaultChecked
 label="This Switch is uncontrolled."
/>

Disabled

You can disable a Switch component, which prevents changes.

Loading example...

<Switch label="This Switch is disabled." defaultChecked disabled />

See also

Last verified 2026-09-24

Is this helpful?