POS PRINTING

POS UI ExtensionsでレシートプリンターへのダイレクトAPI印刷が可能に

2026-07より Printing API (shopify.printing) が登場。ダイアログ不要でハードウェアレシートプリンターへ直接印刷。

POS UI Extensionshopify.printinggetPrinters()プリンター一覧取得Receipt Printer直接印刷 / ダイアログなしprint(src, {printer})HTML/画像 → 直接印刷DEPRECATEDshopify.printシステムダイアログのみ(旧来)POS 11.11.0+ / API 2026-07
OVERVIEW

01この変更が何をもたらすか

POS UI Extensions APIバージョン 2026-07 から、shopify.printing という新しい Printing API が利用できます。接続中のハードウェアレシートプリンターを検出し、システム印刷ダイアログを経由せずにドキュメントを直接送信できるようになります。従来の shopify.print は非推奨となりますが、即座の移行は不要で、2026-07 を採用するタイミングで計画的に移行が推奨されます。

BEFORE / AFTER

02Before / After:印刷フローの変化

BEFOREshopify.printシステム印刷ダイアログ接続プリンターを個別指定 ✗ 不可常にダイアログが介在AFTER (2026-07)shopify.printinggetPrinters()プリンター検出print(src,{printer})直接印刷 ✓ダイアログなしプリンターを明示指定して即時出力USE CASES

03業務に活かせる具体ユースケース

課題
レジ担当者が注文確定のたびに印刷ダイアログを手動で操作しており、ピーク時のオペレーションが滞る。
打ち手
getPrinters() でレジ台の専用プリンターを特定し、注文確定イベントに合わせて print('/print/receipt', {printer}) を自動実行するPOS UIエクステンションを構築。
効果
スタッフ操作を1ステップ削減。ピーク時のレジ通過速度が向上し、顧客待ち時間を短縮できる。
技術メモ
POS 11.11.0以降が必要。getPrinters() が空配列を返す場合は自動的にシステムダイアログへフォールバックする分岐を必ず実装すること。
課題
複数のプリンター(フロントレジ用・バックヤード用など)が接続された店舗で、印刷先を状況によって使い分けたい。
打ち手
getPrinters() の戻り値に含まれる idname を参照し、UIに選択肢を提示。スタッフが適切なプリンターを選んで print() に渡せる仕組みをエクステンション上に構築する。
効果
用途別プリンターへの振り分けが1タップで完結。紙の無駄打ちや誤出力を防止できる。
技術メモ
printer オブジェクトには id / name / connected ステータスが含まれる。connected: false のプリンターを渡した場合の挙動は公式ドキュメントで確認すること。
課題
領収書をPDF形式で発行したいが、ダイアログなしでの直接印刷に対応できるか確認したい。
打ち手
PDF出力が必要な場面では options.printer を渡さず、システム印刷ダイアログを意図的に呼び出す実装とする。HTML・画像ベースのレシートテンプレートへの切り替えも検討する。
効果
PDF対応のシステムダイアログと、HTML/画像対応の直接印刷を場面に応じて適切に使い分けられる。PDFに printer を渡すとAPIがエラーをスローする仕様を事前に理解しておくことで予期せぬ障害を防げる。
技術メモ
公式仕様より:src がPDFを指す場合に options.printer を渡すと shopify.printing.print がエラーをスロー。PDFには必ず options.printer を省略すること。
DEVELOPER NOTES

04技術者が押さえるべき5つのポイント

① API対象バージョン

Printing APIは POS UI Extensions 2026-07 で導入。それ以前のAPIバージョンには影響なし。旧 shopify.print は非推奨となるが即時廃止ではなく、2026-07採用時に移行を計画すればよい。

② POS本体バージョン要件

ハードウェアプリンター検出には Shopify POS 11.11.0以降が必要。旧バージョンでは getPrinters() が常に空配列を返す。システム印刷ダイアログは引き続き利用可能なため、空配列時のフォールバック実装が必須。

③ srcの制約

print() に渡す src は、アプリの application_url に付加する相対パス、または 同一オリジンのフルURL のみ受け付ける。ドキュメントはエクステンションのセッショントークンを使ってフェッチされる。

④ フォーマット別の制限

レシートプリンターは HTMLと画像を直接レンダリング可能。PDFはシステム印刷ダイアログが必須で、PDFに対して printer を渡すとAPIがエラーをスロー。用途に合わせてフォーマットを選択すること。

⑤ 動作検証方法

直接印刷の確認は 開発ストア + POS 11.11.0以降 + ペアリング済みレシートプリンター の環境で実施。getPrinters() で取得したプリンターを print()` に渡し、ダイアログなしで印刷ジョブが出力されれば正常。

⑥ 対象ターゲット

Printing APIは 全POS UIエクステンションターゲット で利用可能(元記事記載)。特定のターゲットに限定されないため、既存エクステンションへの統合も容易。

PRINT FLOW — 2026-07Extensionshopify.printinggetPrinters()id / name / connectedprint(src,{printer})Receipt PrinterHTML / 画像 → 直接印刷printerなし or PDF→ システム印刷ダイアログ※ POS 11.11.0+ 必須PDF + printer → Error

「POS UI Extensions 2026-07のPrinting APIを活用することで、レシートプリンターへのダイアログレス直接印刷が実現し、現場スタッフの操作ステップを削減して店頭オペレーションを大幅に効率化できます。」

Source: https://shopify.dev/changelog/pos-ui-extensions-can-now-print-directly-to-hardware-receipt-printers | 公開日: 2026年7月27日