Add swiftinterface API diff tracking for RevenueCatUI#6450
Add swiftinterface API diff tracking for RevenueCatUI#6450facumenzella merged 12 commits intomainfrom
Conversation
Generated by 🚫 Danger |
ccd7927 to
d38c553
Compare
- Remove hardcoded `= "RevenueCat"` defaults from swiftinterface_pattern_for_sdk and find_swiftinterface_file — callers always pass module_name explicitly - Remove error_callback from sh call so sh raises on non-zero exit, making the rescue block actually reachable for breaking API change detection Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace branch-specific `purchases_ios_pr6450_fix` with the canonical `purchases_ios` derived from the repo directory name on main. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Using public-api-diff only caught breaking changes, not additions. This meant a new API added in PR 1 (no baseline update required) could be silently broken in PR 2 — the tool would compare against the old baseline that never contained the new API and report no issue. Restoring FileUtils.identical? + diff -u ensures any divergence from the committed baseline fails CI and forces an explicit baseline update. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 505ea10. Configure here.
The committed baselines were generated locally with different build settings (missing -package-name, different declaration ordering) than what CI produces. Since check_api_changes now uses diff -u, the baselines must exactly match CI output. Downloaded from CircleCI jobs 541296 (RevenueCat) and 541284 (RevenueCatUI). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ajpallares
left a comment
There was a problem hiding this comment.
I have some more comments. Mostly about some seemingly unrelated diffs in this PR.
Also, the PR description should be updated and simplified I believe
There was a problem hiding this comment.
Why are these files changing in this PR? There shouldn't be changes in the interfaces
There was a problem hiding this comment.
This diff shouldn't be in this PR I believe?
There was a problem hiding this comment.
These changes are required. When building RevenueCatUI with BUILD_LIBRARY_FOR_DISTRIBUTION=YES, the compiler performs stricter validation of its dependencies' interfaces. The synthesized Codable conformance on the class declaration produces different (and stricter) swiftinterface output than an explicit extension conformance, which caused build failures. Moving the conformance to an explicit extension with CodingKeys, init(from:), and encode(to:) resolves this.
There was a problem hiding this comment.
Tried different things, and this was the only thing that worked
…l-public-api-diff steps Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
📸 Snapshot Test264 unchanged
🛸 Powered by Emerge Tools |
ajpallares
left a comment
There was a problem hiding this comment.
It's great to have this! Just one suggestion of splitting this into 2 PRs, but I don't have a strong opinion, so I'm approving
|
|
||
| Dir.chdir("..") do | ||
| sh("xcodebuild", "clean", "build", | ||
| "-workspace", ".", |
There was a problem hiding this comment.
I suspect -workspace . was added to make RevenueCatUI resolve RevenueCat through the SPM graph?
Could this be the reason why we're seeing all the revenuecat-api-*.swiftinterface files change in this PR?
If so, for better traceability, this should probably be split into two PRs. WDYT @facumenzella? Not a blocker, but seems like it's better for traceability

Summary
Notes
Test plan