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.

UI API

The API for interacting with the extension’s UI.

Support
Targets (52)

Supported targets

  • Checkout::Actions::RenderBefore
  • Checkout::CartLineDetails::RenderAfter
  • Checkout::CartLines::RenderAfter
  • Checkout::Contact::RenderAfter
  • Checkout::CustomerInformation::RenderAfter
  • Checkout::DeliveryAddress::RenderBefore
  • Checkout::Dynamic::Render
  • Checkout::PickupLocations::RenderAfter
  • Checkout::PickupLocations::RenderBefore
  • Checkout::PickupPoints::RenderAfter
  • Checkout::PickupPoints::RenderBefore
  • Checkout::Reductions::RenderAfter
  • Checkout::Reductions::RenderBefore
  • Checkout::ShippingMethodDetails::RenderAfter
  • Checkout::ShippingMethodDetails::RenderExpanded
  • Checkout::ShippingMethods::RenderAfter
  • Checkout::ShippingMethods::RenderBefore
  • Checkout::ThankYou::CartLineDetails::RenderAfter
  • Checkout::ThankYou::CartLines::RenderAfter
  • Checkout::ThankYou::CustomerInformation::RenderAfter
  • Checkout::ThankYou::Dynamic::Render
  • purchase.checkout.actions.render-before
  • purchase.checkout.block.render
  • purchase.checkout.cart-line-item.render-after
  • purchase.checkout.cart-line-list.render-after
  • purchase.checkout.chat.render
  • purchase.checkout.contact.render-after
  • purchase.checkout.delivery-address.render-after
  • purchase.checkout.delivery-address.render-before
  • purchase.checkout.footer.render-after
  • purchase.checkout.header.render-after
  • purchase.checkout.payment-method-list.render-after
  • purchase.checkout.payment-method-list.render-before
  • purchase.checkout.pickup-location-list.render-after
  • purchase.checkout.pickup-location-list.render-before
  • purchase.checkout.pickup-location-option-item.render-after
  • purchase.checkout.pickup-point-list.render-after
  • purchase.checkout.pickup-point-list.render-before
  • purchase.checkout.reductions.render-after
  • purchase.checkout.reductions.render-before
  • purchase.checkout.shipping-option-item.details.render
  • purchase.checkout.shipping-option-item.render-after
  • purchase.checkout.shipping-option-list.render-after
  • purchase.checkout.shipping-option-list.render-before
  • purchase.thank-you.announcement.render
  • purchase.thank-you.block.render
  • purchase.thank-you.cart-line-item.render-after
  • purchase.thank-you.cart-line-list.render-after
  • purchase.thank-you.chat.render
  • purchase.thank-you.customer-information.render-after
  • purchase.thank-you.footer.render-after
  • purchase.thank-you.header.render-after

The base API object provided to purchase extension targets.

required

Methods to interact with the extension’s UI.

Examples

React

import {
reactExtension,
useApi,
Button,
Link,
Modal,
TextBlock,
} from '@shopify/ui-extensions-react/checkout';

export default reactExtension(
'purchase.checkout.block.render',
() => <Extension />,
);

function Extension() {
const {ui} = useApi();

return (
<Link
overlay={
<Modal
id="my-modal"
padding
title="Return policy"
>
<TextBlock>
We have a 30-day return policy.
</TextBlock>
<Button
onPress={() =>
ui.overlay.close('my-modal')
}
>
Close
</Button>
</Modal>
}
>
Return policy
</Link>
);
}
Was this page helpful?