Checkboxes, Radio & Toggle
Note: Standalone vs. Form fields: Each block has a standalone version (drives page state immediately) and a Form field version (submits with the form's validation and data payload). This page covers both. For form fields, see Form Field Types for the full property reference.
Checkbox Block (Standalone)
A single standalone checkbox with a label, optional description and help text, and a boolean value. Supports an indeterminate "mixed" visual state and exposes methods to set or toggle the value from any interaction.
When to Use
A single yes/no choice that lives outside a form — a filter toggle, a "terms accepted" indicator.
A "select all" control driving other blocks — bind Indeterminate when some but not all children are selected.
For checkboxes inside a form submission, use the Form block's Checkbox field instead.
Properties
| Property | Type | Default | Where to Set | Description |
label | string | — | Content → Label | Text shown next to the checkbox. |
description | string | — | Content → Description | Secondary line under the label. |
help | string | — | Content → Help Text | Additional information below the checkbox. |
defaultValue | string (bindable → boolean) | — | Content → Checked | Initial checked state. Dynamic bindings update whenever the value changes — silently, without firing On Check Change. |
indeterminate | boolean | — | Content → Indeterminate | Shows the "mixed" visual state. Does not change the underlying boolean value — clicking still flips true/false. |
size | sm | md | sm | Appearance → Size | Checkbox control size. |
disabled | condition | — | Appearance → Disabled | Greys out and ignores clicks when condition is true. |
visibility | condition | — | Appearance → Visibility | Shows or hides the block. |
Event, Methods & State
| Item | Type | Description |
| On Check Change | event | Fires when the user checks or unchecks the box. Payload: value (boolean). |
Set Value | method | Sets the checked state to the given value. |
Toggle | method | Flips the current checked state. |
{{ id.value }} | boolean state | Current checked state. |
Warning: Only exact true counts as checked. When the default value arrives as text, only the exact string "true" (case-sensitive, trimmed) checks the box. "True", "yes", "1" all resolve to unchecked.
Note: Indeterminate is visual only. Setting Indeterminate changes the appearance but not the underlying boolean. Clicking an indeterminate checkbox still just toggles true/false.
Checkbox Field (inside a Form)
A multi-pick checkbox group inside a Form block. The value is a set of the selected options' value strings. Each option can have its own visibility condition. Options can come from a static list or a data source.
Note: This is different from the standalone Checkbox block. The form Checkbox field renders a group of checkboxes — not a single one — and its value is an array or set of selected values that submits with the form.
Radio Button Block (Standalone)
A single, free-standing radio control with a label and optional description. Holds one boolean value — checked or unchecked. It is not a radio group: each Radio Button block is independent. Build mutual exclusivity yourself, or use the Form block's Radio field for a managed single-choice group.
When to Use
A single opt-in choice presented in radio styling — one option row in a custom chooser.
Build your own mutually exclusive group by dropping several Radio Buttons and unchecking siblings from each one's On Value Change event.
For a ready-made single-choice group with validation, use the Form block's Radio field.
Properties
| Property | Type | Default | Description |
label | string (translatable) | "New Radio Button" | Text beside the radio control. |
description | string (translatable) | — | Secondary text under the label, indented. |
defaultValue | string (bindable) | — (unchecked) | Initial checked state. Dynamic bindings silently reset on change without firing On Value Change. |
size | sm | md | sm | Control size. |
disabled | condition | — | Greys out and ignores clicks. |
visibility | condition | — | Shows or hides the block. |
styles | style set | — | Width/height, margin, padding, background, border. |
Event, Methods & State
| Item | Type | Description |
| On Value Change | event | Fires when the user clicks (checking or unchecking). Payload: value (boolean). |
setValue | method | Sets the checked state to a given value. |
toggle | method | Flips the current checked state. |
{{ id.value }} | boolean state | Current checked state. |
Warning: Clicking a checked radio unchecks it. Unlike native browser radio buttons, clicking again deselects. If your design requires "always one selected", enforce it in your event handlers.
Note: There is no built-in grouping. Each Radio Button block is independent. Build exclusivity by calling setValue on siblings from each button's On Value Change, or use the Form block's Radio field which manages grouping automatically.
Radio Field (inside a Form)
A managed single-choice group of radio buttons inside a Form block. The value is the selected option's value string. Options can be static or from a data source, each with an optional visibility condition. Participates in form validation and the submit payload.
Use when one choice must be made from a small, always-visible set.
For longer lists or a collapsed picker, use the Single-select Dropdown field instead.
Toggle Block (Standalone)
An on/off switch with optional label, description, and help text. Its boolean value is exposed to the page for binding. It fires a single On Change event when flipped and can display a localized "On"/"Off" text label beside the switch. Available on web and native mobile apps.
When to Use
Flip a single setting on or off — notifications, dark mode, feature opt-ins — and react immediately via On Change.
Drive other blocks' visibility or a data source parameter from
{{ id.value }}.Inside a Form block, use the Form's Switch field instead.
Properties
| Property | Type | Default | Description |
label | string (translatable) | — | Text shown beside the switch. |
description | string (translatable) | — | Secondary text under the label. |
help | string (translatable) | — | Additional guidance below the switch and description. |
defaultValue | string (bindable) | — (off) | Initial on/off state. Dynamic bindings update on change. |
showToggleLabel | boolean | — | Shows "On"/"Off" text beside the switch (localized). |
size | sm | md | — | Switch control size. |
disabled | condition | — | Disables the toggle. |
visibility | condition | — | Shows or hides the block. |
Event, Methods & State
| Item | Type | Description |
| On Change | event | Fires when the user flips the switch. Payload: value (boolean). |
setValue | method | Sets the toggle state programmatically. |
toggle | method | Flips the current state. |
{{ id.value }} | boolean state | Current on/off state. |
Comparison: Checkbox vs. Radio vs. Toggle
| Aspect | Checkbox | Radio Button | Toggle |
| Visual style | Square checkbox | Round radio button | Sliding switch |
| Value | boolean | boolean (single) | boolean |
| Grouping | Single standalone | Single standalone (no built-in group) | Single standalone |
| Indeterminate state | Yes | No | No |
| Localized On/Off label | No | No | Yes |
| Event name | On Check Change | On Value Change | On Change |
| Form field equivalent | Checkbox field / Boolean field | Radio field | Switch field |
Frequently Asked Questions
How do I group multiple Checkbox blocks so only one can be checked at a time?
The standalone Checkbox block has no built-in grouping — each is independent. To enforce single-selection, wire each checkbox's On Check Change event to call setValue(false) on all the other checkboxes. For a proper single-select group, use a Radio Button form field inside a Form, or use a Single-select Dropdown, which was designed for this pattern.
What is the "indeterminate" state on a Checkbox block and how do I use it?
The indeterminate state shows a dash inside the checkbox, indicating a partial or mixed selection — commonly used on a "select all" checkbox when only some child items are checked. It is a visual-only state: setting isIndeterminate = true changes the appearance but the checkbox's actual boolean value remains unchanged. You manage the logic yourself (count checked children and set indeterminate accordingly).
Why does clicking a checked Radio Button block uncheck it?
The standalone Radio Button block is a single boolean component — clicking it again toggles it off. This differs from native HTML radio groups where re-clicking a selected radio does nothing. If you need the standard radio-group behavior (where one option is always selected), use a Radio form field inside a Form block, which provides proper single-selection-from-a-list behavior.
Does the Toggle block work on mobile apps?
Yes — the Toggle block is available on both web and native mobile (iOS and Android). The appearance adapts to the platform's native toggle style on mobile. The Show Toggle Label option lets you display or hide the on/off labels alongside the toggle handle on web; this option may behave differently in the mobile renderer.
Step-by-Step Examples
Filter Toggle on a Dashboard
Drop a Checkbox block above a table. Set Label to "Show archived".
In the table's data source, add a filter:
showArchived = {{ checkbox1.value }}.On On Check Change, refresh the table's data source.
"Select All" with Mixed State
Add a Checkbox block at the top of a list.
Bind Indeterminate to a condition: some rows selected but not all.
Bind Checked to: all rows are selected.
On On Check Change, run an action that selects or clears all rows based on
{{ event.value }}.
Two-Option Exclusive Radio Choice
Drop two Radio Button blocks: "Pay by card" and "Pay by invoice".
On the first button's On Value Change, call
radio2.setValuewith Checked =false.On the second button's On Value Change, call
radio1.setValuewith Checked =false.Downstream logic reads which block's
{{ id.value }}istrue.
Dark Mode Toggle
Drop a Toggle block. Set Label to "Dark mode" and enable Show toggle label.
On On Change, set a page variable
isDarkModeto{{ event.value }}.Bind your theme or background color to
{{ isDarkMode }}.