Skip to main content
Renders a boolean input (toggle switch). This is a controlled component that requires an onValueChange callback that updates the value prop in order for the component to reflect user actions. If the value prop is not updated, the component will continue to render the supplied value prop instead of the expected result of any user actions.

Example

Props

boolean
default:false
The value of the switch. If true the switch will be turned on.
(value: boolean) => void
Invoked when the user tries to change the value of the switch. Receives the new value as an argument.
(event: SwitchChangeEvent) => void
Invoked when the user tries to change the value of the switch. Receives the change event as an argument. If you want to only receive the new value, use onValueChange instead.
boolean
default:false
If true, the user won’t be able to toggle the switch.
ColorValue
Color of the foreground switch grip. If this is set on iOS, the switch grip will lose its drop shadow.
{false?: ColorValue, true?: ColorValue}
Custom colors for the switch track.iOS Note: When the switch value is false, the track shrinks into the border. If you want to change the color of the background exposed by the shrunken track, use ios_backgroundColor.
ColorValue
On iOS, custom color for the background. This background color can be seen either when the switch value is false or when the switch is disabled (and the switch is translucent).Platform: iOS

Deprecated Props

ColorValue
Background color when the switch is turned on.Deprecated: Use trackColor insteadPlatform: iOS
ColorValue
Color of the foreground switch grip.Deprecated: Use thumbColor insteadPlatform: iOS
ColorValue
Background color when the switch is turned off.Deprecated: Use trackColor insteadPlatform: iOS

Controlled Component

Switch is a controlled component, which means you must manage its state:
If you don’t update the value prop in response to onValueChange, the switch will not respond to user input.

Styling

Basic Styling

Custom Colors

Platform Differences

iOS

  • Native iOS switch with system styling
  • Supports ios_backgroundColor for the exposed background
  • Track shrinks into a border when value is false
  • Grip has a subtle drop shadow (removed if custom thumbColor is set)

Android

  • Material Design switch component
  • Uses trackColor for the track in both states
  • thumbColor affects the circular button color
  • No drop shadow on the grip

Accessibility

Switch automatically has the switch accessibility role. You can enhance accessibility with:

Common Patterns

Settings Toggle

Form Integration