Skip to main content

Navigation API

The Navigation API provides screen-based navigation functionality for POS UI extensions, allowing you to navigate between screens, manage navigation stacks, and dismiss modal interfaces within full-screen modal workflows. The API enables multi-screen experiences with parameter passing and navigation control.

The global navigation object provides web-standard navigation functionality. Access these properties and methods directly through the global navigation object to manage navigation within modal interfaces.

() => void
required

Dismisses the extension modal completely. Use for closing the modal when workflows are complete, cancelled, or when users need to return to the main POS interface.

(screenName: string, params?: any) => void
required

Navigate to a route in current navigation tree. Pushes the specified screen if it isn't present in the navigation tree, goes back to a created screen otherwise. Use for implementing multi-screen workflows with parameter passing between screens.

() => void
required

Pops the currently shown screen from the navigation stack. Use for implementing back navigation, returning to previous screens, or programmatically navigating backward in multi-screen workflows.

  • Handle navigation parameters effectively: Use navigation parameters to pass data between screens, maintaining workflow context and user progress across screen transitions.
  • Implement proper screen management: Design screens that can be pushed and popped.
  • Provide clear navigation controls: Implement clear navigation controls and feedback so users understand their current location in the workflow and how to navigate between screens.
Was this section helpful?

  • The Navigation API is only available in action (modal) targets and can't be used in action (menu item), block, or tile targets that don't support multi-screen navigation.
  • Screen navigation is based on screen names and the navigation stack, which differs from URL-based navigation patterns found in web applications.
  • Navigation parameters must be serializable and can't contain functions, complex objects, or circular references.
Was this section helpful?

Learn how to navigate between screens, manage navigation stacks, and control multi-screen modal experiences.

Was this section helpful?

Create a multi-screen modal

import React from 'react';
import {
reactExtension,
useApi,
Navigator,
Screen,
Button,
} from '@shopify/ui-extensions-react/point-of-sale';

const SmartGridModal = () => {
const api = useApi<'pos.home.modal.render'>();

return (
<Navigator>
<Screen name="ScreenOne" title="Screen One Title">
<Button
title="Navigate to Screen Two"
onPress={() => api.navigation.navigate('ScreenTwo')}
/>
</Screen>
<Screen name="ScreenTwo" title="Screen Two Title">
<Button
title="Navigate to Screen One"
onPress={() => api.navigation.navigate('ScreenOne')}
/>
</Screen>
</Navigator>
);
};

export default reactExtension('pos.home.modal.render', () => (
<SmartGridModal />
));
Was this page helpful?