--- title: UI description: The API for interacting with the extension’s UI. api_version: 2025-07 api_name: checkout-ui-extensions source_url: html: 'https://shopify.dev/docs/api/checkout-ui-extensions/2025-07/apis/ui' md: 'https://shopify.dev/docs/api/checkout-ui-extensions/2025-07/apis/ui.md' --- # UI The API for interacting with the extension’s UI. ## StandardApi The base API object provided to `purchase` extension targets. * ui Ui required Methods to interact with the extension’s UI. ### Ui * overlay Allows the extension to close an overlay programmatically. Supported overlay components are \[Modal]\(/docs/api/checkout-ui-extensions/2025-07/components/overlays/modal), \[Sheet]\(/docs/api/checkout-ui-extensions/2025-07/components/overlays/sheet) and \[Popover]\(/docs/api/checkout-ui-extensions/2025-07/components/overlays/popover). ```ts Overlay ``` ```ts export interface Ui { /** * Allows the extension to close an overlay programmatically. * * Supported overlay components are [Modal](/docs/api/checkout-ui-extensions/2025-07/components/overlays/modal), [Sheet](/docs/api/checkout-ui-extensions/2025-07/components/overlays/sheet) and [Popover](/docs/api/checkout-ui-extensions/2025-07/components/overlays/popover). */ overlay: Overlay; } ``` ### Overlay * close Closes the overlay with the given ID. ```ts (overlayId: string) => void ``` ```ts interface Overlay { /** * Closes the overlay with the given ID. */ close(overlayId: string): void; } ``` ### Examples * #### ##### React ```jsx import { reactExtension, useApi, Button, Link, Modal, TextBlock, } from '@shopify/ui-extensions-react/checkout'; export default reactExtension( 'purchase.checkout.block.render', () => , ); function Extension() { const {ui} = useApi(); return ( We have a 30-day return policy. } > Return policy ); } ``` ## Examples Examples ### Examples * #### ##### React ```jsx import { reactExtension, useApi, Button, Link, Modal, TextBlock, } from '@shopify/ui-extensions-react/checkout'; export default reactExtension( 'purchase.checkout.block.render', () => , ); function Extension() { const {ui} = useApi(); return ( We have a 30-day return policy. } > Return policy ); } ``` ##### JavaScript ```js import { extension, Button, Link, Modal, TextBlock, } from '@shopify/ui-extensions/checkout'; export default extension( 'purchase.checkout.block.render', (root, {ui}) => { const modalFragment = root.createFragment(); const modal = root.createComponent( Modal, { id: 'my-modal', padding: true, title: 'Return policy', }, root.createComponent( TextBlock, {}, 'We have a 30-day return policy.', ), root.createComponent( Button, { onPress: () => ui.overlay.close('my-modal'), }, 'Close', ), ); modalFragment.appendChild(modal); const link = root.createComponent( Link, { overlay: modalFragment, }, 'Return policy', ); root.appendChild(link); }, ); ``` ## Related [Reference - Targets](https://shopify.dev/docs/api/checkout-ui-extensions/targets) [Reference - Components](https://shopify.dev/docs/api/checkout-ui-extensions/components) [Reference - Configuration](https://shopify.dev/docs/api/checkout-ui-extensions/configuration) [Learn - Tutorials](https://shopify.dev/apps/checkout)