Skip to main content
RadioGroup
@coinbase/cds-web@8.34.1
Radio is a control component that allows users to select one option from a set.
Import
import { RadioGroup } from '@coinbase/cds-web/controls/RadioGroup'
SourceView source codeStorybookView StorybookFigmaView Figma (internal only)
Related components
View as Markdown

Deprecation Notice

Deprecated Component

RadioGroup is deprecated and will be removed in a future version.

Use ControlGroup with role="radiogroup" instead for better accessibility, consistency, and maintainability.

Types

RadioGroup onChange fails without a string type declaration for setGroup fns.

const [group, setGroup] = useState<string>();

Migration Guide

The new recommended approach provides better accessibility, cleaner API, and consistent behavior across the design system.

Loading...

Migration Steps

  1. Replace RadioGroup with ControlGroup:

    // Old (deprecated)
    <RadioGroup
    value={selectedValue}
    onChange={onChange}
    options={{ btc: 'Bitcoin', eth: 'Ethereum' }}
    />

    // New (recommended)
    <ControlGroup
    role="radiogroup"
    ControlComponent={Radio}
    options={[
    { value: 'btc', children: 'Bitcoin' },
    { value: 'eth', children: 'Ethereum' }
    ]}
    value={selectedValue}
    onChange={onChange}
    />
  2. Update options format:

    // Old: Object format
    const options = { btc: 'Bitcoin', eth: 'Ethereum' };

    // New: Array format
    const options = [
    { value: 'btc', children: 'Bitcoin' },
    { value: 'eth', children: 'Ethereum' },
    ];
  3. Update onChange handler:

    // Old: Direct value callback
    const oldOnChange = (value) => setSelected(value);

    // New: Event-based handler
    const newOnChange = (e) => setSelected(e.target.value);
  4. Add proper role:

    // Always include role="radiogroup" for accessibility
    <ControlGroup
    role="radiogroup"
    ControlComponent={Radio}
    // ... other props
    />

Legacy Usage (Deprecated)

Legacy Example

The following examples show the deprecated RadioGroup usage. Do not use this in new code. Use ControlGroup instead.

Basic RadioGroup (Legacy)

Loading...

With Custom Label (Legacy)

Loading...

Color Customization (Legacy)

Like other control components (i.e. Checkbox, Switch), you can customize the color of the Radio by setting the controlColor prop.

Loading...

For more advanced color customization, you can use additional style props on individual Radio components like background, borderColor, and color:

Loading...

Is this page useful?

Coinbase Design is an open-source, adaptable system of guidelines, components, and tools that aid the best practices of user interface design for crypto products.