Skip to content

Scope protocol CI checks by affected binding - #546

Merged
kiftio merged 1 commit into
mainfrom
07-29-scope_protocol_ci_checks_by_affected_binding
Aug 3, 2026
Merged

Scope protocol CI checks by affected binding#546
kiftio merged 1 commit into
mainfrom
07-29-scope_protocol_ci_checks_by_affected_binding

Conversation

@kiftio

@kiftio kiftio commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

What changes are you making?

Make protocol triggers a bit more granular.


I felt like we ran a lot of unnecessary checks here for a protocol-ts only change (i.e. we ran native android/swift checks).

In retrospect, as ts includes quicktype, it was probably correct to run all tests. However, there's still potential for improvement, where swift protocol changes should not build android and vice-versa

Screenshot 2026-07-31 at 10.06.31.png

The second and third rows are the main ones of interest.


Implementation

Uses these filters from .ci/changed-file-filters.yml:

  • protocolKotlin - (existing) generated Kotlin protocol bindings under protocol/languages/kotlin/**
  • protocolSwift - (existing) generated Swift protocol bindings under protocol/languages/swift/**
  • protocolTypescript - (existing) generated TypeScript protocol bindings under protocol/languages/typescript/**
  • protocolShared - (new) schemas, service definitions, source-lock updates, code generators, and Protocol Node tooling

The CI workflow, package-size workflow, and E2E matrix now consume the appropriate language-specific or shared filter rather than using the broad protocol filter.

Shared inputs remain conservative: they trigger all affected platform validation because they can change generated bindings or the tooling that produces and validates them. The optimization is limited to generated language-binding changes, which now run only the checks for their actual consumers.

How to test

  • Verify the new filter unit tests pass in scripts/test/changed_file_filters_test.rb, covering that protocol/package.json matches only protocolTooling and that protocol/schemas/ucp.json matches only protocolShared.
  • Verify the new e2e matrix test passes in e2e/test/e2e_matrix_to_browserstack_run_plan_test.rb, confirming that a change to protocol/schemas/ucp.json selects all four applications.

Before you merge

Important

  • I've added tests to support my implementation
  • I have read and agree with the Contribution Guidelines
  • I have read and agree with the Code of Conduct
  • I've updated the relevant platform README (platforms/swift/README.md and/or platforms/android/README.md)

Releasing a new Swift version?
  • I have bumped the version in ShopifyCheckoutKit.podspec
  • I have bumped the version in platforms/swift/Sources/ShopifyCheckoutKit/ShopifyCheckoutKit.swift
  • I have updated the SwiftPM/CocoaPods version snippets in platforms/swift/README.md (major version only)
Releasing a new Embedded Checkout Protocol version?
  • I have bumped embeddedCheckoutProtocolAndroid in platforms/android/gradle/libs.versions.toml
  • I have updated protocol/languages/kotlin/embedded-checkout-protocol/api/embedded-checkout-protocol.api if the public API changed
Releasing a new Android version?
  • I have bumped checkoutKitAndroid in platforms/android/gradle/libs.versions.toml
  • I have updated the Gradle/Maven version snippets in platforms/android/README.md

Tip

See the Contributing documentation for the full release process per platform.

@kiftio kiftio mentioned this pull request Jul 29, 2026
11 tasks
@github-actions github-actions Bot added the #gsd:50662 Rebase Checkout Kit on UCP label Jul 29, 2026
@kiftio
kiftio marked this pull request as ready for review July 29, 2026 11:33
@kiftio
kiftio requested a review from a team as a code owner July 29, 2026 11:33
@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown

Web — Coverage Report

Lines Statements Branches Functions
Coverage: 99%
99.2% (249/251) 85.49% (112/131) 100% (70/70)

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown

React Native — Coverage Report

Lines Statements Branches Functions
Coverage: 92%
91.85% (327/356) 87.98% (183/208) 100% (86/86)

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown

Package Size

Platform Artifact Base Head Delta
Web npm tarball 65.5 KiB 65.5 KiB 0 B
React Native npm tarball 103.1 KiB 103.1 KiB 0 B
Android release AAR 255.4 KiB 255.4 KiB 0 B
Web file breakdown
File Base Head Delta
dist/index.js.map 184.1 KiB 184.1 KiB 0 B
dist/index.d.ts 41.9 KiB 41.9 KiB 0 B
dist/custom-elements.json 40.1 KiB 40.1 KiB 0 B
dist/index.js 29.6 KiB 29.6 KiB 0 B
README.md 17.8 KiB 17.8 KiB 0 B
package.json 2.8 KiB 2.8 KiB 0 B
LICENSE 1.1 KiB 1.1 KiB 0 B
React Native file breakdown
File Base Head Delta
node_modules/@shopify/checkout-kit-protocol/src/generated/Models.ts 85.4 KiB 85.4 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/Models.d.ts 53.0 KiB 53.0 KiB 0 B
ios/ShopifyCheckoutKit.swift 15.0 KiB 15.0 KiB 0 B
ios/AcceleratedCheckoutButtons.swift 14.0 KiB 14.0 KiB 0 B
lib/commonjs/index.js 13.1 KiB 13.1 KiB 0 B
src/components/AcceleratedCheckoutButtons.tsx 12.9 KiB 12.9 KiB 0 B
src/index.ts 12.5 KiB 12.5 KiB 0 B
lib/commonjs/components/AcceleratedCheckoutButtons.js 11.4 KiB 11.4 KiB 0 B
android/src/main/java/com/shopify/reactnative/checkoutkit/ShopifyCheckoutKitModule.java 11.1 KiB 11.1 KiB 0 B
lib/module/index.js 10.4 KiB 10.4 KiB 0 B
lib/commonjs/components/AcceleratedCheckoutButtons.js.map 10.3 KiB 10.3 KiB 0 B
lib/module/components/AcceleratedCheckoutButtons.js 10.2 KiB 10.2 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolNotifications.ts 9.5 KiB 9.5 KiB 0 B
lib/module/components/AcceleratedCheckoutButtons.js.map 9.1 KiB 9.1 KiB 0 B
src/index.d.ts 8.9 KiB 8.9 KiB 0 B
lib/module/index.js.map 8.2 KiB 8.2 KiB 0 B
src/present-dispatcher.ts 8.0 KiB 8.0 KiB 0 B
lib/commonjs/index.js.map 7.7 KiB 7.7 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolNotifications.d.ts 7.6 KiB 7.6 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolRenameMap.ts 7.2 KiB 7.2 KiB 0 B
…and 110 smaller files
Android file breakdown
File Base Head Delta
classes.jar 270.1 KiB 270.1 KiB 0 B
res/layout/checkout_view_content.xml 2.2 KiB 2.2 KiB 0 B
res/layout/checkout_sheet_content.xml 2.0 KiB 2.0 KiB 0 B
res/values/values.xml 1.2 KiB 1.2 KiB 0 B
R.txt 1.1 KiB 1.1 KiB 0 B
proguard.txt 798 B 798 B 0 B
AndroidManifest.xml 578 B 578 B 0 B
res/drawable/close.xml 431 B 431 B 0 B
res/menu/checkout_menu.xml 354 B 354 B 0 B
META-INF/com/android/build/gradle/aar-metadata.properties 157 B 157 B 0 B

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.

@bitrise

bitrise Bot commented Jul 29, 2026

Copy link
Copy Markdown

Install this build

Open Tophat, select your target device, then click Install. Links open on the Mac running Tophat.

SDK Install
React Native Install with Tophat
Swift Install with Tophat
Kotlin Install with Tophat

Checkout Kit E2E results

Status Suite Target Platform OS version tag Device
tests/shared/launch-smoke.yaml react-native ios latest iPhone 15
iOS 27 Beta
tests/shared/launch-smoke.yaml react-native android latest Google Pixel 9
Android 17.0
tests/shared/launch-smoke.yaml kotlin android latest Google Pixel 9
Android 17.0
tests/shared/launch-smoke.yaml swift ios latest iPhone 15
iOS 27 Beta

Comment thread .github/workflows/ci.yml
reactNativeAndroid: ${{ steps.platform.outputs.reactNative == 'true' || steps.platform.outputs.protocolTypescript == 'true' || steps.infra.outputs.reactNativeCommon == 'true' || steps.infra.outputs.reactNativeAndroid == 'true' }}
web: ${{ steps.platform.outputs.web == 'true' || steps.infra.outputs.web == 'true' }}
protocol: ${{ steps.platform.outputs.protocol == 'true' || steps.infra.outputs.protocol == 'true' }}
android: ${{ steps.platform.outputs.android == 'true' || steps.platform.outputs.protocolKotlin == 'true' || steps.platform.outputs.protocolShared == 'true' || steps.infra.outputs.android == 'true' }}

@kiftio kiftio Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

main diff is here,

moving form protocol to protocolKotlin || protocolShared

to avoid building for protocolSwift changes

and down below in the same way for swift

(and the same in package-size.yml)

Comment thread .ci/changed-file-filters.yml
@kiftio
kiftio force-pushed the 07-29-scope_protocol_ci_checks_by_affected_binding branch from 042dbb8 to 8351991 Compare August 3, 2026 12:37
Assisted-By: devx/4075c309-3611-4ac8-9ea7-26a8974e7963
@kiftio
kiftio force-pushed the 07-29-scope_protocol_ci_checks_by_affected_binding branch from 8351991 to 3c8d794 Compare August 3, 2026 13:29
@kiftio
kiftio merged commit 3cad698 into main Aug 3, 2026
37 checks passed

kiftio commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

Merge activity

@kiftio
kiftio deleted the 07-29-scope_protocol_ci_checks_by_affected_binding branch August 3, 2026 13:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

#gsd:50662 Rebase Checkout Kit on UCP

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants