[Embedded Checkout Protocol] 2026.04.08.1-alpha.2
Pre-releaseBreaking changes
Swift protocol module renamed
The Swift package product and module were renamed:
-import ShopifyCheckoutProtocol
+import EmbeddedCheckoutProtocolUpdate 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