# Choice Options inside a `ChoiceList`. The wrapping `ChoiceList` component will dictate if the choice renders as radio buttons or checkboxes. ### Basic Choice ```tsx 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); }); ``` ## ChoiceProps ### ChoiceProps ### id A unique identifier for the choice. ### disabled Whether the choice can be changed. ### accessibilityLabel A label used for buyers using assistive technologies. When set, any `children` supplied to this component will not be announced to screen reader users. ### details Additional content to be revealed when selected. ### primaryContent The primary content for a choice. Rendered below `