diff --git a/swift/.gitattributes b/.gitattributes
similarity index 100%
rename from swift/.gitattributes
rename to .gitattributes
diff --git a/android/.github/CODEOWNERS b/.github/CODEOWNERS
similarity index 100%
rename from android/.github/CODEOWNERS
rename to .github/CODEOWNERS
diff --git a/swift/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
similarity index 100%
rename from swift/.github/CODE_OF_CONDUCT.md
rename to .github/CODE_OF_CONDUCT.md
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 00000000..69fa729c
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,128 @@
+# Contributing
+
+The following is a set of guidelines for contributing to this project. Please take a moment to read through them before submitting your first PR.
+
+This is a monorepo containing the iOS/Swift, Android, and (forthcoming) React Native implementations of the Shopify Checkout Kit. Each platform has its own conventions, tooling, and release process; the shared guidelines below apply to all of them.
+
+## Code of Conduct
+
+This project and everyone participating in it are governed by the [Code of Conduct](./CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [opensource@shopify.com](mailto:opensource@shopify.com).
+
+## Welcomed contributions
+
+- Reporting issues with existing features
+- Bug fixes
+- Performance improvements
+- Documentation
+- Usability improvements
+
+## Things we won't merge
+
+- Additional dependencies that limit SDK use (e.g. unnecessary Swift or Android dependencies)
+- Any changes that break existing tests
+- Any changes without sufficient tests
+
+## Proposing features
+
+When in doubt about whether we will be interested in including a new feature, please open an issue to propose the feature so we can confirm scope before it is implemented.
+
+**NOTE**: Issues that have not been active for 30 days will be marked as stale, and subsequently closed after a further 7 days of inactivity.
+
+## How to contribute (general flow)
+
+1. Fork the repo and branch off of `main`.
+2. Create a feature branch in your fork.
+3. Make changes and add any relevant tests.
+4. Run the platform-specific formatter / linter (see below).
+5. Verify the changes locally (e.g. via the platform's sample app).
+6. Commit your changes and push.
+7. Ensure all checks (tests, lint) are passing in GitHub.
+8. Open a pull request with a detailed description of what is changing and why.
+
+---
+
+## Swift (`swift/`)
+
+### Prerequisites
+
+This project uses [Mint](https://github.com/yonaskolb/Mint) to manage Swift linting tools (SwiftLint and SwiftFormat) at pinned versions via `swift/Mintfile`. This ensures consistent formatting across all contributors and CI.
+
+**Shopify employees** (from `swift/`):
+
+```bash
+dev up
+```
+
+**External contributors**:
+
+```bash
+brew install mint
+cd swift && mint bootstrap
+```
+
+### Formatting
+
+```bash
+cd swift && ./Scripts/lint fix
+```
+
+### Releasing a new Swift version
+
+Open a pull request with the following changes:
+
+1. Bump the package version in `swift/Sources/ShopifyCheckoutSheetKit/ShopifyCheckoutSheetKit.swift`.
+2. Bump the podspec version in `swift/ShopifyCheckoutSheetKit.podspec`.
+3. Add an entry to the top of `swift/CHANGELOG.md`.
+
+Once merged, draft a release on GitHub:
+
+1. Create a tag with the bare semver name (e.g. `3.8.1`) — Swift releases use bare semver so SwiftPM consumers can resolve them with `from:` constraints.
+2. Use the same tag as the release name.
+3. Document the changes since the previous release in the description.
+4. Check "Set as the latest release".
+5. Click "Publish release". This kicks off the [Swift deploy workflow](../../actions/workflows/swift-deploy.yml) which publishes the new version to CocoaPods.
+
+---
+
+## Android (`android/`)
+
+### Formatting
+
+This project uses [detekt](https://detekt.dev/) for Kotlin linting and formatting. From `android/`:
+
+```bash
+./gradlew detekt --auto-correct
+```
+
+To check for lint issues without auto-correcting:
+
+```bash
+./gradlew detekt
+```
+
+### Public API surface
+
+The library's public API is tracked via a committed baseline at `android/lib/api/lib.api`, managed by the [binary-compatibility-validator](https://github.com/Kotlin/binary-compatibility-validator) Gradle plugin. CI runs `./gradlew :lib:apiCheck` on every PR and fails if the compiled public API diverges from the baseline.
+
+If your change intentionally modifies the public API:
+
+1. Run `dev api dump` (or `./gradlew :lib:apiDump`) from `android/` to regenerate the baseline.
+2. Review the diff in `android/lib/api/lib.api` alongside your code changes.
+3. Commit the updated `.api` file in the same PR.
+
+If you did *not* intend to change public API and `apiCheck` is failing, the diff shows what your change inadvertently affected — treat it as a signal that something in your PR has consumer-visible impact.
+
+### Releasing a new Android version
+
+Open a pull request with the following changes:
+
+1. Bump the `versionName` in `android/lib/build.gradle`.
+2. Add an entry to the top of `android/CHANGELOG.md`.
+
+Once merged, draft a release on GitHub:
+
+1. Create a tag prefixed with `android/` (e.g. `android/3.0.1`) — Android releases use the `android/` prefix so the Maven publish workflow can distinguish them from Swift releases.
+2. Use the same tag as the release name.
+3. Document the changes since the previous release in the description.
+4. Check "Set as the latest release".
+5. Click "Publish release". This kicks off the [Android deploy workflow](../../actions/workflows/android-deploy.yml). **A manual approval by a maintainer is required before publication to Maven Central.**
diff --git a/swift/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
similarity index 100%
rename from swift/.github/ISSUE_TEMPLATE/bug_report.yml
rename to .github/ISSUE_TEMPLATE/bug_report.yml
diff --git a/android/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
similarity index 100%
rename from android/.github/ISSUE_TEMPLATE/config.yml
rename to .github/ISSUE_TEMPLATE/config.yml
diff --git a/swift/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
similarity index 100%
rename from swift/.github/ISSUE_TEMPLATE/feature_request.yml
rename to .github/ISSUE_TEMPLATE/feature_request.yml
diff --git a/android/.github/dependabot.yml b/.github/dependabot.yml
similarity index 82%
rename from android/.github/dependabot.yml
rename to .github/dependabot.yml
index 8aef1f50..48371488 100644
--- a/android/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -6,10 +6,17 @@ updates:
interval: weekly
cooldown:
default-days: 7
-
- # Main library
- - package-ecosystem: gradle
+
+ - package-ecosystem: swift
directory: "/"
+ schedule:
+ interval: daily
+ cooldown:
+ default-days: 7
+
+ # Android library
+ - package-ecosystem: gradle
+ directory: "/android"
schedule:
interval: daily
open-pull-requests-limit: 10
@@ -28,10 +35,10 @@ updates:
# Keep JUnit on 4.x (JUnit 5 incompatible with Robolectric)
- dependency-name: "junit:junit"
versions: [">=5.0.0"]
-
- # MobileBuyIntegration sample
+
+ # Android sample app
- package-ecosystem: gradle
- directory: "/samples/MobileBuyIntegration"
+ directory: "/android/samples/MobileBuyIntegration"
schedule:
interval: daily
open-pull-requests-limit: 5
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..8a132479
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,42 @@
+### What changes are you making?
+
+
+
+### How to test
+
+
+
+---
+
+### Before you merge
+
+> [!IMPORTANT]
+>
+> - [ ] I've added tests to support my implementation
+> - [ ] I have read and agree with the [Contribution Guidelines](./CONTRIBUTING.md)
+> - [ ] I have read and agree with the [Code of Conduct](./CODE_OF_CONDUCT.md)
+> - [ ] I've updated the relevant platform README (`swift/README.md` and/or `android/README.md`)
+
+---
+
+
+Releasing a new Swift version?
+
+- [ ] I have bumped the version in `swift/ShopifyCheckoutSheetKit.podspec`
+- [ ] I have bumped the version in `swift/Sources/ShopifyCheckoutSheetKit/ShopifyCheckoutSheetKit.swift`
+- [ ] I have updated `swift/CHANGELOG.md`
+- [ ] I have updated the SwiftPM/CocoaPods version snippets in `swift/README.md` (major version only)
+
+
+
+
+Releasing a new Android version?
+
+- [ ] I have bumped the `versionName` in `android/lib/build.gradle`
+- [ ] I have updated `android/CHANGELOG.md`
+- [ ] I have updated the Gradle/Maven version snippets in `android/README.md`
+
+
+
+> [!TIP]
+> See the [Contributing documentation](./CONTRIBUTING.md) for the full release process per platform.
diff --git a/android/.github/workflows/publish.yml b/.github/workflows/android-deploy.yml
similarity index 86%
rename from android/.github/workflows/publish.yml
rename to .github/workflows/android-deploy.yml
index 7977461e..5bce5e51 100644
--- a/android/.github/workflows/publish.yml
+++ b/.github/workflows/android-deploy.yml
@@ -1,4 +1,4 @@
-name: Deploy to Maven Central
+name: Android — Deploy to Maven Central
on:
release:
@@ -8,14 +8,21 @@ on:
jobs:
build:
+ # Only run for Android releases. Android releases are tagged `android/X.Y.Z`;
+ # Swift releases use bare semver (`X.Y.Z`).
+ if: ${{ github.event_name == 'workflow_dispatch' || startsWith(github.event.release.tag_name, 'android/') }}
environment:
name: Central Repository Deployment
runs-on: ubuntu-latest
-
+
env:
OSSRH_API_BASE_URL: https://ossrh-staging-api.central.sonatype.com
+ defaults:
+ run:
+ working-directory: android
+
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
diff --git a/android/.github/workflows/check_license_headers.yml b/.github/workflows/android-license-headers.yml
similarity index 68%
rename from android/.github/workflows/check_license_headers.yml
rename to .github/workflows/android-license-headers.yml
index f2ec4b02..158e89dd 100644
--- a/android/.github/workflows/check_license_headers.yml
+++ b/.github/workflows/android-license-headers.yml
@@ -1,10 +1,17 @@
-name: Check License Headers
+name: Android — Check License Headers
-on: pull_request
+on:
+ pull_request:
+ paths:
+ - 'android/**'
+ - '.github/workflows/android-license-headers.yml'
jobs:
build:
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: android
steps:
- name: Checkout Repository
diff --git a/android/.github/workflows/test.yml b/.github/workflows/android-test.yml
similarity index 79%
rename from android/.github/workflows/test.yml
rename to .github/workflows/android-test.yml
index 500dadc0..81085140 100644
--- a/android/.github/workflows/test.yml
+++ b/.github/workflows/android-test.yml
@@ -1,15 +1,24 @@
-name: Lint, Build & Run Tests
+name: Android — Lint, Build & Run Tests
on:
push:
branches:
- main
+ paths:
+ - 'android/**'
+ - '.github/workflows/android-test.yml'
pull_request:
+ paths:
+ - 'android/**'
+ - '.github/workflows/android-test.yml'
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: android
steps:
- name: Checkout Repository
@@ -48,14 +57,17 @@ jobs:
- name: Setup sample app environment
run: cp .env.example .env
- working-directory: samples/MobileBuyIntegration
+ working-directory: android/samples/MobileBuyIntegration
- name: Build Sample App
run: ./gradlew assembleDebug
- working-directory: samples/MobileBuyIntegration
+ working-directory: android/samples/MobileBuyIntegration
lint:
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: android
steps:
- name: Checkout Repository
diff --git a/swift/.github/workflows/cla.yml b/.github/workflows/cla.yml
similarity index 92%
rename from swift/.github/workflows/cla.yml
rename to .github/workflows/cla.yml
index 6f9237c9..ffcd433c 100644
--- a/swift/.github/workflows/cla.yml
+++ b/.github/workflows/cla.yml
@@ -13,10 +13,10 @@ jobs:
actions: write
pull-requests: write
if: |
- (github.event.issue.pull_request
+ (github.event.issue.pull_request
&& !github.event.issue.pull_request.merged_at
&& contains(github.event.comment.body, 'signed')
- )
+ )
|| (github.event.pull_request && !github.event.pull_request.merged)
steps:
- uses: Shopify/shopify-cla-action@v1
diff --git a/swift/.github/workflows/stale.yml b/.github/workflows/stale.yml
similarity index 100%
rename from swift/.github/workflows/stale.yml
rename to .github/workflows/stale.yml
diff --git a/.github/workflows/swift-build-samples.yml b/.github/workflows/swift-build-samples.yml
new file mode 100644
index 00000000..e42262fd
--- /dev/null
+++ b/.github/workflows/swift-build-samples.yml
@@ -0,0 +1,26 @@
+name: Swift — Build Sample Apps
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - 'swift/**'
+ - 'Package.swift'
+ - 'Package.resolved'
+ - '.github/workflows/swift-build-samples.yml'
+ - '.github/workflows/swift-test-workflow.yml'
+ pull_request:
+ paths:
+ - 'swift/**'
+ - 'Package.swift'
+ - 'Package.resolved'
+ - '.github/workflows/swift-build-samples.yml'
+ - '.github/workflows/swift-test-workflow.yml'
+ workflow_dispatch:
+
+jobs:
+ call-workflow-passing-data:
+ uses: ./.github/workflows/swift-test-workflow.yml
+ with:
+ test-path: ./Scripts/build_samples
diff --git a/swift/.github/workflows/deploy.yml b/.github/workflows/swift-deploy.yml
similarity index 59%
rename from swift/.github/workflows/deploy.yml
rename to .github/workflows/swift-deploy.yml
index eafa741e..c0a3090b 100644
--- a/swift/.github/workflows/deploy.yml
+++ b/.github/workflows/swift-deploy.yml
@@ -1,4 +1,4 @@
-name: Deploy
+name: Swift — Deploy
on:
release:
@@ -8,7 +8,15 @@ on:
jobs:
cocoapods:
+ # Only run for Swift releases. Android releases are tagged `android/X.Y.Z`;
+ # Swift releases use bare semver (`X.Y.Z`).
+ if: ${{ github.event_name == 'workflow_dispatch' || !startsWith(github.event.release.tag_name, 'android/') }}
runs-on: ${{ vars.MACOS_RUNNER }}
+ env:
+ BUNDLE_GEMFILE: ${{ github.workspace }}/swift/Gemfile
+ defaults:
+ run:
+ working-directory: swift
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -16,6 +24,7 @@ jobs:
- uses: ruby/setup-ruby@dffb23f65a78bba8db45d387d5ea1bbd6be3ef18 # v1.293.0
with:
bundler-cache: true
+ working-directory: swift
- name: Deploy to Cocoapods
run: |
diff --git a/swift/.github/workflows/lint.yml b/.github/workflows/swift-lint.yml
similarity index 79%
rename from swift/.github/workflows/lint.yml
rename to .github/workflows/swift-lint.yml
index 06a3994d..067e389a 100644
--- a/swift/.github/workflows/lint.yml
+++ b/.github/workflows/swift-lint.yml
@@ -1,7 +1,10 @@
-name: Lint
+name: Swift — Lint
on:
pull_request:
+ paths:
+ - 'swift/**'
+ - '.github/workflows/swift-lint.yml'
workflow_dispatch:
jobs:
@@ -13,7 +16,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: norio-nomura/action-swiftlint@9f4dcd7fd46b4e75d7935cf2f4df406d5cae3684 # 3.2.1
with:
- args: --strict
+ args: --strict swift
swiftformat:
name: SwiftFormat & SwiftLint
@@ -21,6 +24,9 @@ jobs:
env:
MINT_PATH: ${{ github.workspace }}/.mint/lib
MINT_LINK_PATH: ${{ github.workspace }}/.mint/bin
+ defaults:
+ run:
+ working-directory: swift
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -29,7 +35,7 @@ jobs:
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: .mint
- key: ${{ runner.os }}-mint-${{ hashFiles('Mintfile') }}
+ key: ${{ runner.os }}-mint-${{ hashFiles('swift/Mintfile') }}
restore-keys: |
${{ runner.os }}-mint-
@@ -48,6 +54,9 @@ jobs:
check-license-headers:
name: License Headers
runs-on: ${{ vars.MACOS_RUNNER }}
+ defaults:
+ run:
+ working-directory: swift
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- run: ./Scripts/ensure_license
@@ -55,9 +64,15 @@ jobs:
lint-podspec:
name: CocoaPods
runs-on: ${{ vars.MACOS_RUNNER }}
+ env:
+ BUNDLE_GEMFILE: ${{ github.workspace }}/swift/Gemfile
+ defaults:
+ run:
+ working-directory: swift
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ruby/setup-ruby@dffb23f65a78bba8db45d387d5ea1bbd6be3ef18 # v1.293.0
with:
bundler-cache: true
+ working-directory: swift
- run: bundle exec pod lib lint --allow-warnings
diff --git a/.github/workflows/swift-test-package.yml b/.github/workflows/swift-test-package.yml
new file mode 100644
index 00000000..af9dae12
--- /dev/null
+++ b/.github/workflows/swift-test-package.yml
@@ -0,0 +1,26 @@
+name: Swift — Run Package Tests
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - 'swift/**'
+ - 'Package.swift'
+ - 'Package.resolved'
+ - '.github/workflows/swift-test-package.yml'
+ - '.github/workflows/swift-test-workflow.yml'
+ pull_request:
+ paths:
+ - 'swift/**'
+ - 'Package.swift'
+ - 'Package.resolved'
+ - '.github/workflows/swift-test-package.yml'
+ - '.github/workflows/swift-test-workflow.yml'
+ workflow_dispatch:
+
+jobs:
+ call-workflow-passing-data:
+ uses: ./.github/workflows/swift-test-workflow.yml
+ with:
+ test-path: ./Scripts/xcode_run test ShopifyCheckoutSheetKit-Package
diff --git a/swift/.github/workflows/test-workflow.yml b/.github/workflows/swift-test-workflow.yml
similarity index 96%
rename from swift/.github/workflows/test-workflow.yml
rename to .github/workflows/swift-test-workflow.yml
index 08a900fe..9504c6ed 100644
--- a/swift/.github/workflows/test-workflow.yml
+++ b/.github/workflows/swift-test-workflow.yml
@@ -9,6 +9,9 @@ jobs:
test:
runs-on: ${{ vars.MACOS_RUNNER }}
timeout-minutes: 20
+ defaults:
+ run:
+ working-directory: swift
steps:
- name: Checkout Repository
diff --git a/swift/.github/workflows/update-linters.yml b/.github/workflows/swift-update-linters.yml
similarity index 88%
rename from swift/.github/workflows/update-linters.yml
rename to .github/workflows/swift-update-linters.yml
index b4424b8b..651b587d 100644
--- a/swift/.github/workflows/update-linters.yml
+++ b/.github/workflows/swift-update-linters.yml
@@ -1,4 +1,4 @@
-name: Update Linter Versions
+name: Swift — Update Linter Versions
on:
schedule:
@@ -21,8 +21,8 @@ jobs:
- name: Read current versions from Mintfile
id: current
run: |
- SWIFTLINT=$(grep 'realm/SwiftLint@' Mintfile | sed 's/.*@//')
- SWIFTFORMAT=$(grep 'nicklockwood/SwiftFormat@' Mintfile | sed 's/.*@//')
+ SWIFTLINT=$(grep 'realm/SwiftLint@' swift/Mintfile | sed 's/.*@//')
+ SWIFTFORMAT=$(grep 'nicklockwood/SwiftFormat@' swift/Mintfile | sed 's/.*@//')
echo "swiftlint=$SWIFTLINT" >> "$GITHUB_OUTPUT"
echo "swiftformat=$SWIFTFORMAT" >> "$GITHUB_OUTPUT"
@@ -66,10 +66,11 @@ jobs:
printf '%s\n' \
"realm/SwiftLint@${{ steps.latest.outputs.swiftlint }}" \
"nicklockwood/SwiftFormat@${{ steps.latest.outputs.swiftformat }}" \
- > Mintfile
+ > swift/Mintfile
- name: Install Mint and bootstrap new versions
if: steps.check.outputs.has_updates == 'true' && steps.existing_pr.outputs.exists != 'true'
+ working-directory: swift
run: |
brew install mint
echo "${{ github.workspace }}/.mint/bin" >> "$GITHUB_PATH"
@@ -77,6 +78,7 @@ jobs:
- name: Run lint fix
if: steps.check.outputs.has_updates == 'true' && steps.existing_pr.outputs.exists != 'true'
+ working-directory: swift
run: ./Scripts/lint fix --verbose
- name: Commit and push
@@ -85,7 +87,7 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -A
- git commit -m "chore: update linter versions" \
+ git commit -m "chore: update Swift linter versions" \
-m "SwiftLint: ${{ steps.current.outputs.swiftlint }} -> ${{ steps.latest.outputs.swiftlint }}" \
-m "SwiftFormat: ${{ steps.current.outputs.swiftformat }} -> ${{ steps.latest.outputs.swiftformat }}"
git push origin auto/update-linters
@@ -113,13 +115,13 @@ jobs:
BODY+="1. **Close and reopen this PR** — this fires a new \`pull_request\` event from your user, which triggers all checks.\n"
BODY+="2. **Trigger workflows via CLI:**\n"
BODY+="\`\`\`bash\n"
- BODY+="gh workflow run build-samples.yml --ref auto/update-linters\n"
- BODY+="gh workflow run lint.yml --ref auto/update-linters\n"
- BODY+="gh workflow run test-package.yml --ref auto/update-linters\n"
+ BODY+="gh workflow run swift-build-samples.yml --ref auto/update-linters\n"
+ BODY+="gh workflow run swift-lint.yml --ref auto/update-linters\n"
+ BODY+="gh workflow run swift-test-package.yml --ref auto/update-linters\n"
BODY+="\`\`\`\n"
gh pr create \
- --title "chore: bump linter versions" \
+ --title "chore: bump Swift linter versions" \
--body "$(echo -e "$BODY")" \
--label "dependencies" \
--head "auto/update-linters" \
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..c2b172ca
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,38 @@
+# OS
+.DS_Store
+
+# Editors
+*.iml
+.idea/
+.vscode/settings.json
+
+# Claude / dev tooling
+.claude/
+CLAUDE.md
+.dev/
+.mint
+
+# Swift / Xcode / SwiftPM
+.build/
+.swiftpm/
+xcuserdata/
+
+# Sample app secrets (Swift)
+**/Storefront.xcconfig
+**/*.entitlements
+
+# Apollo / GraphQL
+*.graphqls
+apollo-ios-cli
+
+# Android / Gradle
+.gradle/
+build/
+captures/
+.externalNativeBuild
+.cxx
+
+# Android local config / secrets
+local.properties
+.env
+upload-keystore.jks
diff --git a/swift/.ruby-version b/.ruby-version
similarity index 100%
rename from swift/.ruby-version
rename to .ruby-version
diff --git a/swift/.swiftlint.yml b/.swiftlint.yml
similarity index 95%
rename from swift/.swiftlint.yml
rename to .swiftlint.yml
index 103dbedb..7de108ef 100644
--- a/swift/.swiftlint.yml
+++ b/.swiftlint.yml
@@ -9,8 +9,8 @@ disabled_rules:
- function_body_length
included:
- - Sources
- - Tests
+ - swift/Sources
+ - swift/Tests
opt_in_rules:
- array_init
diff --git a/swift/LICENSE b/LICENSE
similarity index 100%
rename from swift/LICENSE
rename to LICENSE
diff --git a/swift/Package.resolved b/Package.resolved
similarity index 68%
rename from swift/Package.resolved
rename to Package.resolved
index 61f82571..3ecd6952 100644
--- a/swift/Package.resolved
+++ b/Package.resolved
@@ -1,14 +1,5 @@
{
"pins" : [
- {
- "identity" : "apollo-ios",
- "kind" : "remoteSourceControl",
- "location" : "https://github.com/apollographql/apollo-ios.git",
- "state" : {
- "revision" : "5936a2a7767bcd4e37db5e9015a23800c3e95ac7",
- "version" : "2.1.0"
- }
- },
{
"identity" : "swiftlintplugin",
"kind" : "remoteSourceControl",
diff --git a/swift/Package.swift b/Package.swift
similarity index 89%
rename from swift/Package.swift
rename to Package.swift
index e69e1c0d..5d8b4fa4 100644
--- a/swift/Package.swift
+++ b/Package.swift
@@ -31,16 +31,19 @@ let package = Package(
.target(
name: "ShopifyCheckoutSheetKit",
dependencies: [],
+ path: "swift/Sources/ShopifyCheckoutSheetKit",
resources: [.process("Assets.xcassets")]
),
.target(
name: "ShopifyAcceleratedCheckouts",
dependencies: ["ShopifyCheckoutSheetKit"],
+ path: "swift/Sources/ShopifyAcceleratedCheckouts",
resources: [.process("Localizable.xcstrings"), .process("Media.xcassets")]
),
.testTarget(
name: "ShopifyCheckoutSheetKitTests",
dependencies: ["ShopifyCheckoutSheetKit"],
+ path: "swift/Tests/ShopifyCheckoutSheetKitTests",
plugins: [
.plugin(name: "SwiftLint", package: "SwiftLintPlugin")
]
@@ -51,6 +54,7 @@ let package = Package(
"ShopifyAcceleratedCheckouts",
.product(name: "ViewInspector", package: "ViewInspector")
],
+ path: "swift/Tests/ShopifyAcceleratedCheckoutsTests",
plugins: [
.plugin(name: "SwiftLint", package: "SwiftLintPlugin")
]
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..6a14e7f5
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# Checkout Kit
diff --git a/android/.gitattributes b/android/.gitattributes
deleted file mode 100644
index 6d35a2b5..00000000
--- a/android/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.graphqls linguist-generated=true
diff --git a/android/.github/CODE_OF_CONDUCT.md b/android/.github/CODE_OF_CONDUCT.md
deleted file mode 100644
index 6023b84e..00000000
--- a/android/.github/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,136 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-We as members, contributors, and leaders pledge to make participation in our
-community a harassment-free experience for everyone, regardless of age, body
-size, visible or invisible disability, ethnicity, sex characteristics, gender
-identity and expression, level of experience, education, socio-economic status,
-nationality, personal appearance, race, caste, color, religion, or sexual
-identity and orientation.
-
-We pledge to act and interact in ways that contribute to an open, welcoming,
-diverse, inclusive, and healthy community.
-
-## Our Standards
-
-Examples of behavior that contributes to a positive environment for our
-community include:
-
-- Demonstrating empathy and kindness toward other people
-- Being respectful of differing opinions, viewpoints, and experiences
-- Giving and gracefully accepting constructive feedback
-- Accepting responsibility and apologizing to those affected by our mistakes,
- and learning from the experience
-- Focusing on what is best not just for us as individuals, but for the overall
- community
-
-Examples of unacceptable behavior include:
-
-- The use of sexualized language or imagery, and sexual attention or advances of
- any kind
-- Trolling, insulting or derogatory comments, and personal or political attacks
-- Public or private harassment
-- Publishing others' private information, such as a physical or email address,
- without their explicit permission
-- Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-## Enforcement Responsibilities
-
-Community leaders are responsible for clarifying and enforcing our standards of
-acceptable behavior and will take appropriate and fair corrective action in
-response to any behavior that they deem inappropriate, threatening, offensive,
-or harmful.
-
-Community leaders have the right and responsibility to remove, edit, or reject
-comments, commits, code, wiki edits, issues, and other contributions that are
-not aligned to this Code of Conduct, and will communicate reasons for moderation
-decisions when appropriate.
-
-## Scope
-
-This Code of Conduct applies within all community spaces, and also applies when
-an individual is officially representing the community in public spaces.
-Examples of representing our community include using an official e-mail address,
-posting via an official social media account, or acting as an appointed
-representative at an online or offline event.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported to the community leaders responsible for enforcement at
-opensource@shopify.com.
-All complaints will be reviewed and investigated promptly and fairly.
-
-All community leaders are obligated to respect the privacy and security of the
-reporter of any incident.
-
-## Enforcement Guidelines
-
-Community leaders will follow these Community Impact Guidelines in determining
-the consequences for any action they deem in violation of this Code of Conduct:
-
-### 1. Correction
-
-**Community Impact**: Use of inappropriate language or other behavior deemed
-unprofessional or unwelcome in the community.
-
-**Consequence**: A private, written warning from community leaders, providing
-clarity around the nature of the violation and an explanation of why the
-behavior was inappropriate. A public apology may be requested.
-
-### 2. Warning
-
-**Community Impact**: A violation through a single incident or series of
-actions.
-
-**Consequence**: A warning with consequences for continued behavior. No
-interaction with the people involved, including unsolicited interaction with
-those enforcing the Code of Conduct, for a specified period of time. This
-includes avoiding interactions in community spaces as well as external channels
-like social media. Violating these terms may lead to a temporary or permanent
-ban.
-
-### 3. Temporary Ban
-
-**Community Impact**: A serious violation of community standards, including
-sustained inappropriate behavior.
-
-**Consequence**: A temporary ban from any sort of interaction or public
-communication with the community for a specified period of time. No public or
-private interaction with the people involved, including unsolicited interaction
-with those enforcing the Code of Conduct, is allowed during this period.
-Violating these terms may lead to a permanent ban.
-
-### 4. Permanent Ban
-
-**Community Impact**: Demonstrating a pattern of violation of community
-standards, including sustained inappropriate behavior, harassment of an
-individual, or aggression toward or disparagement of classes of individuals.
-
-**Consequence**: A permanent ban from any sort of public interaction within the
-community.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage],
-version 2.1, available at
-[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
-
-Community Impact Guidelines were inspired by
-[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
-
-For answers to common questions about this code of conduct, see the FAQ at
-[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
-[https://www.contributor-covenant.org/translations][translations].
-
-[homepage]: https://www.contributor-covenant.org
-
-[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
-
-[Mozilla CoC]: https://github.com/mozilla/diversity
-
-[FAQ]: https://www.contributor-covenant.org/faq
-
-[translations]: https://www.contributor-covenant.org/translations
diff --git a/android/.github/CONTRIBUTING.md b/android/.github/CONTRIBUTING.md
deleted file mode 100644
index 21fa07b9..00000000
--- a/android/.github/CONTRIBUTING.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# Contributing
-
-The following is a set of guidelines for contributing to the project. Please take a moment to read
-through them before submitting your first PR.
-
-## Code of Conduct
-
-This project and everyone participating in it are governed by
-the [Code of Conduct](./CODE_OF_CONDUCT.md).
-By participating, you are expected to uphold this code. Please report unacceptable
-behavior to [opensource@shopify.com](mailto:opensource@shopify.com).
-
-## Welcomed Contributions
-
-- Reporting issues with existing features
-- Bug fixes
-- Performance improvements
-- Documentation
-- Usability Improvements
-
-## Things we won't merge
-
-- Additional dependencies that limit sdk use (e.g. android dependencies)
-- Any changes that break existing tests
-- Any changes without sufficient tests
-
-## Proposing Features
-
-When in doubt about whether we will be interested in including a new feature in this project, please
-open an issue to propose the feature so we can confirm the feature should be in scope for the
-project before it is implemented.
-
-**NOTE**: Issues that have not been active for 30 days will be marked as stale, and subsequently closed after a further 7 days of inactivity.
-
-## How To Contribute
-
-1. Fork the repo and branch off of main
-2. Create a feature branch in your fork
-3. Make changes and add any relevant tests
-4. Run formatting and lint checks (see below)
-5. Verify the changes locally (e.g. via the sample app)
-6. Commit your changes and push
-7. Ensure all checks (e.g. tests) are passing in GitHub
-8. Create a new pull request with a detailed description of what is changing and why
-
-## Formatting
-
-This project uses [detekt](https://detekt.dev/) for Kotlin linting and formatting. Before submitting a PR, please run the following to auto-fix formatting issues:
-
-```bash
-./gradlew detekt --auto-correct
-```
-
-To check for lint issues without auto-correcting:
-
-```bash
-./gradlew detekt
-```
-
-## Public API surface
-
-The library's public API is tracked via a committed baseline at `lib/api/lib.api`, managed by the [binary-compatibility-validator](https://github.com/Kotlin/binary-compatibility-validator) Gradle plugin. CI runs `./gradlew :lib:apiCheck` on every PR and fails if the compiled public API diverges from the baseline.
-
-If your change intentionally modifies public API (adds, removes, or changes any public class, method, or field):
-
-1. Run `dev api dump` (or `./gradlew :lib:apiDump`) to regenerate the baseline.
-2. Review the diff in `lib/api/lib.api` alongside your code changes.
-3. Commit the updated `.api` file in the same PR.
-
-If you did *not* intend to change public API and `apiCheck` is failing, the diff shows what your change inadvertently affected — treat it as a signal that something in your PR has consumer-visible impact.
-
-## Releasing a new version
-
-Open a pull request with the following changes:
-
-1. Bump the [versionName](https://github.com/Shopify/checkout-kit-android/blob/main/lib/build.gradle#L17)
-2. Add an entry to the top of the [CHANGELOG](https://github.com/shopify/checkout-sheet-kit-android/blob/main/CHANGELOG.md)
-
-Once you have merged a pull request with these changes, you will be ready to publish a new version.
-
-To do so, navigate to and click "Draft a new release" then complete the following steps:
-
-1. Create a tag for the new version
-2. Use the same tag as the name for the version
-3. Document a full list of changes since the previous release, tagging merged pull requests where applicable, in the description box
-4. Check "Set as the latest release"
-5. When ready click "Publish release"
-
-This will trigger a GitHub workflow to start the process of publishing a new version of the library to maven central. **Note** - A manual approval by a maintainer is required before release to maven central.
diff --git a/android/.github/ISSUE_TEMPLATE/bug_report.yml b/android/.github/ISSUE_TEMPLATE/bug_report.yml
deleted file mode 100644
index ca6795e0..00000000
--- a/android/.github/ISSUE_TEMPLATE/bug_report.yml
+++ /dev/null
@@ -1,72 +0,0 @@
-name: 🐛 Bug Report
-description: Something is wrong with the Checkout Sheet Kit.
-labels: ["Bug", "untriaged"]
-body:
- - type: markdown
- attributes:
- value: |
- ## Hi there!
-
- If your issue is **not** related to the Checkout Sheet Kit itself, but rather an internal checkout or storefront problem, please reach out to Shopify support directly where the issue will be triaged correctly.
-
- - type: dropdown
- attributes:
- label: What area is the issue related to?
- options:
- - Checkout Sheet Kit
- - Storefront API
- - Multipass
- - Lifecycle methods
- - Web Pixels
- - Other / I don't know
- validations:
- required: true
-
- - type: input
- attributes:
- label: What version of the package are you using?
- description: Please list the package version and device you are testing with.
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: Reproducible sample code
- description: Please provide examples of code relating to your issue. This might include GraphQL queries to the Storefront API to create a cart, or native code to present the checkout URL. Providing this will help us debug your issue more quickly.
- validations:
- required: false
-
- - type: textarea
- attributes:
- label: Steps to Reproduce
- description: A list of steps to reproduce the behavior.
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: Expected Behavior
- description: A concise description of what you expected to happen.
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: Actual Behavior
- description: A concise description of what you're experiencing.
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: Screenshots/Videos/Log output
- validations:
- required: false
-
- - type: textarea
- attributes:
- label: Storefront domain
- placeholder: your-storefront-name.myshopify.com
- description: This will expedite our search for any errors that occurred.
- validations:
- required: true
diff --git a/android/.github/ISSUE_TEMPLATE/feature_request.yml b/android/.github/ISSUE_TEMPLATE/feature_request.yml
deleted file mode 100644
index 00f9fee6..00000000
--- a/android/.github/ISSUE_TEMPLATE/feature_request.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-name: 💡 Feature Request
-description:
- An idea or suggestion for a new feature or enhancement to the Checkout Sheet
- Kit
-labels: ["Feature-Request", "untriaged"]
-body:
- - type: markdown
- attributes:
- value: |
- ## Hi there!
-
- Please tell us about the new feature or enhancement you'd like to see implemented in the Checkout Sheet Kit.
-
- - type: textarea
- attributes:
- label: Description
- description: A detailed description of the feature or enhancement you'd like to see.
- validations:
- required: true
- - type: textarea
- attributes:
- label: Rationale
- description: Explain the benefits of this feature.
- validations:
- required: true
diff --git a/android/.github/pull_request_template.md b/android/.github/pull_request_template.md
deleted file mode 100644
index 35ce2626..00000000
--- a/android/.github/pull_request_template.md
+++ /dev/null
@@ -1,31 +0,0 @@
-### What changes are you making?
-
-
-
-### How to test
-
-
-
----
-
-### Before you merge
-
-> [!IMPORTANT]
->
-> - [ ] I've added tests to support my implementation
-> - [ ] I have read and agree with the [Contribution Guidelines](https://github.com/shopify/checkout-sheet-kit-android/blob/main/.github/CONTRIBUTING.md).
-> - [ ] I have read and agree with the [Code of Conduct](https://github.com/shopify/checkout-sheet-kit-android/blob/main/.github/CODE_OF_CONDUCT.md).
-> - [ ] I've updated the [README](https://github.com/shopify/checkout-sheet-kit-android).
-
----
-
-
-Checklist for releasing a new version
-
-- [ ] I have bumped the version number in the [`build.gradle` file](https://github.com/Shopify/checkout-kit-android/blob/main/lib/build.gradle#L17)
-- [ ] I have updated the versions in the [README.md](https://github.com/shopify/checkout-sheet-kit-android/blob/main/README.md) for both Gradle and Maven.
-
-
-
-> [!TIP]
-> See the [Contributing documentation](https://github.com/shopify/checkout-sheet-kit-android/blob/main/.github/CONTRIBUTING.md#releasing-a-new-version) for instructions on how to publish a new version of the library.
diff --git a/android/.github/workflows/cla.yml b/android/.github/workflows/cla.yml
deleted file mode 100644
index 53811187..00000000
--- a/android/.github/workflows/cla.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-name: Contributor License Agreement (CLA)
-
-on:
- pull_request_target:
- types: [opened, synchronize]
- issue_comment:
- types: [created]
-
-jobs:
- cla:
- runs-on: ubuntu-latest
- permissions:
- actions: write
- pull-requests: write
- if: |
- (github.event.issue.pull_request
- && !github.event.issue.pull_request.merged_at
- && contains(github.event.comment.body, 'signed')
- )
- || (github.event.pull_request && !github.event.pull_request.merged)
- steps:
- - uses: Shopify/shopify-cla-action@v1
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- cla-token: ${{ secrets.CLA_TOKEN }}
diff --git a/android/.github/workflows/stale.yml b/android/.github/workflows/stale.yml
deleted file mode 100644
index ca1c0bb8..00000000
--- a/android/.github/workflows/stale.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
-#
-# You can adjust the behavior by modifying this file.
-# For more information, see:
-# https://github.com/actions/stale
-name: Mark stale issues and pull requests
-
-on:
- schedule:
- - cron: "35 3 * * *"
-
-jobs:
- stale:
- runs-on: ubuntu-latest
- permissions:
- issues: write
-
- steps:
- - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
-
- days-before-stale: 30
- days-before-close: 7
-
- stale-issue-label: "stale"
- stale-issue-message: >
- This issue has been automatically marked as stale because it has not had
- recent activity. It will be closed if no further activity occurs in 30 days.
- Thank you for your contributions.
- close-issue-message: >
- This issue has been automatically closed because it has not had recent activity.
- Please re-open it if it is still relevant.
- stale-pr-message: "Stale pull request message"
- stale-pr-label: "stale"
- exempt-issue-labels: "never-stale,do-not-close,do-not-mark-as-stale"
-
diff --git a/android/.gitignore b/android/.gitignore
deleted file mode 100644
index 4bf7268e..00000000
--- a/android/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.iml
-.gradle
-/local.properties
-/.idea/
-.DS_Store
-/build
-/captures
-.externalNativeBuild
-.cxx
-local.properties
-.env
-upload-keystore.jks
-**/.claude/
diff --git a/android/.ruby-version b/android/.ruby-version
deleted file mode 100644
index b16ae123..00000000
--- a/android/.ruby-version
+++ /dev/null
@@ -1,2 +0,0 @@
-3.4.4
-
diff --git a/android/LICENSE b/android/LICENSE
deleted file mode 100644
index 2c4f65d8..00000000
--- a/android/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-MIT License
-
-Copyright 2023-present, Shopify Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/e2e/README.md b/e2e/README.md
new file mode 100644
index 00000000..290248e4
--- /dev/null
+++ b/e2e/README.md
@@ -0,0 +1,3 @@
+# Checkout Kit — End-to-end tests
+
+Placeholder. End-to-end tests covering Swift, Android, and (later) React Native will be folded into this directory in a follow-up.
diff --git a/react-native/README.md b/react-native/README.md
new file mode 100644
index 00000000..3305c6bf
--- /dev/null
+++ b/react-native/README.md
@@ -0,0 +1,3 @@
+# Checkout Kit — React Native
+
+Placeholder. The React Native wrapper will be folded into this directory in a follow-up. Until then, see the existing repo at `Shopify/checkout-sheet-kit-react-native`.
diff --git a/swift/.github/CODEOWNERS b/swift/.github/CODEOWNERS
deleted file mode 100644
index 7515646a..00000000
--- a/swift/.github/CODEOWNERS
+++ /dev/null
@@ -1 +0,0 @@
-* @Shopify/checkout-kit-maintainers
diff --git a/swift/.github/CONTRIBUTING.md b/swift/.github/CONTRIBUTING.md
deleted file mode 100644
index 6b37530e..00000000
--- a/swift/.github/CONTRIBUTING.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# Contributing
-
-The following is a set of guidelines for contributing to the project. Please take a moment to read through them before submitting your first PR.
-
-## Code of Conduct
-
-This project and everyone participating in it are governed by the [Code of Conduct](/.github/CODE_OF_CONDUCT.md).
-By participating, you are expected to uphold this code. Please report unacceptable
-behavior to [opensource@shopify.com](mailto:opensource@shopify.com).
-
-## Welcomed Contributions
-
-- Reporting issues with existing features
-- Bug fixes
-- Performance improvements
-- Documentation
-- Usability Improvements
-
-## Things we won't merge
-
-- Additional dependencies that limit sdk use (e.g. swift dependencies)
-- Any changes that break existing tests
-- Any changes without sufficient tests
-
-## Proposing Features
-
-When in doubt about whether we will be interested in including a new feature in this project, please open an issue to propose the feature so we can confirm the feature should be in scope for the project before it is implemented.
-
-**NOTE**: Issues that have not been active for 30 days will be marked as stale, and subsequently closed after a further 7 days of inactivity.
-
-## Prerequisites
-
-This project uses [Mint](https://github.com/yonaskolb/Mint) to manage Swift linting tools (SwiftLint and SwiftFormat) at pinned versions via the `Mintfile`. This ensures consistent formatting across all contributors and CI.
-
-**Shopify employees:**
-```bash
-dev up
-```
-
-**External contributors:**
-```bash
-brew install mint
-mint bootstrap
-```
-
-## How To Contribute
-
-1. Fork the repo and branch off of main
-2. Create a feature branch in your fork
-3. Make changes and add any relevant relevant tests
-4. Run `./Scripts/lint fix` to auto-fix formatting issues
-5. Verify the changes locally (e.g. via the sample app)
-6. Commit your changes and push
-7. Ensure all checks (e.g. tests) are passing in GitHub
-8. Create a new pull request with a detailed description of what is changing and why
-
-## Releasing a new version
-
-Open a pull request with the following changes:
-1. Bump the [package version](https://github.com/Shopify/checkout-sheet-kit-swift/blob/main/Sources/ShopifyCheckoutSheetKit/ShopifyCheckoutSheetKit.swift#L27)
-2. Bump the [podspec version](https://github.com/Shopify/checkout-sheet-kit-swift/blob/main/ShopifyCheckoutSheetKit.podspec#L2)
-3. Add an entry to the top of the [CHANGELOG](../CHANGELOG.md)
-
-Once you have merged a pull request with these changes, you will be ready to publish a new version.
-
-To do so, navigate to
-https://github.com/Shopify/checkout-sheet-kit-swift/releases and click "Draft a new release" then complete the following steps:
-
-1. Create a tag for the new version
-2. Use the same tag as the name for the version
-3. Document a full list of changes since the previous release, tagging merged pull requests where applicable, in the description box.
-4. Check "Set as the latest release" to ensure Swift Package Manager identifies this as the latest release.
-5. When ready, click "Publish release". This will ensure SPM can identity the latest version and it will kickstart the [CI process](https://github.com/Shopify/checkout-sheet-kit-swift/actions/workflows/deploy.yml) to publish a new version of the CocoaPod.
diff --git a/swift/.github/ISSUE_TEMPLATE/config.yml b/swift/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index 3ba13e0c..00000000
--- a/swift/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1 +0,0 @@
-blank_issues_enabled: false
diff --git a/swift/.github/dependabot.yaml b/swift/.github/dependabot.yaml
deleted file mode 100644
index 74c36279..00000000
--- a/swift/.github/dependabot.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-version: 2
-updates:
- - package-ecosystem: github-actions
- directory: "/"
- schedule:
- interval: weekly
- cooldown:
- default-days: 7
- - package-ecosystem: swift
- directory: "/"
- schedule:
- interval: daily
- cooldown:
- default-days: 7
diff --git a/swift/.github/pull_request_template.md b/swift/.github/pull_request_template.md
deleted file mode 100644
index ca0f7b3d..00000000
--- a/swift/.github/pull_request_template.md
+++ /dev/null
@@ -1,27 +0,0 @@
-### What changes are you making?
-
-
-
----
-
-### Before you merge
-
-> [!IMPORTANT]
->
-> - [ ] I've added tests to support my implementation
-> - [ ] I have read and agree with the [Contribution Guidelines](https://github.com/shopify/checkout-sheet-kit-swift/blob/main/.github/CONTRIBUTING.md).
-> - [ ] I have read and agree with the [Code of Conduct](https://github.com/shopify/checkout-sheet-kit-swift/blob/main/.github/CODE_OF_CONDUCT.md).
-> - [ ] I've updated the [README](https://github.com/shopify/checkout-sheet-kit-swift).
->
-> _Releasing a new version of the kit?_
->
-> - [ ] I have bumped the version number in the [`podspec` file](https://github.com/Shopify/checkout-sheet-kit-swift/blob/main/ShopifyCheckoutKit.podspec#L2).
->
-> _Releasing a new major version?_
->
-> - [ ] I have bumped the version number in the [README](https://github.com/Shopify/checkout-kit-swift/blob/main/README.md#packageswift).
-
----
-
-> [!TIP]
-> See the [Contributing documentation](https://github.com/shopify/checkout-sheet-kit-swift/blob/main/.github/CONTRIBUTING.md#releasing-a-new-version) for instructions on how to publish a new version of the library.
diff --git a/swift/.github/workflows/build-samples.yml b/swift/.github/workflows/build-samples.yml
deleted file mode 100644
index 1e4c8d23..00000000
--- a/swift/.github/workflows/build-samples.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-name: Build Sample Apps
-
-on:
- push:
- branches:
- - main
- pull_request:
- workflow_dispatch:
-
-jobs:
- call-workflow-passing-data:
- uses: ./.github/workflows/test-workflow.yml
- with:
- test-path: ./Scripts/build_samples
diff --git a/swift/.github/workflows/test-package.yml b/swift/.github/workflows/test-package.yml
deleted file mode 100644
index 94f55e40..00000000
--- a/swift/.github/workflows/test-package.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-name: Run Package Tests
-
-on:
- push:
- branches:
- - main
- pull_request:
- workflow_dispatch:
-
-jobs:
- call-workflow-passing-data:
- uses: ./.github/workflows/test-workflow.yml
- with:
- test-path: ./scripts/xcode_run test ShopifyCheckoutSheetKit-Package
diff --git a/swift/.gitignore b/swift/.gitignore
deleted file mode 100644
index fef03de2..00000000
--- a/swift/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-.build
-.swiftpm
-.DS_Store
-xcuserdata
-**/Storefront.xcconfig
-**/*.entitlements
-.vscode/settings.json
-.claude/
-CLAUDE.md
-
-# ShopifyAcceleratedCheckoutsApp
-*.graphqls
-apollo-ios-cli
-
-.dev/
-.mint
diff --git a/swift/ShopifyCheckoutSheetKit.podspec b/swift/ShopifyCheckoutSheetKit.podspec
index 393eeddb..c0b27652 100644
--- a/swift/ShopifyCheckoutSheetKit.podspec
+++ b/swift/ShopifyCheckoutSheetKit.podspec
@@ -8,7 +8,7 @@ Pod::Spec.new do |s|
s.homepage = "https://github.com/Shopify/checkout-sheet-kit-swift"
s.readme = "https://github.com/Shopify/checkout-sheet-kit-swift/blob/main/README.md"
s.changelog = "https://github.com/Shopify/checkout-sheet-kit-swift/releases"
- s.license = { :type => "MIT", :file => "LICENSE" }
+ s.license = { :type => "MIT", :file => "../LICENSE" }
s.source = {
:git => "https://github.com/Shopify/checkout-sheet-kit-swift.git", :tag => s.version.to_s