Repository navigation
[Swift][Bug]: Add missing ecp params to checkout URLs in CheckoutViewController - #649
Conversation
dd7d82d to
0d0b337
Compare
Assisted-By: devx/e431cd55-e9d8-49d7-9154-66877c8dda59
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 |
Bitrise buildsInstall 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 — swift
|
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.