Detect When a POS Extension Screen Finishes Navigating – The New navigatesuccess Event

Shopify’s POS Navigation API now emits a `navigatesuccess` event, letting developers know when a screen’s native transition completes. Learn what changed, who it impacts, and how to update your POS extensions today.

Detect When a POS Extension Screen Finishes Navigating – The New navigatesuccess Event
6 sections

Shopify’s latest POS Navigation API enhancement introduces the navigatesuccess event, giving developers a reliable signal that a screen’s native transition has fully completed. This post breaks down the change, identifies who needs to pay attention, and provides clear, actionable steps to integrate the new event into your POS UI extensions.

What Changed: The navigatesuccess Event

The POS Navigation API now fires a navigatesuccess event after the destination screen finishes its native transition. Unlike currententrychange, which can trigger before the UI is fully visible, and the navigate() promise, which resolves without waiting for the animation, navigatesuccess guarantees the screen is on‑screen and ready for interaction.

Who Is Affected

Only POS UI extensions that target API version 2026-10 and run on POS builds that support the new event will see navigatesuccess. Merchants using older POS hardware or extensions built against previous API versions won’t receive the event, but they also won’t be broken—no migration is required.

How to Listen for navigatesuccess

Add a listener on the screen that will become visible after navigation. When navigating back, attach the listener to the screen that will re‑appear, because the screen you’re leaving gets removed from the DOM.

js

import {extension} from '@shopify/ui-extensions/pos';

export default extension('pos.navigation', (root, {navigation}) => {

// Register once the screen component mounts

navigation.addEventListener('navigatesuccess', (event) => {

console.log('Navigation completed for:', event.target);

// Your post‑navigation logic here (e.g., focus an input, fetch data)

});

// Example navigation trigger

const goToSettings = () => navigation.navigate('settings');

// ...attach goToSettings to a button click

});

Best Practices and Common Pitfalls

• Register on the destination screen – If you attach the listener on the screen you’re leaving, it will be removed before the event fires.

• Don’t rely on `navigate()` promise – It resolves as soon as the navigation request is sent, not when the UI finishes animating.

• Graceful fallback – Guard your code with a version check (if (navigation.on) …) so older POS builds simply skip the listener without error.

• Clean up listeners – If your screen can be unmounted, remove the listener to avoid memory leaks (navigation.removeEventListener('navigatesuccess', handler)).

Next Steps for Your Extension

  • Verify your extension’s apiVersion is set to 2026-10 or later in shopify.extension.toml.
  • Add the navigatesuccess listener wherever you previously depended on currententrychange or the navigation promise.
  • Test on a POS build that supports the new event (Shopify POS 2.0+). If you can’t access a physical device, use the POS emulator in the Shopify CLI.
  • Update your documentation or internal readme to reflect the new reliable navigation signal.
  • Conclusion

    The addition of navigatesuccess removes the guesswork around POS screen transitions, letting developers build smoother, more responsive extensions. No migration is needed, but updating your navigation logic now will future‑proof your app and improve the merchant experience. Have questions or want a deeper dive? Drop a comment below or reach out on the Shopify Community forums.

    Tags
    Sources

    Related Articles

    Detect the Exact Published Version Running in Your Shopify POS Extension

    Detect the Exact Published Version Running in Your Shopify POS Extension

    Learn how the new shopify.extension.version field lets POS UI developers identify which published build is active, why it matters for caching and offline use, and how to implement it safely.

    October 12, 20264 min
    Auto‑Sync Translations in Translate & Adapt: Up to 8 EU Languages Updated Weekly

    Auto‑Sync Translations in Translate & Adapt: Up to 8 EU Languages Updated Weekly

    Shopify’s Translate & Adapt now auto‑syncs content for up to eight EU languages, keeping storefronts fresh without manual re‑translation. Learn how merchants can enable it and what developers should watch.

    October 9, 20265 min
    AI Agents Now See Your Compare‑at Prices – What That Means for Your Store

    AI Agents Now See Your Compare‑at Prices – What That Means for Your Store

    Shopify now shares compare‑at prices with AI shopping agents via the Catalog. Learn who is affected, how to control the setting, and what code changes you may need to make.

    October 9, 20264 min
    Global Catalog REST API Sunset: Migrate to MCP by November 2 2026

    Global Catalog REST API Sunset: Migrate to MCP by November 2 2026

    The Global Catalog REST API will stop serving traffic on November 2 2026. Learn why this matters, who is impacted, and how to transition your apps to the Global Catalog MCP using the Universal Commerce Protocol before the deadline.

    October 9, 20265 min