Restructure for the monorepo setup#9
Merged
Merged
Conversation
🔍 Denylist Analysis ResultsDiscovered 3 packages. These include both those that are net-new and those that have been explicitly approved or denied for use. .github/workflows/swift-update-linters.yml✅ Known Packages - Approved for Use (1)
Package.resolved🔄 New Packages Entering the Supply Chain (2)
For any questions or to provide feedback, please reach out to #help-bumperbot. Generated by Bumperbot. |
Contributor
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
11 tasks
7 tasks
Juanita-Dash
added a commit
that referenced
this pull request
May 8, 2026
Imports the source of github.com/Shopify/checkout-sheet-kit-react-native at commit a349b97 (current main) under react-native/. No code changes are made — this is a verbatim snapshot. Includes v4.0.0 (New Architecture Release) and the fast-xml-parser 4.5.3 → 4.5.6 bump (Shopify/checkout-sheet-kit-react-native#462, #484) which clears the multirepo-denylist-check on this PR. The .github/ directory is intentionally not imported; CI workflows will be re-authored at the monorepo root with rn-* prefixes (matching the existing swift-* / android-* convention) in a follow-up. Supersedes #28 — re-cut on current source main per Kieran's review. Mirrors the import-then-rename pattern used by the Swift (#9 → #22) and Android subdirs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Juanita-Dash
added a commit
that referenced
this pull request
May 8, 2026
Imports the source of github.com/Shopify/checkout-sheet-kit-react-native at commit a349b97 (current main) under react-native/. No code changes are made — this is a verbatim snapshot. Includes v4.0.0 (New Architecture Release) and the fast-xml-parser 4.5.3 → 4.5.6 bump (Shopify/checkout-sheet-kit-react-native#462, #484) which clears the multirepo-denylist-check on this PR. The .github/ directory is intentionally not imported; CI workflows will be re-authored at the monorepo root with rn-* prefixes (matching the existing swift-* / android-* convention) in a follow-up. Supersedes #28 — re-cut on current source main per Kieran's review. Mirrors the import-then-rename pattern used by the Swift (#9 → #22) and Android subdirs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

Restructure for monorepo
Folds the previously-imported subtrees (
swift/andandroid/) into a single coherent monorepo with shared CI scaffolding, a single contribution flow, and per-platform release pipelines that can run independently.The subtree imports themselves are already on
mainfrom the previous push — this PR is everything that sits on top of that: structural moves, merged.github, and rewritten workflows.What's changing
SwiftPM root setup
SwiftPM consumers reference the repo URL and look for
Package.swiftat the repo root — there's no consumer-side path override. SoPackage.swiftandPackage.resolvedmove to the repo root, withpath: "swift/Sources/..."redirects on each target so the actual sources can stay underswift/. This keeps every existing SwiftPM consumer ofShopify/checkout-sheet-kit-swiftworking unchanged once we point them at the new repo URL.The same constraint forces
.swiftlint.ymlto root (theSwiftLintPlugininvoked by the test targets only looks adjacent toPackage.swift);included:is updated toswift/Sourcesandswift/Tests..swiftformat,Mintfile,Gemfile, the podspec, and the lint scripts all stay underswift/— they're not subject to the same constraint.Repo-root file consolidation
LICENSE,.gitattributes,.ruby-versionpromoted to root (byte-identical between the two source repos — verified before deduping)..gitignoremerged at root from the union of both source-repo ignore patterns.README.mdis a stub for now; platform READMEs stay atswift/README.mdandandroid/README.md.LICENSE→../LICENSE.Single
.github/CODEOWNERS,CODE_OF_CONDUCT.md,ISSUE_TEMPLATE/*promoted to root (identical or near-identical between repos).CONTRIBUTING.mdrewritten with shared sections (CoC, what we'll/won't merge, general flow) plus per-platform sections for prerequisites, formatting, and the release process.pull_request_template.mdrewritten with shared "what changes" / "how to test" plus collapsible per-platform release checklists.Workflows
Workflows live under
.github/workflows/withswift-/android-prefixes:swift-test-package.ymltest-package.ymlswift-build-samples.ymlbuild-samples.ymlswift-test-workflow.ymltest-workflow.yml(callable)swift-lint.ymllint.ymlswift-deploy.ymldeploy.ymlswift-update-linters.ymlupdate-linters.ymlandroid-test.ymltest.ymlandroid-deploy.ymlpublish.ymlandroid-license-headers.ymlcheck_license_headers.ymlcla.ymlstale.ymlEach platform workflow gets:
paths:filter scoped to its subtree so an Android-only PR doesn't fire Swift CI and vice versa.defaults.run.working-directory: swiftorandroidso existing./gradlew …/./Scripts/…invocations work unchanged.hashFiles('swift/Mintfile'),BUNDLE_GEMFILE: …/swift/Gemfile, etc.).Release tag scheme — important for reviewers
Both source repos publish on
release: published. In a single repo that means every release would fire both deploy workflows. The convention this PR introduces:3.8.1) — required for SwiftPMfrom:constraint resolution.android/X.Y.Z(android/3.0.1).Each deploy workflow gates on tag prefix:
This is the smallest change that lets both pipelines coexist on a single shared trigger.
Single dependabot config
One
.github/dependabot.ymlwith four ecosystems:github-actions(root),swift(root, sincePackage.swiftis at root),gradle(/android), andgradle(/android/samples/MobileBuyIntegration). Existing version pins (Kotlin 1.9.x, Mockito 4.x, JUnit 4.x, etc.) and the Apollo grouping are preserved.Placeholders
react-native/README.mdande2e/README.mdare one-line placeholders so the layout matches the eventual structure. No content yet.What's not changing
ShopifyCheckoutSheetKit,com.shopify:checkout-sheet-kit) — rename to "checkout kit" is a follow-up.:libmodule structure or the Swift target layout.samples/MobileBuyIntegration/remains a self-contained gradle project.Verified locally
swift package describeparses the manifest, resolves both products / both test targets / both deps.(cd android && ./gradlew :lib:tasks)resolves the project and lists the expected tasks.git blame swift/Sources/ShopifyCheckoutSheetKit/CheckoutBridge.swifttraces back to 2023 commits — history preserved across the subtree boundary.upload-keystore.jks,local.properties,.env— none ingit ls-files)..github/workflows/*.ymlYAML lint locally.CI on this PR will exercise each workflow against its corresponding subtree.
Follow-ups (intentionally not in this PR)
artifactId, package names, READMEs.android/lib/build.gradlePOM/SCM URLs and the podspecs.homepage/s.sourcestill point at the old per-platform repos. Update once the new repo is the canonical source.android/lib/build.gradle:19readsCHECKOUT_SHEET_KIT_VERSIONenv with a hardcoded"3.6.0"default; the publish workflow doesn't set it. Worth flagging to the Android team — not introduced here.dev.ymlthat delegates to per-platformdev(currently youcd swift/orcd android/to usedev).