Skip to content

Match existing checkout extension APIs#4488

Draft
andy-chhuon wants to merge 434 commits into
2026-01-rcfrom
2026-07-rc
Draft

Match existing checkout extension APIs#4488
andy-chhuon wants to merge 434 commits into
2026-01-rcfrom
2026-07-rc

Conversation

@andy-chhuon

Copy link
Copy Markdown
Contributor

Background

(Provide a link to any relevant issues AND provide a TLDR of the issue in this pull request)

Solution

(Describe your solution, why this approach was chosen, and what the alternatives/impacts may be)

🎩

  • ...

Checklist

  • I have 🎩'd these changes
  • I have updated relevant documentation

laurelthorburn and others added 30 commits March 30, 2026 15:13
Port enriched JSDoc descriptions from checkout-web (shop/world#548830) to
ui-extensions 2026-04-rc. Covers all 16 Checkout APIs across 10 files:
shared types, StandardApi, CheckoutApi, OrderConfirmationApi, cart line,
shipping option, pickup location, and pickup point APIs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The boolean represents consent granted, not opt-out. Align with the
corrected checkout-web description.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Re-apply the full checkout-web diff after review feedback. Includes
updated descriptions for localizedFields, applyTrackingConsentChange,
and other refinements from PR review.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Re-apply full checkout-web diff with review feedback. Includes
{API_VERSION} placeholder URLs, updated descriptions, and Shopify
Function link fixes. All fully qualified URLs preserved.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…iptions-2026-04-rc

Enrich JSDoc for Checkout APIs property descriptions, 2026-04-rc
… for media and visuals components (#4205)

* Description improvements for media and visuals components

Made-with: Cursor

* Revise command and commandFor descriptions under map marker

* Restore change
Update JSDoc comments on StandardApi properties, shared types, and
Capability descriptions. Regenerate generated_docs_data_v2.json.

Addresses review feedback:
- Remove .doc.ts, examples, and static generated files from PR
- Use {API_VERSION} in all version-specific links
- Embed @see links in description text
- Lowercase "web pixels" with updated URL
- Capitalize Capability descriptions
- Add BCP-47 link to Language JSDoc

Made-with: Cursor
…-descriptions-2026-04-rc

[Customer account UI extensions 2026-04-rc]: Platform APIs descriptions
Adding in types for purchaseType and recurringCycleLimit fields
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…-2026-04-rc

Add missing target overview screenshots to checkout (2026-04-rc)
…-2026-04-rc

fix: post-process generated_docs_data_v2.json in checkout build 2026-04-rc
…ngCycleFields

Revert "Adding in types for purchaseType and recurringCycleLimit fields"
…tions being pulled into docs (#4256)

* Remove duplicate descriptions being pulled into docs

* Restore @publicdocs tags while keeping descriptions removed

The previous commit removed both the descriptions and the @publicdocs
tags. The tags are still needed for docs generation - only the
duplicate description text should be removed.

Made-with: Cursor
janezhu918 and others added 30 commits June 9, 2026 11:53
Co-authored-by: AI (Pi/GPT-5.5) <noreply@pi.dev>
…s-2026-07

Document POS discount allocation API version
Extends IntentAction to include 'pick', IntentType to include 'shopify/File', and updates JSDoc for IntentInvokeApi to document file-picking workflows with example usage.
Add generated checkout and customer account UI extension Section declarations and docs data for the existing padding prop. Public API consumers can now pass padding="base" or padding="none" to s-section on both surfaces.


Orchestrated-by: ae <noreply@shopify.com>

Co-authored-by: GPT-5.5 <noreply@openai.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
[File Picker Intent] add File picker intent type and action to public Intents API types
Runs `docs:admin 2026-07-rc` to bring the admin-surface generated docs current
with source, including the `pick` action and `shopify/File` resource type added
in #4499. Same pattern as #4457 (checkout). Needed so the File-picker reference
(`pick:shopify/File`) renders in the <TypeDefinition> on shopify.dev.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Regenerate admin docs JSON for 2026-07-rc
Add a README for the Admin UI extensions docs sync workflow, including the required final App Bridge docs sync step from Shopify/extensibility to preserve merged App Home component docs.
### Background

Admin UI extensions docs are generated from `Shopify/ui-extensions` and copied into `shopify-dev`. There is a required follow-up sync from `Shopify/extensibility` that needs to run last so App Home docs keep merged App Bridge and Polaris component data.

### Solution

- Add `packages/ui-extensions/docs/surfaces/admin/README.md` documenting the safe sync order.
- Call out that `docs:sync` must be rerun whenever `docs:admin` is rerun afterward.
- Include a copy-paste-safe `2026-04` command sequence.

### 🎩

Docs-only change. Self-reviewed the command order and verified shell commands are each on a single copy-paste-safe line.

### Checklist

- [x] I have updated relevant documentation
These files under docs/surfaces/point-of-sale/staticPages/examples/ and
docs/surfaces/point-of-sale/mdxExamples/ were missed in the cleanup after
the new docs rollout. Their examples now live in the docs repo as code
block source files, so they're no longer needed here.

Also removes the now-stale 'mdxExamples/' eslint ignore pattern.
The buyerJourney property's JSDoc pointed at
/docs/api/checkout-ui-extensions/.../apis/buyer-journey#examples, which 404s
under /latest. The docs were reorganized from apis/<name> to
target-apis/checkout-apis/<name>-api, and the #examples anchor no longer
exists (examples now render via the example switcher). This removes the
self-referential statement, mirroring World commit 80249b ("Remove
self-referential link in buyerJourney prop JSDoc").

Source-only change: the committed
docs/surfaces/checkout/generated/generated_docs_data_v2.json artifact still
needs to be regenerated via `pnpm docs:checkout` for the rendered shopify.dev
page to update.

Reported-by: Kristin Hung <kristin.hung@shopify.com>
…llocations

Add optional discountAllocations field to pos bundle lineItemComponent
…2026-07-rc

Remove dangling buyer-journey #examples link from buyerJourney JSDoc (2026-07-rc)
Introduces the `shopify.printing` API for the 2026-07 POS surface:

- printing-api.ts: PrintingApi / PrintingApiContent with getPrinters() and
  print(src, options?), plus PrintOptions { printer?: Printer } and
  Printer { id, name, connected }. Mirrors the approved TAG spec
  (Shopify/ui-api-design#1413) and aligns with the WICG Web Printing model.
- standard-api.ts: add PrintingApi to StandardApi.
- api.ts: export the new public types.
- print-api.ts: deprecate PrintApi / PrintApiContent in favor of shopify.printing.

shopify.print remains as a deprecated alias; shopify.printing supersedes it.
… mock

- standard-api.ts: PrintApi is intentionally kept in the StandardApi
  intersection so shopify.print keeps working as a deprecated alias of
  shopify.printing.print(). Suppress import/no-deprecated at the import and
  the intersection use (eslint runs with --max-warnings 0).
- factories.ts: add the now-required `printing` property to the POS
  StandardApi test mock (getPrinters + print).

Assisted-By: devx/8a5a23f1-0153-4f26-8b62-47e474da9689
Aligns the schema with the host-plugin behavior: receipt printers render
HTML/image content only, so print(src, {printer}) with a PDF src throws.
Adds the @throws entry and clarifies that PDFs print via the system dialog.

Assisted-By: devx/8a5a23f1-0153-4f26-8b62-47e474da9689
Assisted-By: devx/8a5a23f1-0153-4f26-8b62-47e474da9689
## What

Adds the POS `shopify.printing` API to the **2026-07** surface, per the approved TAG spec [`Shopify/ui-api-design#1413`](Shopify/ui-api-design#1413). This is the **types layer** of the cross-repo Printing API work.

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

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

## Changes

- **`api/printing-api/printing-api.ts`** (new):
  - `PrintingApiContent` — `getPrinters(): Promise<Printer[]>` and `print(src, options?): Promise<void>`
  - `PrintOptions` — `{ printer?: Printer }`
  - `Printer` — `{ id: string; name: string; connected: boolean }`
  - `PrintingApi` — `{ printing: PrintingApiContent }` (the `shopify.printing` namespace)
  - JSDoc mirrors the committed spec; each interface carries `@publicDocs` for shopify.dev generation.
- **`standard-api.ts`**: add `PrintingApi` to `StandardApi`.
- **`api.ts`**: export the new public types.
- **`print-api.ts`**: `@deprecate` `PrintApi` / `PrintApiContent` in favor of `shopify.printing`. `shopify.print` stays as a deprecated alias.
- Changeset: `minor`.

## Notes

- This PR is **types only**. Runtime behavior (version gating to `>= 2026-07`, `getPrinters()` returning the connected receipt printer, and routing `print(src, {printer})` to it) lands in the extensibility plugin (PR A2) and the pos-mobile bridge (PR B2).
- `Printer` follows the committed spec exactly — `{ id, name, connected }`, no `type` field.

## Testing

- `tsc --noEmit` over `@shopify/ui-extensions`: **0 errors**.

## Related

- Spec (TAG-approved): [Shopify/ui-api-design#1413](Shopify/ui-api-design#1413)
- Downstream — extensibility `printingPlugin`: [Shopify/extensibility#1457](Shopify/extensibility#1457)
- Downstream — pos-mobile bridge (`getPrinters` + receipt routing): [shop/world#837111](shop/world#837111)
- Downstream — shopify-dev docs: [shop/world#837232](shop/world#837232)

🤖 Drafted with pi.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.