Skip to main content

Resolution targets

Feature preview

This feature is available only to approved apps and is subject to change.

Use a resolution target to build the interface where staff address the Required and Recommended findings that an Intercept API callback returns. Your target reads the intercepted event and saves pending work through the Resolution API. Shopify Point of Sale (POS) provides the surrounding navigation and proceed controls, and runs validation again after staff proceed.

Each intercept event requires a resolution target, even when staff fix the issue with a native Shopify POS action, such as adding a cart note. In that case, use the target to tell staff what to do.


Each target needs a matching intercepts declaration under pos.app.ready.data. See Configuration rules.

Anchor to Cart validations resolution Cart validations resolution target

pos.cart.validations.resolution.render

Renders an interface for staff to address cart findings before checkout. Staff can tap the cart validation banner to open it.

The Resolution API event contains {cart}.

Cart validations resolution target in Shopify POS, with the extension area beside the cart and the Complete required action banner
Examples

jsx

import '@shopify/ui-extensions/preact';
import {render} from 'preact';

export default async () => {
render(<Extension />, document.body);
};

const Extension = () => {
const {cart} = shopify.resolution.event.value;
return <s-text>Items to review: {cart.lineItems.length}</s-text>;
};

Anchor to Payment validations resolution Payment validations resolution target

pos.payment.validations.resolution.render

Renders an interface for staff to address findings before a payment proceeds.

The Resolution API event contains {paymentMethod, amount}.

Payment validations resolution target in Shopify POS, with the extension area beside checkout and the Done button
Examples

jsx

import '@shopify/ui-extensions/preact';
import {render} from 'preact';

export default async () => {
render(<Extension />, document.body);
};

const Extension = () => {
const {paymentMethod, amount} = shopify.resolution.event.value;
return (
<s-text>
{paymentMethod.type}: {amount.amount} {amount.currencyCode}
</s-text>
);
};

AvailabilityAPIs
Both resolution targetsCamera API, Connectivity API, Device API, extension metadata (shopify.extension), internationalization (shopify.i18n), Locale API, PinPad API, Print API, Printing API, Product Search API, Resolution API, Scanner API, Session API, Storage API, and Toast API
Cart resolutionMutable Cart API
Payment resolutionRead-only Cart API through ReadonlyCartApi

Anchor to Supported componentsSupported components

Both resolution targets support these components: Badge, Banner, Box, Button, Choice, ChoiceList, Clickable, DateField, DatePicker, DateSpinner, Divider, EmailField, Embed, EmptyState, Heading, Icon, Image, Link, Modal, NumberField, POSList, ScrollBox, SearchField, Section, Spinner, Stack, Switch, Tab, TabList, TabPanel, Tabs, Text, TextArea, TextField, TimeField, and TimePicker.


  • In resolution targets, Button doesn't support the primary variant. A button with variant="primary" renders with the default auto variant.


Was this page helpful?