Detect when a POS extension screen finishes navigating
Source: Shopify Dev Changelog
Shopify Adds navigatesuccess Event to POS Navigation API
What Changed
Shopify has updated the POS Navigation API to include a new event called navigatesuccess. This event fires only after the destination screen has completed its native transition animation, passing a standard Event object to its callback.
This addresses a timing gap in the existing API. Previously, developers relied on currententrychange, which can fire before the screen has finished appearing on the device. Similarly, the navigate() method’s returned promise resolves without waiting for the transition animation to complete. Neither mechanism gave developers a reliable signal for when a screen transition was fully finished.
Why This Matters for Shopify App Developers
For developers building POS UI extensions, accurately detecting navigation completion is critical for sequencing UI updates, triggering animations, or firing analytics events tied to screen visibility. Without a reliable “transition complete” signal, developers had to implement workarounds such as arbitrary timeouts or guesswork based on currententrychange timing, which could lead to race conditions or UI glitches on slower devices.
The navigatesuccess event removes this ambiguity by giving developers a dedicated hook that fires precisely when the destination screen is ready.
Practical Implications
When implementing backward navigation, developers must register the navigatesuccess listener on the screen that will reappear, not the screen being left, since the outgoing screen is removed from the navigation stack during the transition. Extensions should be audited for existing workarounds built around currententrychange or promise resolution timing, as these can now be replaced with cleaner, more reliable code using navigatesuccess.
This feature is available to POS UI extensions targeting the relevant API version. Developers should consult the official Shopify POS UI extension documentation to confirm the minimum API version required before adopting this event.