This is documentation for the next SDK version. For up-to-date documentation, see the latest version (SDK 54).
ToggleButton
A Jetpack Compose ToggleButton component for togglable buttons.
Expo UI ToggleButton matches the official Jetpack Compose Toggle Button API and provides a button that switches between checked and unchecked states with multiple visual variants.
Installation
- npx expo install @expo/uiIf you are installing this in an existing React Native app, make sure to install expo in your project.
Usage
Basic toggle button
import { useState } from 'react'; import { Host, ToggleButton } from '@expo/ui/jetpack-compose'; export default function BasicToggleButtonExample() { const [checked, setChecked] = useState(false); return ( <Host matchContents> <ToggleButton checked={checked} text="Favorite" onCheckedChange={value => setChecked(value)} /> </Host> ); }
Toggle button variants
Use the variant prop to switch between 'default', 'icon', 'filledIcon', and 'outlinedIcon' styles.
import { useState } from 'react'; import { Host, ToggleButton, Column } from '@expo/ui/jetpack-compose'; import { paddingAll } from '@expo/ui/jetpack-compose/modifiers'; export default function ToggleButtonVariantsExample() { const [checked1, setChecked1] = useState(false); const [checked2, setChecked2] = useState(true); const [checked3, setChecked3] = useState(false); const [checked4, setChecked4] = useState(true); return ( <Host matchContents> <Column modifiers={[paddingAll(16)]}> <ToggleButton checked={checked1} text="Default" variant="default" onCheckedChange={value => setChecked1(value)} /> <ToggleButton checked={checked2} text="Icon" variant="icon" onCheckedChange={value => setChecked2(value)} /> <ToggleButton checked={checked3} text="Filled Icon" variant="filledIcon" onCheckedChange={value => setChecked3(value)} /> <ToggleButton checked={checked4} text="Outlined Icon" variant="outlinedIcon" onCheckedChange={value => setChecked4(value)} /> </Column> </Host> ); }
Toggle button with custom color
import { useState } from 'react'; import { Host, ToggleButton } from '@expo/ui/jetpack-compose'; export default function CustomColorToggleButtonExample() { const [checked, setChecked] = useState(true); return ( <Host matchContents> <ToggleButton checked={checked} text="Custom color" color="#E91E63" onCheckedChange={value => setChecked(value)} /> </Host> ); }
Disabled toggle button
import { Host, ToggleButton } from '@expo/ui/jetpack-compose'; export default function DisabledToggleButtonExample() { return ( <Host matchContents> <ToggleButton checked={false} text="Disabled" disabled /> </Host> ); }
API
import { ToggleButton } from '@expo/ui/jetpack-compose';
Component
Type: React.Element<ToggleButtonProps>
A toggle button component that can be toggled on and off.
When text prop is provided, it displays the text.
Otherwise, custom children can be passed to render custom content.
(checked: boolean) => voidCallback that is called when the checked state changes.
string • Default: 'default'The variant of the toggle button.
'default'- Material 3 ToggleButton'icon'- Icon toggle button'filledIcon'- Filled icon toggle button'outlinedIcon'- Outlined icon toggle button
Acceptable values are: 'default' | 'icon' | 'filledIcon' | 'outlinedIcon'