Migrate Tag from Polaris React
Use s-chip for static compact information and s-clickable-chip when it performs an action. Use a different control if the old tag represented a removable form value.
Anchor to Choose the destinationChoose the destination
| Polaris React | Polaris web components | Migration type |
|---|---|---|
Tag | s-chip or s-clickable-chip | Direct |
Anchor to Map tag propertiesMap tag properties
| Polaris React | Polaris web components | Migration notes |
|---|---|---|
children | Chip text content | Keep the label short and meaningful without surrounding context. |
onRemove | s-clickable-chip removable and the remove event (onRemove in JSX) | Update the same app-owned collection that renders the chip. |
disabled, navigation, and accessibilityLabel | disabled, href, and accessibilityLabel | Include the value in labels such as "Remove Summer collection". |
Anchor to Migrate the call siteMigrate the call site
-
Inventory every
Tagcall site and record the content, state, events, and accessibility behavior it uses. -
Open the linked Polaris web component reference and map only documented properties, slots, and events.
-
Move unsupported responsibilities into adjacent content or app state instead of passing old props through.
-
After verification, remove the
Tagimport and any Polaris-only state, wrappers, or helpers that no longer have a caller.
Anchor to Preserve these behaviorsPreserve these behaviors
- Accessible names, semantics, and keyboard behavior.
- Visible content plus disabled, loading, selected, or error state that affects the task.
- Click, change, submit, and navigation behavior used by app logic.
Anchor to Test and remove Polaris ReactTest and remove Polaris React
Test every migrated Tag state used by the app. For interactive destinations, verify keyboard operation, focus, and accessible naming. For content destinations, verify document structure and alternative text where applicable. Compare behavior rather than pixel-for-pixel styling.
Don't remove @shopify/polaris while another component still imports it. Once all call sites are migrated, remove the package and its provider-level setup, then run the app's full test suite.
Anchor to Migration exampleMigration example
Migrating Tag
Polaris web components
export function TagMigrationExample() {
return (
<><s-clickable-chip removable>Wholesale</s-clickable-chip></>
);
}Polaris React
import {Tag} from '@shopify/polaris';
export function TagMigrationExample() {
return (
<Tag onRemove={() => {}}>Wholesale</Tag>
);
}