Checkbox
Multi-select option, single yes/no, grouped lists.
One job, a platform's own control: a Checkbox that is one setting (a yes/no, a consent, an opt-in) renders the platform's switch on iOS and Android, where a single setting is a switch (Material 3 on phones included), and stays a checkbox on the web; its role follows what renders (switch there, checkbox here). A Checkbox that selects items in a list, a table's rows or a "select all" parent takes selection: the web keeps the checkbox, Android the Material 3 checkbox, and iOS draws the edit-mode selection circle. indeterminate implies selection, since a mixed state belongs to a "select all" parent and a switch has none.
Pass ref to access the interactive checkbox row, including its label. Use useRef<ComponentRef<typeof Checkbox>>(null) from React, or useRef<View>(null) with React Native's View type. Object and callback refs are supported and detach on unmount. Calling ref.current?.focus() or .blur() delegates to the host without activating the control. Browser focus is supported; native focus depends on the platform and React Native version, and is separate from accessibility focus.
On the web, Space activates the focused control on key release, and Enter also activates it. Holding Space does not repeat the change. Moving focus away, disabling the control, or composing text cancels a pending Space press.
Email notifications
iOS
Email notifications
Android
✓
Email notifications
Web
tsx
Default
Unchecked
Disabled
Sizes
With description
Nested group
Props
Do & Don’t
Unchecked
Don’t
A consent box that starts checked opts users in by default; under GDPR pre-ticked consent is not consent.
Do
Email me product news, offers, and survey invitations.
Leave opt-in consent unchecked so agreeing is a deliberate act the user takes.
Checked
Don’t
A fully checked parent claims every child is selected when only one is, so the state reads as a lie.
Do
–
Select all
✓
Read
Write
Delete
Show the parent indeterminate (a dash, not a tick) when only some children are checked.
Disabled
Don’t
A disabled option with no reason leaves users stuck and guessing.
Do
Export to CSV
Available on the Pro plan
Say why it's unavailable, like a plan gate, or don't show it at all.
Selection
Don’t
Checkboxes allow multiple selections; for a one-of choice they let users pick contradictory options.
Do
Plan
Free
Pro
Enterprise
Radios for one-of-many; reserve checkboxes for independent multi-select.
With description
Don’t
A detached checkbox makes only the 16px box tappable; the label text does nothing.
Do
✓
Email notifications
Get notified when activity happens on your account.
Pass a description and the control stacks the title over its secondary line for you, box aligned to the first text line and the whole row tappable.