Choice
Options inside a .
The wrapping component will dictate if the choice renders as radio buttons or checkboxes.
Anchor to choicepropsChoiceProps
- Anchor to idididstringstringrequiredrequired
A unique identifier for the choice.
- Anchor to accessibilityLabelaccessibilityLabelaccessibilityLabelstringstring
A label used for buyers using assistive technologies. When set, any
childrensupplied to this component will not be announced to screen reader users.- Anchor to detailsdetailsdetailsstring | RemoteFragmentstring | RemoteFragment
Additional content to be revealed when selected.
- Anchor to disableddisableddisabledbooleanboolean
Whether the choice can be changed.
- Anchor to primaryContentprimaryContentprimaryContentstring | RemoteFragmentstring | RemoteFragment
The primary content for a choice. Rendered below
<label>.- Anchor to secondaryContentsecondaryContentsecondaryContentstring | RemoteFragmentstring | RemoteFragment
The secondary label content for a choice in a
groupChoiceList. Ignored inbasevariant. Rendered on the opposite side to- Anchor to tertiaryContenttertiaryContenttertiaryContentstring | RemoteFragmentstring | RemoteFragment
The tertiary label content for a choice in a
groupChoiceList. Ignored inbasevariant. Rendered belowand.
Preview

Examples
Basic Choice
React
import { reactExtension, Choice, ChoiceList, InlineStack, } from '@shopify/ui-extensions-react/checkout'; export default reactExtension( 'purchase.checkout.block.render', () => <Extension />, ); function Extension() { return ( <InlineStack> <ChoiceList name="ship" value="ship-1" onChange={(value) => { console.log( `onChange event with value: ${value}`, ); }} > <Choice id="ship-1">Ship</Choice> </ChoiceList> <ChoiceList name="gift" value={['gift-1']} onChange={(value) => { console.log( `onChange event with value: ${value}`, ); }} > <Choice id="multipleFirst"> Gift message </Choice> </ChoiceList> </InlineStack> ); }JS
import { extension, ChoiceList, Choice, InlineStack, } from '@shopify/ui-extensions/checkout'; export default extension('purchase.checkout.block.render', (root) => { const choiceList = root.createComponent( ChoiceList, { name: 'ship', value: 'ship-1', onChange: (value) => { console.log(`onChange event with value: ${value}`); }, }, [root.createComponent(Choice, {id: 'ship-1'}, 'Ship')], ); const multipleChoiceList = root.createComponent( ChoiceList, { name: 'gift', value: ['gift-1'], onChange: (value) => { console.log(`onChange event with value: ${value}`); }, }, [root.createComponent(Choice, {id: 'gift-1'}, 'Gift message')], ); const layout = root.createComponent(InlineStack, undefined, [ choiceList, multipleChoiceList, ]); root.appendChild(layout); });
Anchor to best-practicesBest Practices
Include a title that either tells customers what to do or explains their available options.
Label options clearly based on what the option will do.
Avoid options that contradict each other when you’re allowing for multiple selections.