fix: FirebaseProvider claimed visionOS support Firebase does not have (2.1.1) - #15
Merged
Merged
Conversation
… (2.1.1) Found by dry-running the CocoaPods validation before publishing, rather than discovering it after an irreversible trunk push. The package advertised visionOS for the Firebase adapter, but Firebase gates FirebaseAnalytics to iOS/macCatalyst/macOS/tvOS. Enabling the Firebase trait on a visionOS target failed with `no such module 'FirebaseAnalytics'`. Present in both 2.0.0 and 2.1.0. The same mistake in the podspec: the Firebase, Mixpanel and Bugsnag subspecs inherited visionOS from the root spec while the vendors' own podspecs omit it, so `pod lib lint` failed. Each subspec now declares the platform set its dependency actually supports. Mixpanel and Bugsnag do build for visionOS under SwiftPM — only their CocoaPods specs leave it out — so the two manifests legitimately differ there. CI had a gap shaped exactly like this bug. `platforms` built all five platforms but with NO traits enabled; `providers` built all four traits but only for the macOS host. No adapter was ever compiled for a non-host platform, which is precisely where a vendor's own platform gating bites. Adds a `provider-platforms` job covering all 20 provider x platform combinations; verified locally that it fails on the unfixed code and passes on the fix. No API or behaviour changes. Co-Authored-By: Claude Opus 5 (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.
Found by dry-running the CocoaPods validation before publishing, rather than discovering it after an irreversible trunk push.
The bug
The package advertised visionOS for the Firebase adapter. Firebase gates
FirebaseAnalyticsto iOS/macCatalyst/macOS/tvOS — no visionOS. So:Present in both 2.0.0 and 2.1.0.
Same mistake in the podspec: the
Firebase,MixpanelandBugsnagsubspecs inherited visionOS from the root spec while the vendors' own podspecs omit it, sopod lib lintfailed on four errors. Each subspec now declares the platform set its dependency actually supports.Worth noting the two manifests legitimately differ here: Mixpanel and Bugsnag do build for visionOS under SwiftPM — only their CocoaPods specs leave it out.
Why CI missed it
The gap was shaped exactly like the bug:
platformsprovidersNo provider adapter was ever compiled for a non-host platform — precisely where a vendor's own platform gating bites. The full matrix, run locally, isolates it:
This PR adds a
provider-platformsjob covering all 20 combinations. Verified locally that it fails on the unfixed code and passes on the fix.Consequence for CocoaPods
2.0.0 and 2.1.0 cannot be published to the trunk — their podspecs fail validation for this reason, and correcting them would mean rewriting already-published tags. 2.1.1 will be the first 2.x on CocoaPods; pod users go from 1.0.0 straight to it, skipping both affected versions.
SwiftPM users on 2.1.0 are unaffected unless they build the Firebase trait for visionOS.
Verification
pod lib lint --allow-warnings, all subspecs, all platforms: passed (previously 4 errors)No API or behaviour changes.
🤖 Generated with Claude Code