---
title: >-
  POS UI extensions can now print directly to hardware receipt printers -
  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/pos-ui-extensions-can-now-print-directly-to-hardware-receipt-printers
  md: >-
    https://shopify.dev/changelog/pos-ui-extensions-can-now-print-directly-to-hardware-receipt-printers.md
metadata:
  effectiveApiVersion: 2026-07
  affectedApi:
    - displayName: POS Extensions
      handle: pos-extensions
  primaryTag:
    displayName: API
    handle: api
  secondaryTag:
    displayName: New
    handle: new
  indicatesActionRequired: false
  createdAt: '2026-07-23T18:59:54-04:00'
  postedAt: '2026-07-27T12:00:00-04:00'
  updatedAt: '2026-07-27T09:33:17-04:00'
  effectiveAt: '2026-07-27T12:00:00-04:00'
---

July 27, 2026

Tags:

* POS Extensions
* 2026-07

# POS UI extensions can now print directly to hardware receipt printers

POS UI Extensions `2026-07` introduces the [Printing API](https://shopify.dev/docs/api/pos-ui-extensions/2026-07/target-apis/platform-apis/printing-api) (`shopify.printing`), which enables extensions to discover hardware printers with `getPrinters()` and send documents directly to a connected receipt printer with `print()`.

The Printing API supersedes `shopify.print`, which is now deprecated. No immediate action is required; plan to migrate when you adopt `2026-07`.

## What changed

* `shopify.printing.getPrinters()` returns the hardware printers available to the device. Each printer includes an `id`, `name`, and `connected` status.
* `shopify.printing.print(src, options?)` prints the document at `src`. If you omit `options.printer`, the system print dialog opens. If you pass a printer returned by `getPrinters()`, the document prints directly to that printer with no dialog.

The `src` must be either a relative path appended to your app’s `application_url`, or a full URL on the same origin. The document is fetched using the extension’s session token.

Receipt printers can render HTML and images directly. PDFs require the system print dialog: if you pass a `printer` when `src` points to a PDF, `shopify.printing.print` throws an error. For PDFs, always omit `options.printer` and rely on the system print dialog.

Previously, `shopify.print` could only open the system print dialog, which cannot target dedicated receipt printers. Earlier POS UI Extensions API versions are unchanged.

***

**Note:** Hardware printer discovery requires Shopify POS version 11.11.0 or later. On earlier versions, \<code>\<span class="PreventFireFoxApplyingGapToWBR">get\<wbr/>Printers()\</span>\</code> returns an empty array, even when a receipt printer is paired. This does not affect the system print dialog, which remains available.

***

Always handle the empty-array case by falling back to the system print dialog. This also covers merchants without a receipt printer:

```jsx
const printers = await shopify.printing.getPrinters();
const receiptPrinter = printers.find((printer) => printer.connected);

if (receiptPrinter) {
  await shopify.printing.print('/print/receipt', {printer: receiptPrinter});
} else {
  await shopify.printing.print('/print/receipt');
}
```

The Printing API is available on all POS UI extension targets. To verify direct printing, test on a development store with POS 11.11.0 or later and a paired receipt printer. Call `shopify.printing.print` with a printer from `getPrinters()`; if the job prints without a dialog, direct printing is working.

## Related docs

* [Printing API reference](https://shopify.dev/docs/api/pos-ui-extensions/2026-07/target-apis/platform-apis/printing-api)
* [Print API reference (deprecated)](https://shopify.dev/docs/api/pos-ui-extensions/2026-07/target-apis/platform-apis/print-api)
