--- title: Migrate to the Polaris select component description: >- Learn how to migrate the Select component to Polaris web components in checkout and customer account UI extensions. source_url: html: >- https://shopify.dev/docs/apps/build/checkout/migrate-to-web-components/select md: >- https://shopify.dev/docs/apps/build/checkout/migrate-to-web-components/select.md --- # Migrate to the Polaris select component The Polaris select component renders a dropdown for selecting a single value from a list of options. It replaces the previous [`Select`](https://shopify.dev/docs/api/checkout-ui-extensions/2025-07/ui-components/forms/select) component and is available as [``](https://shopify.dev/docs/api/checkout-ui-extensions/latest/web-components/forms/select) in API versions 2025-10 and newer. *** ## Updated properties The following properties are different in the Polaris select component. ### options The previous `Select` `options` array prop has been replaced with `` child elements (documented under [``](https://shopify.dev/docs/api/checkout-ui-extensions/latest/web-components/forms/select)). Each option becomes an `` child with a `value` attribute; the visible text goes between the tags (as children). The old `options[].label` string becomes that child text. ## Migrating options from array to children ##### Latest (Preact) ```tsx import '@shopify/ui-extensions/preact'; import {render} from 'preact'; export default function extension() { render(, document.body); } function Extension() { return ( Canada United States Mexico ); } ``` ##### Pre-Polaris (2025-07) ```tsx import { reactExtension, Select, } from '@shopify/ui-extensions-react/checkout'; export default reactExtension( 'purchase.checkout.block.render', () => , ); function Extension() { return ( setSize(value)} options={[ {value: 'small', label: 'Small'}, {value: 'medium', label: 'Medium'}, {value: 'large', label: 'Large'}, ]} /> ); } ``` *** ## Removed properties ### readonly The Polaris select component no longer supports `readonly`. Use `disabled` instead if you need to prevent interaction. **Note:** `disabled` changes the visual appearance and excludes the field from form submission. If you need to display read-only information, consider using a text component instead of a select. ***