Skip to content

Add @shopify/checkout-kit web platform scaffolding and CI#93

Open
westeezy wants to merge 1 commit into
mainfrom
checkout-kit-web
Open

Add @shopify/checkout-kit web platform scaffolding and CI#93
westeezy wants to merge 1 commit into
mainfrom
checkout-kit-web

Conversation

@westeezy
Copy link
Copy Markdown

@westeezy westeezy commented May 13, 2026

What changes are you making?

Introduces the fourth platform target — a vanilla JS / Web Components
build of Checkout Kit.

This commit is scaffolding only: src/index.ts exports a single VERSION
string as a placeholder. The component implementation will land in
follow-up PRs.

platforms/web/

  • Vite library build emitting a single ESM bundle plus .d.ts
  • Vitest with happy-dom, v8 coverage, and json-summary output
  • oxlint + oxfmt for linting/formatting
  • publint via pnpm verify to catch package.json regressions
  • custom-elements-manifest generation on build for IDE tooling
  • scripts/check_license_headers.rb mirrors the Android check

.github/workflows/

  • web.yml — lint, test (with PR coverage comment), build, publint
    verify, and pack-and-inspect
  • ci.yml — adds web and web-license-headers jobs behind the
    paths-filter

.github/dependabot.yml

  • Adds an npm ecosystem entry for /platforms/web

How to test


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 platforms/swift/ShopifyCheckoutKit.podspec
  • I have bumped the version in platforms/swift/Sources/ShopifyCheckoutKit/ShopifyCheckoutKit.swift
  • I have updated platforms/swift/CHANGELOG.md
  • I have updated the SwiftPM/CocoaPods version snippets in platforms/swift/README.md (major version only)
Releasing a new Android version?
  • I have bumped the versionName in platforms/android/lib/build.gradle
  • I have updated platforms/android/CHANGELOG.md
  • 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.

@westeezy westeezy marked this pull request as ready for review May 13, 2026 17:34
@westeezy westeezy requested a review from a team as a code owner May 13, 2026 17:34
Copy link
Copy Markdown
Author

westeezy commented May 13, 2026

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 13, 2026

Web — Coverage Report

Lines Statements Branches Functions
Coverage: 0%
100% (1/1) 100% (1/1)

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 13, 2026

React Native — Coverage Report

Lines Statements Branches Functions
Coverage: 99%
99.53% (214/215) 95.96% (119/124) 100% (64/64)

Copy link
Copy Markdown

@toneymathews toneymathews left a comment

Choose a reason for hiding this comment

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

We could add updates on this component to the root level CLAUDE.md and AGENTS.md, but that's minor, can be done later as well.

LGTM


"strict": true,
"noFallthroughCasesInSwitch": true,
"noImplicitOverride": true,
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nit - This does mean we'd have to prepend override in a bunch of places in the component code in the upstream PR.

  • ShopifyCheckout extends ShopifyElement (which extends HTMLElement)
  • addEventListener will now need to be declared as override addEventListener.

This shouldn't matter, just noting a change that'll come up in the web component code

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I removed that ShopifyElement inheritance in a recent update. BUt yeah might be worth considering if this tsconfig is what we want in general this is a sane default i snagged but once we port in the component we can see and tweak I would say.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Sounds good, i've added the web component on top now - #83. Cleaning it up now

Introduces the fourth platform target — a vanilla JS / Web Components
build of Checkout Kit.

This commit is scaffolding only: src/index.ts exports a single VERSION
string as a placeholder. The component implementation will land in
follow-up PRs.

platforms/web/
 * Vite library build emitting a single ESM bundle plus .d.ts
 * Vitest with happy-dom, v8 coverage, and json-summary output
 * oxlint + oxfmt for linting/formatting
 * publint via `pnpm verify` to catch package.json regressions
 * custom-elements-manifest generation on build for IDE tooling
 * scripts/check_license_headers.rb mirrors the Android check

.github/workflows/
 * web.yml — lint, test (with PR coverage comment), build, publint
   verify, and pack-and-inspect
 * ci.yml — adds web and web-license-headers jobs behind the
   paths-filter

.github/dependabot.yml
 * Adds an npm ecosystem entry for /platforms/web
@westeezy westeezy force-pushed the checkout-kit-web branch from 361a362 to ad50693 Compare May 13, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants