Checkbox
A Jetpack Compose Checkbox component for selection controls.
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
Expo UI Checkbox matches the official Jetpack Compose Checkbox API.
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 checkbox
import { useState } from 'react'; import { Host, Checkbox } from '@expo/ui/jetpack-compose'; export default function CheckboxExample() { const [checked, setChecked] = useState(false); return ( <Host matchContents> <Checkbox value={checked} onCheckedChange={setChecked} /> </Host> ); }
Custom colors
import { useState } from 'react'; import { Host, Checkbox } from '@expo/ui/jetpack-compose'; export default function CustomColorsExample() { const [checked, setChecked] = useState(false); return ( <Host matchContents> <Checkbox value={checked} onCheckedChange={setChecked} colors={{ checkedColor: '#6200EE', checkmarkColor: '#FFFFFF', }} /> </Host> ); }
Select all (TriStateCheckbox)
Use TriStateCheckbox for a parent checkbox that reflects the state of its children. It supports three states: 'on', 'off', and 'indeterminate'.
Apply the toggleable modifier to each Row to make the entire row (checkbox + label) tappable with correct accessibility semantics. When using toggleable on the row, omit onCheckedChange/onClick from the checkbox itself to avoid double-handling.
import { useState } from 'react'; import { Host, Checkbox, TriStateCheckbox, Row, Column, Text } from '@expo/ui/jetpack-compose'; import { toggleable } from '@expo/ui/jetpack-compose/modifiers'; export default function SelectAllExample() { const [child1, setChild1] = useState(false); const [child2, setChild2] = useState(false); const [child3, setChild3] = useState(false); const parentState = child1 && child2 && child3 ? 'on' : !child1 && !child2 && !child3 ? 'off' : 'indeterminate'; return ( <Host matchContents> <Column> <Row verticalAlignment="center" modifiers={[ toggleable( parentState === 'on', () => { const newState = parentState !== 'on'; setChild1(newState); setChild2(newState); setChild3(newState); }, { role: 'checkbox' } ), ]}> <TriStateCheckbox state={parentState} /> <Text>Select all</Text> </Row> <Row verticalAlignment="center" modifiers={[toggleable(child1, () => setChild1(!child1), { role: 'checkbox' })]}> <Checkbox value={child1} /> <Text>Option 1</Text> </Row> <Row verticalAlignment="center" modifiers={[toggleable(child2, () => setChild2(!child2), { role: 'checkbox' })]}> <Checkbox value={child2} /> <Text>Option 2</Text> </Row> <Row verticalAlignment="center" modifiers={[toggleable(child3, () => setChild3(!child3), { role: 'checkbox' })]}> <Checkbox value={child3} /> <Text>Option 3</Text> </Row> </Column> </Host> ); }
API
import { Checkbox, TriStateCheckbox } from '@expo/ui/jetpack-compose';
Components
Type: React.Element<CheckboxProps>
A checkbox component.
(value: boolean) => voidCallback function that is called when the checked state changes.
Type: React.Element<TriStateCheckboxProps>
A tri-state checkbox component that supports 'on', 'off', and 'indeterminate' states.
Useful for "select all" patterns where the parent checkbox reflects the state of its children.
() => voidCallback function that is called when the checkbox is clicked.
ToggleableStateThe toggleable state of the checkbox: 'on', 'off', or 'indeterminate'.
Types
Colors for checkbox core elements.
| Property | Type | Description |
|---|---|---|
| checkedColor(optional) | ColorValue | - |
| checkmarkColor(optional) | ColorValue | - |
| disabledCheckedColor(optional) | ColorValue | - |
| disabledIndeterminateColor(optional) | ColorValue | - |
| disabledUncheckedColor(optional) | ColorValue | - |
| uncheckedColor(optional) | ColorValue | - |