Skip to main content
Migrate to Polaris

Version 2025-07 is the last API version to support React-based UI components. Later versions use web components, native UI elements with built-in accessibility, better performance, and consistent styling with Shopify's design system. Check out the migration guide to upgrade your extension.

Shipping

The shipping step is where buyers enter a delivery address and select a shipping method. Use shipping targets to add address validation, delivery date pickers, shipping insurance offers, and messages with delivery information.

  • Delivery date selection: Display a date picker under a specific shipping option so buyers can choose their preferred delivery date.
  • Shipping insurance: Offer shipping protection for high-value orders.
  • Delivery-region restrictions: Display a notice if the buyer's address is outside the allowed delivery region.
  • Carbon-neutral shipping: Highlight eco-friendly shipping options or offer a carbon offset add-on after the buyer selects a method.
  • Split shipping guidance: When an order splits into multiple shipments, display messaging that explains why items are shipping separately.

Anchor to Delivery address targetsDelivery address targets

The render-before and render-after delivery address targets position content around the shipping address form. These targets have read access through API properties and write access through API methods.

purchase.checkout.delivery-address.render-before

This target renders between the shipping address header and the address form fields. Use this target to display address-related guidance or validation messaging before the buyer enters their address.

Read access to cart contents, buyer identity, and delivery details is available through API properties. The buyer's current shipping address is available through useShippingAddress().

Support
Components (59)
APIs (25)

purchase.checkout.delivery-address.render-after

This target renders after the shipping address form fields. Use this target to display post-address content such as delivery notes or address verification results.

Read access to cart contents, buyer identity, and delivery details is available through API properties. The buyer's current shipping address is available through useShippingAddress().

Support
Components (59)
APIs (25)

Anchor to Shipping option list targetsShipping option list targets

The render-before and render-after shipping option list targets position content around the list of available shipping methods. For both targets, you can access the ShippingOptionsListApi using the useApi() hook. This API has two properties, target, which contains the delivery group, and deliverySelectionGroups, which contains information for split-shipping scenarios.

purchase.checkout.shipping-option-list.render-before

This target renders between the shipping method header and the list of shipping options. Use this target to display general shipping information or promotions that apply to all available methods.

Access the current delivery group through api.target and split shipping delivery selection groups through api.deliverySelectionGroups from useApi(). Subscribe to these values with useSubscription() to reactively update your extension. Read access to cart contents, buyer identity, and delivery details is available through API properties.

Support
Components (59)
APIs (25)

purchase.checkout.shipping-option-list.render-after

This target renders after the list of shipping options. Use this target to display supplementary information below the shipping methods, such as delivery disclaimers or estimated arrival date.

This target provides the same API access as render-before through the useApi() hook. Use api-target to read the delivery group and api-deliverySelectionGroups to access information about split-shipping groups. Read access to cart contents, buyer identity, and delivery details is available through API properties.

Support
Components (59)
APIs (25)

Anchor to Shipping option item targetsShipping option item targets

The details.render and render-after shipping option item targets render for each individual shipping option in the list. Both provide access to the ShippingOptionItemApi, which includes target containing the shipping option details, isTargetSelected indicating whether the buyer has selected that option, and renderMode with layout information, accessed through useApi() and useSubscription().

purchase.checkout.shipping-option-item.details.render

For each option in the shipping option list, this target renders under the shipping method name. Use this target to display expanded details for a shipping method, such as a delivery date picker or additional cost breakdowns.

Access the shipping option through api.target, selection state through api.isTargetSelected, and layout context through api.renderMode from useApi(). Subscribe to these values with useSubscription() for reactive updates. Read access to cart contents, buyer identity, and delivery details is available through API properties.

Support
Components (59)
APIs (25)

purchase.checkout.shipping-option-item.render-after

For each delivery option in the list, this target renders after the shipping method details. Use this target to display supplementary information about a shipping method, such as insurance offers or carrier information.

This target provides the same API access as details.render: the shipping option through api.target, selection state through api.isTargetSelected, and layout context through api.renderMode from useApi(). Read access to cart contents, buyer identity, and delivery details is available through API properties.

Support
Components (59)
APIs (25)

  • Use isTargetSelected to limit per-option content: The item-level targets render for every shipping option. Show detailed content only for the selected option to keep the list easy to scan.
  • Account for split shipping: When the order has multiple delivery groups, the shipping option list targets render once per group. Use api.target from useApi() to read the current delivery group and display group-relevant content.

  • Shipping data is read-only: Extensions can read shipping options and delivery groups but can't modify the shipping option list, reorder methods, or change shipping rates.
  • renderMode.overlay affects layout: When api.renderMode.overlay from useApi() is true, the item-level target renders in an overlay context rather than inline. Test your extension with both layout modes to confirm it displays correctly.

Was this page helpful?