s‑pos‑list Arrives: Virtualized Lists Transform Shopify POS UI Extensions

Shopify POS UI extensions get a powerful new component—s‑pos‑list—in the 2026‑10 API. Learn what changed, who it impacts, and how to adopt the virtualized list for faster, memory‑efficient rendering.

s‑pos‑list Arrives: Virtualized Lists Transform Shopify POS UI Extensions
6 sections

Shopify has just released a major UI upgrade for POS extensions. The 2026‑10 API introduces s‑pos‑list, a virtualized list component that replaces the old List component and lets developers build mixed‑type rows with custom templates while dramatically improving performance on large data sets. If you build or maintain POS extensions, this update is worth a close look.

What Changed

The classic List component, which shipped up to API version 2025‑07, has been retired. It rendered every row as a separate view, causing display time and memory usage to grow linearly with list size. The new s‑pos‑list component fills the gap in Polaris web components, offering a virtualized scrolling experience. Developers now provide raw row data and a template for each row type—headings, dividers, content rows, etc.—and the POS engine recycles row views as the user scrolls.

Who Is Affected

  • Developers building POS UI extensions that target API version 2026‑10 or later can start using s‑pos‑list. The component is available in Shopify POS 11.17.0 and newer. Extensions still using API version 2026‑07 or earlier continue to work with the old List component—no breaking change.
  • Merchants won’t see any immediate UI change unless the extensions they rely on adopt s‑pos‑list. The benefit for them is smoother scrolling and reliable rendering of large catalogs or order lists.
  • Why It Matters

    Mapping rows into s‑scroll‑box (the technique used by the old List) forces the POS to create a view for every row upfront. On devices with limited resources—like iPads or low‑end tablets—large lists can lag or even fail to render. s‑pos‑list virtualizes the list, creating only the rows that are visible on screen. In benchmark tests on an iPad (A16) with a complex row layout, s‑pos‑list matched or exceeded the speed of the legacy List while using a fraction of the memory.

    How to Migrate

    No mandatory code change is required; existing extensions will keep working. However, when you bump your extension’s api_version to "2026-10" and confirm the POS version is 11.17.0 or newer, you can replace List with s‑pos‑list to reap performance gains. Below is a side‑by‑side mapping that shows the minimal adjustments:

    // Before (2025‑07)

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

    <List rows={myRows}>

    {(row) => <RowComponent data={row} />}

    </List>

    // After (2026‑10)

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

    <sPosList rows={myRows}>

    <template slot="heading" let:row>

    <HeadingComponent data={row} />

    </template>

    <template slot="divider" let:row>

    <DividerComponent />

    </template>

    <template slot="content" let:row>

    <ContentComponent data={row} />

    </template>

    </sPosList>

    Key points in the migration:

  • Set the API version to "2026-10" in the extension’s manifest (extension.config.yml).
  • Import s‑pos‑list from the POS UI extensions package instead of List.
  • Define row templates using the <template> element and the slot attribute (e.g., "heading", "divider", "content"). Each template receives a "row" variable you can bind to your custom web components.
  • Pass raw data via the rows prop. The virtualizer handles rendering only the visible rows.
  • Action Checklist

  • Verify your POS app is running on version 11.17.0 or later (Shopify admin > Settings > POS > App version).
  • Update extension.config.yml → api_version: "2026-10" for any extension you want to modernize.
  • Replace List imports with s‑pos‑list and add appropriate <template> slots.
  • Test on a device with a large list (e.g., product catalog > 500 items) to confirm smooth scrolling and no memory spikes.
  • Deploy to a staging store first; once verified, push to production.
  • Conclusion

    s‑pos‑list is a welcome performance upgrade for Shopify POS UI extensions, especially for merchants with extensive inventories or order histories. While the change is optional, adopting the 2026‑10 API now positions your extensions for faster rendering, lower memory usage, and a more polished in‑store experience. Ready to boost your POS UI? Update your extension’s API version, swap in s‑pos‑list, and watch large lists glide effortlessly.

    If you have questions or need help with the migration, reach out in the Shopify Developers Discord or drop a comment below. Happy coding!

    Tags
    Sources

    Related Articles

    Unlock Retail Store Discovery with Shopify’s New UCP Location Search & Lookup

    Unlock Retail Store Discovery with Shopify’s New UCP Location Search & Lookup

    Shopify now lets apps locate a merchant’s physical stores via UCP location search and lookup. Learn what changed, who’s affected, and how to add the capabilities to your storefront integration.

    October 22, 20264 min
    Reactive Storage Boosts POS UI Extensions with Real‑Time Sync

    Reactive Storage Boosts POS UI Extensions with Real‑Time Sync

    Shopify’s latest POS UI extension update introduces shopify.storage.current, a reactive storage API that automatically syncs data across extension targets on the same device. Learn what changed, who it impacts, and how to implement it in minutes.

    October 22, 20264 min
    Polaris 2.0 Is Now Stable: What Shopify Developers Must Do Today

    Polaris 2.0 Is Now Stable: What Shopify Developers Must Do Today

    Polaris 2.0 has moved to the stable CDN, bringing a redesigned admin look, new semantic versioning, and updated TypeScript types. Learn how to switch script tags, update React Router apps, and keep your Shopify extensions on the latest UI framework.

    October 22, 20264 min
    Tiled Checkout Payment Methods: What Merchants Need to Know

    Tiled Checkout Payment Methods: What Merchants Need to Know

    Shopify’s refreshed payment method design now shows a sleek tiled layout for up to four payment options. Learn how this change works, who it impacts, and what steps to take to optimize your checkout experience.

    October 22, 20265 min