--- title: Product details description: The product details screen appears when merchants search for a product, scan a barcode, or browse inventory during a transaction. This screen displays product information including pricing, inventory levels, variants, and product specifications that merchants need to serve customers. api_version: 2024-07 api_name: pos-ui-extensions source_url: html: https://shopify.dev/docs/api/pos-ui-extensions/2024-07/targets/product-details md: https://shopify.dev/docs/api/pos-ui-extensions/2024-07/targets/product-details.md --- # Product details The product details screen appears when merchants search for a product, scan a barcode, or browse inventory during a transaction. This screen displays product information including pricing, inventory levels, variants, and product specifications that merchants need to serve customers. ### Use cases * **Product information:** Display specifications, care instructions, and detailed descriptions. * **Inventory management:** Adjust stock levels, update pricing, and configure variants. * **Sales optimization:** Show bundling suggestions, upselling opportunities, and product recommendations. * **External integrations:** Connect with inventory systems, PIM (Product Information Management) tools, or supplier platforms. ![Product details targets overview](https://cdn.shopify.com/shopifycloud/shopify-dev/production/assets/assets/images/api/pos-ui-extensions/targets-overview-images/product-details-targets-WeXxrSXw.png) *** ## Product details targets Use these targets for product management capabilities, inventory workflows, or integration with external systems for product information and analytics. ### Product details action (menu item) target `pos.product-details.action.menu-item.render` Renders a single interactive button component as a menu item in the product details action menu. Use this target for product-specific operations like inventory adjustments, product analytics, or integration with external product management systems. Extensions at this target can access the product identifier through the Product API to perform product-specific operations. Menu items typically invoke `api.action.presentModal()` to launch the companion [modal](#product-details-action-modal-) for complete product workflows. Support Components (1) APIs (9) ### Supported components * [Action​Item](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/actions/actionitem) ### Available APIs * [Action API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/standard-apis/action-api) * [Cart API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/contextual-apis/cart-api) * [Connectivity API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/platform-apis/connectivity-api) * [Device API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/platform-apis/device-api) * [Locale API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/standard-apis/locale-api) * [Product API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/contextual-apis/product-api) * [Product Search API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/standard-apis/product-search-api) * [Session API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/standard-apis/session-api) * [Toast API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/standard-apis/toast-api) Examples ### Examples * #### Show a product action menu item ##### Description Create an action menu item on product detail screens. This example demonstrates rendering a button in the product action menu for operations like inventory adjustments, product analytics, or integration with external product management systems. ##### React ```tsx import React from 'react'; import { reactExtension, ActionItem, useApi, } from '@shopify/ui-extensions-react/point-of-sale'; const ActionItemComponent = () => { const api = useApi<'pos.product-details.action.menu-item.render'>(); console.log(`Product ID: ${api.product.id}`); return api.action.presentModal()} />; }; export default reactExtension( 'pos.product-details.action.menu-item.render', () => , ); ``` ##### TS ```ts import {ActionItem, extension} from '@shopify/ui-extensions/point-of-sale'; export default extension( 'pos.product-details.action.menu-item.render', (root, api) => { const actionItem = root.createComponent(ActionItem, { onPress: () => api.action.presentModal(), enabled: true, }); console.log(`Product ID: ${api.product.id}`); root.append(actionItem); }, ); ``` ### Product details action (modal) target `pos.product-details.action.render` Renders a full-screen modal interface launched from product details [menu items](#product-details-action-menu-item-). Use this target for complex product workflows that require forms, multi-step processes, or detailed information displays beyond what a simple button can provide. Extensions at this target have access to product and cart data through the Product API and support workflows with multiple screens, navigation, and interactive components. Support Components (30) APIs (10) ### Supported components * [Action​Item](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/actions/actionitem) * [Badge](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/feedback-and-status-indicators/badge) * [Banner](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/feedback-and-status-indicators/banner) * [Button](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/actions/button) * [Camera​Scanner](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/navigation-and-content/camerascanner) * [Date​Field](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/datefield) * [Date​Picker](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/datepicker) * [Dialog](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/feedback-and-status-indicators/dialog) * [Email​Field](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/emailfield) * [Formatted​Text​Field](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/formattedtextfield) * [Icon](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/media-and-visuals/icon) * [Image](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/media-and-visuals/image) * [List](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/layout-and-structure/list) * [Navigator](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/navigation-and-content/navigator) * [Number​Field](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/numberfield) * [Pin​Pad](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/pinpad) * [Radio​Button​List](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/radiobuttonlist) * [Screen](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/layout-and-structure/screen) * [Scroll​View](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/layout-and-structure/scrollview) * [Search​Bar](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/navigation-and-content/searchbar) * [Section](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/layout-and-structure/section) * [Segmented​Control](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/navigation-and-content/segmentedcontrol) * [Selectable](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/actions/selectable) * [Stack](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/layout-and-structure/stack) * [Stepper](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/stepper) * [Text](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/layout-and-structure/text) * [Text​Area](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/textarea) * [Text​Field](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/textfield) * [Time​Field](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/timefield) * [Time​Picker](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/forms/timepicker) ### Available APIs * [Cart API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/contextual-apis/cart-api) * [Connectivity API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/platform-apis/connectivity-api) * [Device API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/platform-apis/device-api) * [Locale API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/standard-apis/locale-api) * [Navigation API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/platform-apis/navigation-api) * [Product API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/contextual-apis/product-api) * [Product Search API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/standard-apis/product-search-api) * [Scanner API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/platform-apis/scanner-api) * [Session API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/standard-apis/session-api) * [Toast API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/standard-apis/toast-api) Examples ### Examples * #### Show a product action modal ##### Description Create a full-screen modal for product workflows launched from product details menu items. This example shows how to build complex product operations with forms, multi-step processes, and access to product and cart data through the Product API. ##### React ```tsx import React from 'react'; import { Text, Screen, ScrollView, Navigator, reactExtension, useApi, } from '@shopify/ui-extensions-react/point-of-sale'; const Modal = () => { const api = useApi<'pos.product-details.action.render'>(); return ( {`Product ID: ${api.product.id}`} ); }; export default reactExtension('pos.product-details.action.render', () => ( )); ``` ##### TS ```ts import { Navigator, Screen, ScrollView, Text, extension, } from '@shopify/ui-extensions/point-of-sale'; export default extension('pos.product-details.action.render', (root, api) => { const navigator = root.createComponent(Navigator); const screen = root.createComponent(Screen, { name: 'ProductDetails', title: 'Product Details', }); const scrollView = root.createComponent(ScrollView); const text = root.createComponent(Text); text.append(`Product ID: ${api.product.id}`); scrollView.append(text); screen.append(scrollView); navigator.append(screen); root.append(navigator); }); ``` *** ## Best practices * **Show clear action confirmations:** Show clear success or error messages that specify which product was affected and what change was made. Use messages like "Product #1001 updated successfully," "Inventory adjusted for Blue T-Shirt," or "Unable to update - insufficient permissions" to provide immediate feedback. * **Ensure product continuity:** Ensure that product-related changes integrate properly with the overall inventory and sales systems, such as updated product catalog, triggered inventory workflows, and recorded product analytics. * **Handle error states gracefully:** Communicate product data limitations clearly rather than showing generic error messages. If your extension accesses or modifies product information, ensure you handle data responsibly, display only necessary information, and provide clear messaging about any data collection, processing, or sharing that occurs through your extension functionality. * **Write clear and action-oriented labels:** Use action-oriented labels that specify what will happen for this particular product, with descriptive titles that indicate the information type. Use "Update inventory count" or "Product Analytics" instead of generic labels like "Product options" or "Product App." * **Show status and product information:** Show current product status, relevant metrics, and action eligibility to support management decisions, such as inventory levels and status, "Low stock - 5 remaining," and product ID and variant details. *** ## Limitations * You can only render one [`Button`](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/ui-components/actions/button) component for each POS UI extension using the action (menu item) target. * Product data is read-only through the [Product API](https://shopify.dev/docs/api/pos-ui-extensions/2024-07/target-apis/contextual-apis/product-api), which provides only the product ID and variant ID. To access additional product information or modify product data, use external API calls or integrate with the Admin API through your app backend. ***