Reference version

This is documentation for the next SDK version. For up-to-date documentation, see the latest version (SDK 55).

Checkbox

A Jetpack Compose Checkbox component for selection controls.

Android

Expo UI Checkbox matches the official Jetpack Compose Checkbox API.

Installation

Terminal
npx expo install @expo/ui

If you are installing this in an existing React Native app, make sure to install expo in your project.

Usage

Basic checkbox

CheckboxExample.tsx
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

CustomColorsExample.tsx
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.

SelectAllExample.tsx
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

Checkbox

Android

Type: React.Element<CheckboxProps>

A checkbox component.

CheckboxProps

colors

Android
Optional • Type: CheckboxColors

Colors for checkbox core elements.

enabled

Android
Optional • Type: boolean • Default: true

Whether the checkbox is enabled.

modifiers

Android
Optional • Type: ModifierConfig[]

Modifiers for the component.

onCheckedChange

Android
Optional • Type: (value: boolean) => void

Callback function that is called when the checked state changes.

value

Android
Type: boolean

Indicates whether the checkbox is checked.

TriStateCheckbox

Android

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.

TriStateCheckboxProps

colors

Android
Optional • Type: CheckboxColors

Colors for checkbox core elements.

enabled

Android
Optional • Type: boolean • Default: true

Whether the checkbox is enabled.

modifiers

Android
Optional • Type: ModifierConfig[]

Modifiers for the component.

onClick

Android
Optional • Type: () => void

Callback function that is called when the checkbox is clicked.

state

Android

The toggleable state of the checkbox: 'on', 'off', or 'indeterminate'.

Types

CheckboxColors

Android

Colors for checkbox core elements.

PropertyTypeDescription
checkedColor(optional)ColorValue
-
checkmarkColor(optional)ColorValue
-
disabledCheckedColor(optional)ColorValue
-
disabledIndeterminateColor(optional)ColorValue
-
disabledUncheckedColor(optional)ColorValue
-
uncheckedColor(optional)ColorValue
-

ToggleableState

Android

Literal Type: string

The toggleable state of a tri-state checkbox.

Acceptable values are: 'on' | 'off' | 'indeterminate'