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.

Action API

The Action API provides modal presentation functionality for POS UI extensions, allowing you to launch full-screen modal interfaces from menu items, tiles, and block targets. The API enables navigation between different targets within your extension.

  • Modal workflows: Launch workflows from menu item buttons or tile interfaces.
  • Multi-step processes: Create processes requiring more screen space than basic components allow.
  • Data entry: Implement modal-based forms or configuration interfaces.
  • Wizard interfaces: Build wizard-style interfaces guiding users through complex operations.

The Action API object provides modal presentation functionality for POS UI extensions. Access the following properties on the API object to launch full-screen modal interfaces from menu items, tiles, and block targets.

Anchor to presentModal
presentModal
() => void
required

Presents the corresponding action (modal) target on top of the current view as a full-screen modal. For example, calling this method from pos.purchase.post.action.menu-item.render presents pos.purchase.post.action.render. Use to launch detailed workflows, complex forms, or multi-step processes that require more screen space than simple components provide.


  • Provide clear entry points: Use descriptive button labels and titles that clearly indicate what the modal will contain or what action it will perform, helping users understand what to expect.
  • Handle modal dismissal gracefully: Ensure your modal-based workflows handle user dismissal, saving progress when possible and providing clear feedback about incomplete operations.

Each extension can only present one modal at a time. Subsequent calls to presentModal() while a modal is already open may be ignored or replace the current modal.


Was this page helpful?