--- title: ChoiceList description: Present multiple options to users, allowing either single selections with radio buttons or multiple selections with checkboxes. api_version: 2026-01 api_name: checkout-ui-extensions source_url: html: https://shopify.dev/docs/api/checkout-ui-extensions/latest/polaris-web-components/forms/choicelist md: https://shopify.dev/docs/api/checkout-ui-extensions/latest/polaris-web-components/forms/choicelist.md --- # Choice​List Present multiple options to users, allowing either single selections with radio buttons or multiple selections with checkboxes. ## Properties * **disabled** **boolean** **Default: false** Disables the field, disallowing any interaction. `disabled` on any child choices is ignored when this is true. * **error** **string** Indicate an error to the user. The field will be given a specific stylistic treatment to communicate problems that have to be resolved immediately. * **id** **string** A unique identifier for the element. * **label** **string** Content to use as the field label. * **labelAccessibilityVisibility** **'visible' | 'exclusive'** **Default: 'visible'** Changes the visibility of the component's label. * `visible`: the label is visible to all users. * `exclusive`: the label is visually hidden but remains in the accessibility tree. * **multiple** **boolean** **Default: false** Whether multiple choices can be selected. * **name** **string** An identifier for the field that is unique within the nearest containing form. * **values** **string\[]** An array of the `value`s of the selected options. This is a convenience prop for setting the `selected` prop on child options. * **variant** **'auto' | 'list' | 'inline' | 'block' | 'grid'** **Default: 'auto'** The variant of the choice grid. * `auto`: The variant is determined by the context. * `list`: The choices are displayed in a list. * `inline`: The choices are displayed on the inline axis. * `block`: The choices are displayed on the block axis. * `grid`: The choices are displayed in a grid. ## Events Learn more about [registering events](https://shopify.dev/docs/api/checkout-ui-extensions/2026-01/using-polaris-components#event-handling). * **change** **CallbackEventListener\** A callback that is run whenever the control is changed. ### CallbackEventListener ```ts (EventListener & { (event: CallbackEvent & TData): void; }) | null ``` ### CallbackEvent ```ts TEvent & { currentTarget: HTMLElementTagNameMap[TTagName]; } ``` ## Choice Create options that let users select one or multiple items from a list of choices. * **accessibilityLabel** **string** A label used for users using assistive technologies like screen readers. When set, any children or `label` supplied will not be announced. This can also be used to display a control without a visual label, while still providing context to users using screen readers. * **defaultSelected** **boolean** **Default: false** Whether the control is active by default. * **disabled** **boolean** **Default: false** Disables the control, disallowing any interaction. * **error** **boolean** **Default: false** Set to `true` to associate a choice with the error passed to `ChoiceList` * **id** **string** A unique identifier for the element. * **selected** **boolean** **Default: false** Whether the control is active. * **value** **string** The value used in form data when the control is checked. ## Slots Learn more about [component slots](https://shopify.dev/docs/api/checkout-ui-extensions/2026-01/using-polaris-components#slots). * **details** **HTMLElement** Additional text to provide context or guidance for the input. This text is displayed along with the input and its label to offer more information or instructions to the user. * **secondaryContent** **HTMLElement** Secondary content for a choice. * **selectedContent** **HTMLElement** Content to display when the option is selected. This can be used to provide additional information or options related to the choice. Examples ## Preview ![](https://cdn.shopify.com/shopifycloud/shopify-dev/production/assets/assets/images/templated-apis-screenshots/checkout-ui-extensions/2025-10/choice-list-default-D6RTGm1A.png) ### Examples * #### Code ##### Default ```html Yonge-Dundas Square locations Distillery District location Yorkville location ``` * #### List Variant ##### Description This classic and flexible variant is ideal for \up to 10 choices\. It’s the most common and recognizable format for making a selection from a vertical list. \Best Practices\ \ ##### Default ```html Yonge-Dundas Square Distillery District Yorkville ``` * #### Block Variant ##### Description This variant is designed for options that require both \secondary content\ and a clear visual separation. It’s well-suited for \up to 5 choices\ where each item is complex and needs its own defined space. Due to its "chunky" footprint, using more than 5 can take up too much vertical space. \Best Practices\ \ ##### Default ```html Yonge-Dundas Square 1 Dundas St E, Toronto ON 1.2 km Distillery District 55 Mill St, Toronto ON 4 km Yorkville 55 Avenue Rd, Toronto ON 6 km ``` * #### Inline Variant ##### Description This compact variant is ideal when \screen real estate is limited\. It works best for \up to 3 to 5 choices\ depending on the typical length of the content. \Best Practices\ \ ##### Default ```html $3.50 $4.50 $5.50 Other ``` * #### Grid Variant ##### Description This variant is best for \up to 6 choices\, arranged in a grid-like layout. It’s great for scenarios where choices have significant visual differences and need to be arranged for easy comparison. \Best Practices\ \ ##### Default ```html Standard Deluxe Personalized ```