Radio

Radio is a form control for selecting exactly one option from multiple choices. Group with RadioGroup to provide exclusive selection.

2
Weights
3
Sizes
Single
Selection
Radix
Base

Playground

Preview
Dvertical
Size
Color
Weight
Items
Direction
Options
<RadioGroup
  defaultValue="option-1"
>
  <RadioGroup.Item
    value="option-1"
    label="Option 1"
  />
  <RadioGroup.Item
    value="option-2"
    label="Option 2"
  />
  <RadioGroup.Item
    value="option-3"
    label="Option 3"
  />
</RadioGroup>

Sizes

sm
Circle14px
Dot6px
Font12px
Gap6px
Click24px
default
Circle16px
Dot8px
Font14px
Gap8px
Click32px
lg
Circle20px
Dot10px
Font16px
Gap10px
Click36px

Features

With Field

Combine with the Field component to automatically inherit disabled state.

<Field>
  <Field.Label>Notifications</Field.Label>
  <RadioGroup defaultValue="email">
    <RadioGroup.Item value="email" label="Email" />
    <RadioGroup.Item value="push" label="Push" />
    <RadioGroup.Item value="sms" label="SMS" />
  </RadioGroup>
</Field>
<Field>
  <Field.Label>Notifications</Field.Label>
  <RadioGroup defaultValue="email" orientation="horizontal">
    <RadioGroup.Item value="email" label="Email" />
    <RadioGroup.Item value="push" label="Push" />
    <RadioGroup.Item value="sms" label="SMS" />
  </RadioGroup>
</Field>

States

Default
Disabled
<RadioGroup> ... </RadioGroup>
<RadioGroup disabled> ... </RadioGroup>

API

Component Structure

RadioGroup— Radix RadioGroup
.ItemProps

Props

RadioGroup

valueundefined
string

Selected value for controlled mode

defaultValueundefined
string

Initial value for uncontrolled mode

onValueChangeundefined
(value: string) => void

Callback on selection change

size"default"
"sm" | "default" | "lg"

Radio button size (14/16/20px)

color"default"
"default" | "primary"

Border and dot color when checked

weight"bold"
"thin" | "bold"

Border thickness (thin: 1px / bold: 2px)

orientation"vertical"
"vertical" | "horizontal"

Item layout direction

disabledundefined
boolean

Disabled state

requiredundefined
boolean

Required field

nameundefined
string

Form name attribute

looptrue
boolean

Keyboard navigation loop

RadioGroup.Item

value*
string

This item's value (required)

labelundefined
string

Radio button label text

disabledundefined
boolean

Individual disabled state

Anatomy

1
2
3
4
Option A
Option B
statechecked · unchecked
1
Root
RadioGroup container
2
Circle
Outer ring
3
Inner Dot
Shown when selected
4
Label
Option text

Best Practices

Recommended

  • Use for exclusive selection (pick one only)
  • Use for 2–5 options
  • Set a default value
  • Add clear labels to each item

Avoid

  • Use Checkbox for multi-select
  • Consider Select for too many options
  • Use Segmented for tab-like switching
  • Don't use without labels

Accessibility

Keyboard

↑ ↓Move to previous/next item
← →Move to previous/next item
SpaceSelect
TabMove between groups

ARIA Attributes

  • role="radiogroup" Auto-applied
  • aria-checked Auto-managed
  • Focus indicator
  • Roving focus support