A checkout UI extension will register for one or more extension points using `shopify.extend()`. An extension point in a UI extension is a plain JavaScript function. This function receives an API object for interacting with the application, and is expected to return a value in a specific shape. The input arguments and the output type are different for each extension point.
Static extension points render immediately before or after most core checkout features such as contact information, shipping methods, and order summary line items. Merchants use the [checkout editor](/apps/checkout/test-ui-extensions#test-the-extension-in-the-checkout-editor) to activate and place the extension in the checkout experience. When a core checkout feature isn't rendered, neither are the static extension points tied to it. For example, shipping methods aren't shown when customers select the option for store pickup and the UI extensions that load before or after the shipping method aren't rendered. Choose static extension points when your content and functionality is closely related to a core checkout feature. An example is a shipping delay notice.
Dynamic extension points render between core checkout features. Merchants can use the [checkout editor](/apps/checkout/test-ui-extensions#test-the-extension-in-the-checkout-editor) to place the extension in any one of the [supported locations](/docs/api/checkout-ui-extensions/extension-points-overview#supported-locations) for the dynamic extension point. When a checkout feature for that location is hidden, dynamic extensions are still rendered. For example, an extension placed above the shipping address will still render even for digital products which do not require a shipping address. Choose dynamic extension points when your content and functionality works independently of a core checkout feature. An example is a field to capture order notes from the customer.
This is the first step in the checkout process where the buyer enters contact information and a delivery address. See [all extensions points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
Point in checkout where the buyer selects a shipping method. See [all extensions points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
Point in checkout where the buyer enters their payment information. See [all extensions points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
Summary of the cart contents, discounts, and order totals. See [all extensions points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
Accelerated checkout where Shopify pre-fills buyer information using their Shop Pay account. See [all extensions points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
Point in checkout where the buyer can select a store location to pick up their purchase. See [all extensions points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
Point in checkout where the buyer can select a pickup point to have their purchase delivered to. See [all extensions points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
`DEV PREVIEW` All checkout pages (information, shipping, and payment) are combined into a single page with the order summary. Get started testing extensions on [one-page checkout](/docs/apps/checkout/best-practices/testing-ui-extensions#one-page-checkout).
Checkout is where buyers go to purchase goods. Checkout consists of the information, shipping, and payment steps in addition to the order summary and Shop Pay. Learn more about building [custom functionality for checkout](/docs/api/checkout-ui-extensions).
Displays all order information to buyers. See [all thank you page extension points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
Summary of the cart contents, discounts, and order totals. See [all thank you page extensions points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
The thank you page is shown to buyers immediately after a checkout is successfully submitted. Learn more about building for [the thank you page](/docs/apps/checkout/thank-you-order-status).
Displays all order information to buyers. See [all order status page extension points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
Summary of the cart contents, discounts, and order totals. See [all order status page extensions points](/docs/api/checkout-ui-extensions/apis/extensionpoints).
The order status page is shown to buyers when they return to a completed checkout for order updates. Learn more about building for [the order status page](/docs/apps/checkout/thank-you-order-status).
The `checkout-ui-extensions` library provides an alias for `shopify.extend` in the form of the `extend()` export. This function is also strongly-typed. If you’re working in an editor that supports TypeScript’s language server (we recommend [VSCode](https://code.visualstudio.com)), then you get feedback about the input arguments to that extension point. For extensions that render UI, such as [`Checkout::Dynamic::Render`](#extension-points), the first argument is always a [`@remote-ui` `RemoteRoot` object](https://github.com/Shopify/remote-dom/tree/remote-ui/packages/core#remoteroot) that enables you to render UI components into your extension point in checkout. You don't need to explicitly call [`mount()`](https://github.com/Shopify/remote-dom/tree/remote-ui/packages/core#remoterootmount) on this object. After the callback that you registered for the extension point ends, or if it returns a `Promise` that resolves, your initial UI is rendered.
import {
extend,
Banner,
} from '@shopify/checkout-ui-extensions';
extend(
'Checkout::Dynamic::Render',
(root, api) => {
root.appendChild(
root.createComponent(
Banner,
{},
`Extension version: ${api.extension.version}`,
),
);
},
);