Conversation
This was referenced Sep 14, 2026
markmur
marked this pull request as ready for review
September 14, 2026 13:41
Package Size
Web file breakdown
React Native file breakdown
Android file breakdown
Measured from the PR base SHA and PR head SHA. The file breakdown shows uncompressed sizes within each package artifact, so individual files do not sum to the compressed artifact total. This comment reports package artifact sizes only; it is not a final app binary-size report. |
Install this buildOpen Tophat, select your target device, then click Install. Links open on the Mac running Tophat.
Checkout Kit E2E results
FailuresCaution If you believe an assertion is flaky, please raise a ticket in the #checkout-kit-devs channel so it can be addressed.
iOS — react-native
iOS — swift
|
markmur
force-pushed
the
prototype/protocol-agnostic-events
branch
from
September 14, 2026 17:03
9a1a1a7 to
67f6e15
Compare
markmur
changed the base branch from
main
to
namespace-swift-protocol-checkout
September 14, 2026 17:03
markmur
force-pushed
the
prototype/protocol-agnostic-events
branch
3 times, most recently
from
September 15, 2026 13:19
47abfe1 to
8e3dbfb
Compare
tiagocandido
left a comment
Contributor
There was a problem hiding this comment.
Two README issues I could not attach inline (the lines are outside the diff):
- Line ~351: the Checkout lifecycle section still teaches
CheckoutProtocol.Client+present(client:)+.connect, all removed in this PR. Needs a rewrite around the delegate methods andonStart/onUpdate/onComplete. - Line ~123: still the old
checkoutDidFail(error:)spelling — here and at ~305, 319, 368, 411, 422. With the new default no-op, copying this compiles but never receives failures.
markmur
force-pushed
the
namespace-swift-protocol-checkout
branch
from
September 16, 2026 12:11
52fc225 to
3537557
Compare
markmur
force-pushed
the
prototype/protocol-agnostic-events
branch
from
September 16, 2026 12:11
8e3dbfb to
0775be4
Compare
markmur
force-pushed
the
namespace-swift-protocol-checkout
branch
from
September 17, 2026 11:04
3537557 to
c68b132
Compare
markmur
force-pushed
the
prototype/protocol-agnostic-events
branch
from
September 18, 2026 09:12
5a48d81 to
0f3715c
Compare
markmur
force-pushed
the
namespace-swift-protocol-checkout
branch
from
September 18, 2026 10:09
c68b132 to
7f40b94
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack
Top to bottom:
Summary
Checkoutthat preserves every checkout snapshot field except the protocol-onlyucpfieldadditionalProperties; generated nested models retain their own extension fieldsCheckoutStartEvent,CheckoutUpdateEvent,CheckoutCompleteEvent, andCheckoutFailureEventpayloads through idiomatic SwiftUI modifiers and UIKit delegate callbackslineItemsas a plain array without derived inventory annotationsonLinkClickin SwiftUI andcheckoutAction(for:)in UIKit, with.open,.handled, and.cancelpolicies.connect(client)modifier, and updates the sample to use Kit callbacksonUpdateDesign notes
Checkoutis a thin top-level projection of the protocol checkout snapshot. It removes onlyucp; attribution, buyer, context, continuation URL, currency, discounts, expiry, fulfillment, ID, line items, links, messages, order, payment, signals, status, totals, and unknown extension fields remain intact. Optional values remain optional, arrays are not synthesized for absent values, and enum values are not coerced to defaults.The protocol client remains behind the web bridge. The currently supported ECP checkout change notifications—line items, messages, totals, and fulfillment—become the same public
CheckoutUpdateEvent. Buyer and payment change notifications are intentionally not registered because Checkout Kit does not support those update sources yet. Registration syntax stays native to SwiftUI and UIKit.Separate event payload types give each callback room to gain event-specific metadata later without changing the closure or delegate shape. The public checkout snapshot does not infer inventory state from protocol messages.
Window-open requests are similarly abstracted: consumers receive only a validated URL and return a Kit-owned action.
.openpreserves the default Safari/system behavior,.handledreports success without opening the URL again, and.cancelrejects the request. The default is.open.The protocol namespace and API comparison ordering fix are supplied by #777.
Validation passed: CocoaPods lint, Swift formatting and lint, 71 Swift protocol tests, 8 checkout adapter tests, and all three public Swift API baseline checks.