---
title: >-
  Ensuring POS UI extension stability by hardening callback handling - Shopify
  developer changelog
description: >-
  Shopify’s developer changelog documents all changes to Shopify’s platform.
  Find the latest news and learn about new platform opportunities.
source_url:
  html: >-
    https://shopify.dev/changelog/posts/ensuring-pos-ui-extension-stability-by-hardening-callback-handling
  md: >-
    https://shopify.dev/changelog/posts/ensuring-pos-ui-extension-stability-by-hardening-callback-handling.md
metadata:
  effectiveApiVersion: ''
  affectedApi:
    - displayName: POS Extensions
      handle: pos-extensions
  primaryTag:
    displayName: API
    handle: api
  secondaryTag:
    displayName: Breaking API Change
    handle: breaking-api-change
  indicatesActionRequired: true
  createdAt: '2026-01-26T18:29:34-05:00'
  postedAt: '2026-01-27T16:30:00-05:00'
  updatedAt: '2026-01-27T15:29:52-05:00'
  effectiveAt: '2026-01-27T12:00:00-05:00'
---

January 27, 2026

# Ensuring POS UI extension stability by hardening callback handling

DateJanuary 27, 2026

Flags[Breaking API Change](https://shopify.dev/changelog?filter=breaking-api-change)[Action required](https://shopify.dev/changelog?action_required=true)

SurfacesAPI

Affected APIs[POS Extensions](https://shopify.dev/changelog?api_type=pos-extensions)

Starting with `POS 10.19.0`, unhandled errors in extension callbacks trigger an error page instead of failing silently. This change ensures a more stable and predictable experience for merchants and helps developers identify issues proactively.

To prevent disruptions for merchants and minimize unexpected failures, developers should thoroughly test callbacks and ensure all exceptions are properly handled.

For example, this code will now trigger an error page:

```js
// Before: Errors occur but do not display an error page.
// POS 10.19.0 onwards: Displays an error page upon encountering an error.
<Screen
  name="example"
  title="Example"
  onReceiveParams={(params) => mayNotExist(params)}
></Screen>
```

One solution is to wrap the logic in try/catch blocks:

```js
<Screen
  name="example"
  title="Example"
  onReceiveParams={(params) => {
    try {
      mayNotExist(params);
    } catch (error) {
      // Handle errors.
    }
  }}
></Screen>
```
