POS UI Extension Freezing / JS Not Loading After App Backgrounding — Impacts WebSocket Connection & RFID Workflow

Hello Shopify team,

We are experiencing a critical issue with our POS UI extension that affects our integration between Keonn’s RFID POS hardware (AdvanPay) and the Shopify POS app. I’m sharing the full context here as advised by Shopify Support, so the POS UI Extensions development team can review.


Summary of the Issue

Our POS UI extension intermittently becomes unresponsive, its JavaScript stops loading entirely, after the Shopify POS app has been minimized, backgrounded, or after the iPad auto‑locks. When this happens:

  • The extension tile appears, but its JS never loads.

  • Tapping the tile does not open the popup.

  • The WebSocket connection is not initialized, so the extension stops receiving data.

  • The extension status text never updates (it stays frozen with the last known value).

  • The only workaround is to fully restart the Shopify POS app.

This behavior disrupts communication between the Shopify POS app and our hardware, blocking RFID checkout for merchants.


Context

This issue is intermittent but frequent, reported by merchants using the POS on iPad with the following usage pattern:

  • iPad auto‑locks after 5 minutes; POS locks after 2 minutes.

  • Staff frequently switches between apps (Mail, Spotify, Sonos, Safari, Calculator, Calendar, etc.).

  • After a few app switches or lock/unlock cycles, the extension stops loading JS and freezes.

  • Merchants report this can happen multiple times per day, forcing them to abandon our RFID workflow.

We have reproduced this internally on iOS (never on Android).


Technical Details About Our Extension

  • It opens a WebSocket connection automatically when the extension is rendered in the POS home tiles list.

  • It sends a ping every 30 seconds to maintain the connection.

  • When frozen, Shopify POS does not load our JS bundle at all.

  • Adding a second instance of the same extension to the home tiles causes JS to load again, confirming the issue is with POS not invoking our extension JS.


Steps to Reproduce (based on our tests + customer feedback)

  1. Add our extension tile to the POS Home screen.

  2. Use the device normally, switching between apps frequently.

  3. Allow the POS app and/or iPad to auto‑lock several times.

  4. At some point, the extension tile stops functioning:

    • No popup opens when tapping.

    • No WebSocket connection.

    • No JS executed.

    • Status text frozen.

Only a full restart of the POS app recovers functionality.


What We Have Already Tested

  • Reproduced the issue internally on iOS.

  • Ensured our extension handles WebSocket errors and reconnection.

  • Validated that moving our extension tile to the top of the list reduces cases but does not eliminate the issue.

  • Confirmed that the JS bundle is simply not being executed in the failing scenario.


Request for Support

We kindly ask for:

  1. Confirmation whether this is a known issue with POS UI extensions and background lifecycle handling on iOS.

  2. Guidance on expected behavior when the POS app is minimized or when the device locks.

  3. Any recommended patterns to ensure the extension JS reliably loads every time the tile becomes visible.

  4. Investigation into the EPC missing issue, in case it correlates with WebSocket or JS lifecycle problems.

  5. Escalation to the POS UI Extensions engineering team, as recommended by Shopify support.

This issue is critical for our customers, and repeated failures are putting deployments at risk.

Thank you in advance!

Same issue, in my case, even cannot change location under configuration (locations won’t appear), also can’t use POS cart. The only workaround is complete closing POS app, relaunch, PIN, …
Seems an issue in the POS app, can’t get any log in our end. This occurs in iOS and Android, confirmed.