New Polaris in POS Extensions - notes, questions & suggestions

I’ve been updating my POS extension to work with the new Polaris components. Thought I’d drop my notes here.

  1. Double-tap issue with s-clickable: When a s-text-field has focus and I tap a s-clickable component, it requires two taps - the first removes focus, the second triggers the action. I think s-clickable should trigger immediately, even when s-text-field is focused.

  2. Missing loading states: Pages previously had a loading property, but it’s gone in 2025-10 with no replacement. There’s also no spinner component available compared to Checkout and Admin extensions.

  3. Can’t dismiss action modal programmatically: shopify.navigation.dismiss() is no longer available.

  4. Also, is it possible to trigger focus on s-search-field when a modal opens?

  5. Extension name display inconsistencies: The extension name now appears in modals, but there are inconsistencies:

    • Block target shows “description”, but name isn’t visible
    • Modal target shows “name”, but description isn’t visible
    • In Shopify POS settings (Shopify Admin), “description” is used, name isn’t visible
  6. Dev experience: frequent reload failures: Despite recent improvements, when the phone locks or I switch to another app for even a minute, the extension fails to load. Only force-quitting Shopify POS and rescanning the QR code helps. I’m on latest iOS and experiencing this both with iPhone 15 Pro and 17 Pro.

  7. Heavy caching after releases: I’m experiencing very aggressive extension version caching after releasing new app versions, up to few hours. Is there a way to force a refresh? Closing the iOS app doesn’t seem to be enough.

  8. Loading and disabled state broken on s-button: The loading state on s-button using the secondary-actions slot in s-page doesn’t work at all. Also disabled also doesn’t work: button looks exactly the same and it calls onClick when pressed.

  9. Toast missing error state: Unlike Shopify Admin, the toast component doesn’t support an error state.

  10. Missing some types Shopify CLI isn’t generating types for some components, like s-tile.

  11. Translations not supported: Still no support for translations compared to Checkout or Admin extensions.

  12. Buttons can’t link externally: Buttons can’t link to URLs or other apps.

  13. Would love data passing between block and modal: It would be great to pass data through shopify.action.presentModal(). Currently, we fetch the same data in both the block and modal - fetching once would make extensions load faster.

3 Likes