Conversation
Product.SubscriptionInfo.PricingTerms (and the related BillingPlanType /
billing-plan purchase option) ship in the iOS 26.5 SDK, not 26.4. The
runtime availability checks gated them at 26.4, which compiles against an
SDK that annotates the symbols at 26.4 but errors against the 26.5 SDK
("only available in iOS 26.5 or newer"). Bump the @available and
#available floors to 26.5 (gating higher than the floor is always safe)
and update the doc comments to match.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This reverts commit 688cb7a. Apple's SDK header declares `Product.SubscriptionInfo.pricingTerms` (and thus the `PricingTerms` type it returns) as `@available(iOS 26.4, ...)`, not 26.5 — the earlier "26.5-only" claim was incorrect. The original 26.4 gate was right; gating at 26.5 would have wrongly denied billing plans to 26.4 devices. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PricingTerms / BillingPlanType / the billing-plan purchase option ship in the Xcode 26.5 SDK (Swift 6.3.2). Xcode 26.4 (Swift 6.3) backdates their runtime availability to iOS 26.4 but doesn't include the symbols, so the `#if compiler(>=6.3)` gate let the code compile against the 26.4 SDK and failed with "'PricingTerms' is not a member type of 'Product.Subscription Info'". Tighten all three billing-plan gates to compiler(>=6.3.2) so the blocks are excluded on 26.4 toolchains and compiled on 26.5+. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — patch release 4.16.1 promoting develop → master, centered on a single compiler-directive fix plus version bumps.
- Correct the billing-plan SDK gate — the Apple billing-plan StoreKit symbols (
Product.SubscriptionInfo.PricingTerms/BillingPlanType/Product.PurchaseOption.billingPlanType(_:)) first ship in the Xcode 26.5 SDK (Swift 6.3.2), not Xcode 26.4 (Swift 6.3). The three#if compiler(>=6.3)gates wrapping those symbols (SK2StoreProduct.swift:46,:243,ProductPurchaserSK2.swift:104) now use>=6.3.2, so the SDK compiles on Xcode 26.4 (block excluded) and 26.5+ (block compiled). The unchanged@available(iOS 26.4, …)runtime gates remain correct. - Extend version-reporting cascade —
SwiftVersion.swiftcurrentCompilerVersion()now recognizes6.4/6.3.3/6.3.2, with correct newest→oldest#elseifordering. Analytics string only. - Version bumps —
Constants.swiftsdkVersion,SuperwallKit.podspecs.version, and a newCHANGELOG.mdentry all advance to4.16.1.
The fix is mechanically consistent: every gate wrapping a 26.4-only StoreKit symbol moved to >=6.3.2, while Superwall's own AppStoreProduct.BillingPlanType (a plain Int-backed enum) correctly stays ungated. All three version-bearing files agree on 4.16.1. The change is compile-time gating only, so runtime behavior is unaffected. Two non-blocking nits below.
ℹ️ Nitpicks
ProductPurchaserSK2.swift:104— the removed comment block explained the billing-plan fallback (older runtime / no configured plan → Apple's default plan). Minor context loss; the parallel feature comment inSK2StoreProduct.swiftstill documents the mechanism, so this is fine.CHANGELOG.md:9— "builds in Xcode version 26.4" is accurate but understates the fix; the directive change is what keeps the 26.5-only symbols out of the 26.4 build. Consider noting it gates Xcode 26.5 SDK symbols.
Claude Opus | 𝕏
[codex] Clarify OneSignal user ID attribute
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.

Changes in this pull request
Promotes
develop→masterfor the 4.16.1 patch release.Fixes
PricingTerms/BillingPlanType/ the billing-plan purchase option). Those symbols ship in the Xcode 26.5 SDK (Swift 6.3.2); the previous#if compiler(>=6.3)gate let the code compile against the Xcode 26.4 SDK — which backdates their runtime availability to iOS 26.4 but doesn't include the symbols — and failed with'PricingTerms' is not a member type of 'Product.SubscriptionInfo'. The gates are now#if compiler(>=6.3.2), so the SDK builds on Xcode 26.4 (block excluded) and 26.5+ (block compiled).Checklist
CHANGELOG.mdfor any breaking changes, enhancements, or bug fixes.swiftlintin the main directory and fixed any issues.🤖 Generated with Claude Code
Greptile Summary
This PR prepares the 4.16.1 patch release. The main changes are:
Confidence Score: 5/5
This looks safe to merge.
Important Files Changed
Reviews (1): Last reviewed commit: "Update version" | Re-trigger Greptile
Context used: