-
Notifications
You must be signed in to change notification settings - Fork 1.1k
feat: allow spm platforms to select os without being overwritten #8284
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
WcaleNieWolny
wants to merge
3
commits into
ionic-team:main
Choose a base branch
from
Cap-go:fix/ios-spm-platforms
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+30
−3
Conversation
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
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 17, 2025
Member
|
This Pull Request addresses the following Issue: #8276. |
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 18, 2025
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 19, 2025
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 20, 2025
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 21, 2025
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 22, 2025
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 23, 2025
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 24, 2025
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 25, 2025
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 26, 2025
riderx
pushed a commit
to Cap-go/capacitor-plus
that referenced
this pull request
Dec 27, 2025
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.
Problem
When using Swift Package Manager (SPM), the Capacitor CLI currently defaults to iOS 15.0 as the minimum deployment target, regardless of what is configured in Xcode build settings. This causes issues when plugins require a higher minimum iOS version, particularly for security reasons.
Related Work
PR #7556 attempted to address this issue by reading the iOS deployment target from the Xcode project configuration. However, it did not fully solve the problem because:
15.5(it would only read15).iOS(.v15)format, which doesn't support dot versions. According to Apple's documentation, versions with minor numbers (like 15.5) must use the.iOS("15.5")string format insteadThis PR builds upon that work by properly reading the full version (including minor versions) and using the correct Swift Package Manager format.
Security Impact
This is particularly critical for plugins that depend on libraries with security requirements. For example, ZipArchive requires iOS 15.5+ due to a security vulnerability (CVE-2018-25032) in zlib versions before 1.2.12. zlib 1.2.12 is only included in iOS 15.5+ and later versions.
When Capacitor CLI generates a
Package.swiftfile with.iOS(.v15)instead of.iOS("15.5"), it prevents proper enforcement of the security requirement, potentially exposing apps to known vulnerabilities. Furthermore, the project will simply not build if the minimum iOS version is not met.Solution
This PR fixes the SPM platform version generation to:
.iOS("15.5")when a dot version is detected (required for versions like 15.5).iOS(.v15)when no dot version is detected (for major versions only)This ensures that the generated
Package.swiftaccurately reflects the iOS deployment target configured in Xcode, allowing plugins with security requirements (like ZipArchive) to properly enforce their minimum iOS version requirements.Changes
getMajorMinoriOSVersion()function to read the full iOS deployment target (including minor versions) fromproject.pbxprojPackage.swiftgeneration to use the correct platform version format based on whether a dot version is presentDocumentation
.iOS("15.5")format requirementAvailability
This fix is already available in our fork Cap-go/capacitor-plus and can be installed via npm:
Testing
Tested manually with a Capacitor app configured for iOS 15.5 deployment target. The generated
Package.swiftnow correctly uses.iOS("15.5")format.