Repository navigation
[Swift][Bug]: Add missing ecp params to checkout URLs in CheckoutViewController - #649
Merged
kieran-osgood-shopify merged 2 commits intoOct 9, 2026
Conversation
kieran-osgood-shopify
force-pushed
the
ko/fix-swift-checkout-url-decoration-1215
branch
from
September 14, 2026 14:45
dd7d82d to
0d0b337
Compare
kieran-osgood-shopify
changed the base branch from
main
to
ko/swift-sample-checkout-presentation
September 14, 2026 14:46
kieran-osgood-shopify
added this pull request to stack #776
September 14, 2026 14:46
kieran-osgood-shopify
force-pushed
the
ko/fix-swift-checkout-url-decoration-1215
branch
from
October 6, 2026 14:32
0d0b337 to
5c1427f
Compare
Bundle Size Budgets
Bundle and package sizeWeb bundle sizes cover shipped runtime JavaScript. Package sizes cover the full published archive, including any source maps, declarations, and documentation it contains.
How sizes are measuredMeasured from the PR base SHA and PR head SHA. Web bundle rows sum shipped |
kieran-osgood-shopify
marked this pull request as ready for review
October 7, 2026 10:35
markmur
approved these changes
Oct 7, 2026
Bitrise buildsInstall this buildOpen Tophat, select your target device, then click Install. Links open on the Mac running Tophat.
Checkout Kit E2E results
|
kieran-osgood-shopify
force-pushed
the
ko/fix-swift-checkout-url-decoration-1215
branch
from
October 8, 2026 08:28
5c1427f to
b397b98
Compare
kieran-osgood-shopify
force-pushed
the
ko/fix-swift-checkout-url-decoration-1215
branch
from
October 9, 2026 16:47
b397b98 to
eb97b90
Compare
Assisted-By: devx/e431cd55-e9d8-49d7-9154-66877c8dda59
kieran-osgood-shopify
force-pushed
the
ko/fix-swift-checkout-url-decoration-1215
branch
from
October 9, 2026 16:50
eb97b90 to
595d70d
Compare
kieran-osgood-shopify
deleted the
ko/fix-swift-checkout-url-decoration-1215
branch
October 9, 2026 20:40
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.
TLDR
CheckoutViewControlleris public. It is missing the ecp query params so it never subscribes to protocol.All API's route through
CheckoutViewController, and decorate the url before instantiating itThis PR moves the decoration logic into
CheckoutViewController, so all paths are covered equally.Fixes shop/issues-checkout-kit#1215.
What changes are you making?
This change:
CheckoutViewControllerinitializersCheckoutViewControllerreuse a checkout preloaded from the same undecorated URL, because both now resolve to the same decorated URLHow to test
The Swift demo app's
CheckoutDelegate.checkoutDidStart(_:)handler logs[CheckoutKitSwiftDemo] Started: <checkout id>. Checkout Kit calls it only when it receives the Embedded Checkout Protocolec.startnotification, so theStarted:log line meansec.startwas received.GIVEN the Swift demo app is running from this PR's branch on a simulator
AND Settings → Features → Checkout presentation is set to UIKit, so the Cart tab presents a directly constructed
CheckoutViewControllerAND Settings → Features → Checkout preloading is disabled
WHEN you add a product, open the Cart tab and tap Check out
THEN the Xcode console logs
[CheckoutKitSwiftDemo] Started: gid://shopify/Checkout/…once checkout loads, confirming thatec.startwas receivedAND checkout opens without the store header or the Information › Shipping › Payment › Review breadcrumbs
GIVEN the Swift demo app is running from the base branch (#775) on a simulator
AND Settings → Features → Checkout presentation is set to UIKit
AND Settings → Features → Checkout preloading is disabled
WHEN you add a product, open the Cart tab and tap Check out
THEN checkout loads, but the console never logs
Started:, becauseec.startis never receivedAND checkout shows the store header and the step breadcrumbs
Closing checkout logs
Dismissedon both branches, because it comes from the native close button rather than the protocol.No order needs to be placed.
Before you merge
Important
platforms/swift/README.mdand/orplatforms/android/README.md)README changes are not required because the documented presentation APIs and usage remain unchanged.
Releasing a new Swift version?
ShopifyCheckoutKit.podspecplatforms/swift/Sources/ShopifyCheckoutKit/ShopifyCheckoutKit.swiftplatforms/swift/README.md(major version only)Releasing a new Embedded Checkout Protocol version?
embeddedCheckoutProtocolAndroidinplatforms/android/gradle/libs.versions.tomlprotocol/languages/kotlin/embedded-checkout-protocol/api/embedded-checkout-protocol.apiif the public API changedReleasing a new Android version?
checkoutKitAndroidinplatforms/android/gradle/libs.versions.tomlplatforms/android/README.mdTip
See the Contributing documentation for the full release process per platform.