Skip to content

[Embedded Checkout Protocol] 2026.04.08.1-alpha.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Jul 16:36
Immutable release. Only release title and notes can be modified.
1a4a374

Breaking changes

Swift protocol module renamed

The Swift package product and module were renamed:

-import ShopifyCheckoutProtocol
+import EmbeddedCheckoutProtocol

Update Swift Package Manager dependencies from ShopifyCheckoutProtocol to EmbeddedCheckoutProtocol.

Direct protocol handlers receive message envelopes

Direct Swift protocol handlers now receive complete JSON-RPC notification or request messages:

-client.on(EmbeddedCheckoutProtocol.Event.complete) { checkout in
-    handle(checkout)
+client.on(EmbeddedCheckoutProtocol.Event.complete) { notification in
+    handle(notification.params.checkout)
 }

The descriptor generic signatures changed to distinguish wire payloads from projected handler values.

Generated protocol models changed

Kotlin and Swift generated model names and constructors were refreshed from the OpenRPC source. Recompile consumers and update direct references to renamed generated types.

Additive changes

Protocol-owned clients

Kotlin now exposes a typed protocol client from the standalone package:

+val client = EmbeddedCheckoutProtocol.Client()
+    .on(EmbeddedCheckoutProtocol.Event.complete) { message ->
+        handle(message.params.checkout)
+    }

Window-open support

The protocol packages now provide typed window-open request and result models instead of requiring each SDK to define its own copies.

Extension preservation

Unknown extension properties are preserved when supported protocol models are decoded and re-encoded, improving compatibility with newer UCP extensions.

Behavior changes

Protocol decode failures now produce more consistent diagnostics across Swift, Kotlin, and TypeScript implementations.

What's Changed

  • [Kotlin] Move Client to protocol by @markmur in #438
  • Add decode logging parity for Web + Swift + Android by @markmur in #437
  • Widen protocol events to expose full envelope by @markmur in #398
  • Run Protocol tests in CI / Improve TS coverage by @markmur in #429
  • Web consumes protocol by @markmur in #393
  • [Protocol] Add support for additional properties by @markmur in #407
  • Move windowOpen to protocol by @markmur in #386
  • [TypeScript] Agnostic protocol by @markmur in #314
  • Make Kotlin protocol agnostic by @markmur in #365
  • Rename ShopifyCheckoutProtocol to EmbeddedCheckoutProtocol by @markmur in #354
  • Make the OpenRPC spec the single source of truth for the Swift protocol layer by @markmur in #330
  • expose fulfilment change in RN by @kiftio in #350
  • chore(deps-dev): bump the vitest group in /protocol with 2 updates by @dependabot[bot] in #542
  • Android toolchain bumps by @kiftio in #487

Full Changelog: embedded-checkout-protocol/2026.04.08.1-alpha.1...embedded-checkout-protocol/2026.04.08.1-alpha.2