Skip to content

[Billing Plans]: Handle promotional offers for products with billing plans#6846

Merged
fire-at-will merged 12 commits into
billing-plans-devfrom
promo-offer-eligibility
May 28, 2026
Merged

[Billing Plans]: Handle promotional offers for products with billing plans#6846
fire-at-will merged 12 commits into
billing-plans-devfrom
promo-offer-eligibility

Conversation

@fire-at-will

@fire-at-will fire-at-will commented May 26, 2026

Copy link
Copy Markdown
Contributor

Description

Adds support for properly returning promotional offers for products with billing plans.

This is currently slated to merge into the intro-offer-eligibility branch, but we'll switch it to merge into billing-plans-dev when intro-offer-eligibility is merged into the dev branch.

Testing

Manually tested with the purchase tester app


Note

Medium Risk
Changes which promotional discounts are surfaced for billing-plan SK2 products, affecting offer eligibility and purchase metadata, though older OS/compiler paths keep prior behavior.

Overview
StoreKit 2 promotional offers for products with billing plans now come from the pricing term that matches installmentsInfo.billingPlanType, using that term’s promotional subscriptionOffers instead of the subscription-wide promotionalOffers list.

On iOS 26.4+ (with compiler ≥ 6.3.2), SK2StoreProduct.discounts applies that path when installments/billing-plan context is present; otherwise behavior is unchanged via a shared promotionalOffersOnSubscriptionInfo helper (same mapping as before).

Reviewed by Cursor Bugbot for commit 711977c. Bugbot is set up for automated code reviews on this repo. Configure here.

@fire-at-will fire-at-will requested a review from a team as a code owner May 26, 2026 21:50
@fire-at-will fire-at-will added the pr:feat A new feature label May 26, 2026
@emerge-tools

emerge-tools Bot commented May 26, 2026

Copy link
Copy Markdown

4 builds increased size

Name Version Download Change Install Change Approval
RevenueCat
com.revenuecat.PaywallsTester
1.0 (1) 18.0 MB ⬆️ 34.2 kB (0.19%) 64.8 MB ⬆️ 116.5 kB (0.18%) N/A
BinarySizeTest
com.revenuecat.binary-size-test.local-source
1.0 (1) 4.1 MB ⬆️ 16.3 kB (0.4%) 12.4 MB ⬆️ 33.6 kB (0.27%) ⏳ Needs approval
BinarySizeTest
com.revenuecat.binary-size-test.cocoapods
1.0 (1) 6.2 MB ⬆️ 20.7 kB (0.33%) 27.3 MB ⬆️ 66.9 kB (0.25%) ⏳ Needs approval
BinarySizeTest
com.revenuecat.binary-size-test.spm
1.0 (1) 4.2 MB ⬆️ 16.0 kB (0.38%) 10.8 MB ⬆️ 34.1 kB (0.32%) ⏳ Needs approval

RevenueCat 1.0 (1)
com.revenuecat.PaywallsTester

⚖️ Compare build
⏱️ Analyze build performance

Total install size change: ⬆️ 116.5 kB (0.18%)
Total download size change: ⬆️ 34.2 kB (0.19%)

Largest size changes

Item Install Size Change
DYLD.String Table ⬆️ 37.0 kB
📝 RCInstallmentsInfo.Objc Metadata ⬆️ 8.8 kB
DYLD.Exports ⬆️ 3.8 kB
RevenueCat.ProductsManager.ProductsManager ⬆️ 3.7 kB
Code Signature ⬆️ 3.2 kB
View Treemap

Image of diff

BinarySizeTest 1.0 (1)
com.revenuecat.binary-size-test.local-source

⚖️ Compare build
📦 Install build
⏱️ Analyze build performance

Total install size change: ⬆️ 33.6 kB (0.27%)
Total download size change: ⬆️ 16.3 kB (0.4%)

Largest size changes

Item Install Size Change
📝 RCInstallmentsInfo.Objc Metadata ⬆️ 2.1 kB
DYLD.Exports ⬆️ 1.8 kB
DYLD.String Table ⬆️ 1.4 kB
📝 RevenueCat.TestStoreProduct.init(localizedTitle,price,currencyCod... ⬆️ 1.2 kB
🗑 RevenueCat.TestStoreProduct.init(localizedTitle,price,currencyCod... ⬇️ -1.2 kB
View Treemap

Image of diff

BinarySizeTest 1.0 (1)
com.revenuecat.binary-size-test.cocoapods

⚖️ Compare build
📦 Install build
⏱️ Analyze build performance

Total install size change: ⬆️ 66.9 kB (0.25%)
Total download size change: ⬆️ 20.7 kB (0.33%)

Largest size changes

Item Install Size Change
DYLD.String Table ⬆️ 20.3 kB
📝 RCInstallmentsInfo.Objc Metadata ⬆️ 2.1 kB
DYLD.Exports ⬆️ 1.7 kB
Code Signature ⬆️ 1.7 kB
📝 RevenueCat.TestStoreProduct.init(localizedTitle,price,currencyCod... ⬆️ 1.2 kB
View Treemap

Image of diff

BinarySizeTest 1.0 (1)
com.revenuecat.binary-size-test.spm

⚖️ Compare build
📦 Install build
⏱️ Analyze build performance

Total install size change: ⬆️ 34.1 kB (0.32%)
Total download size change: ⬆️ 16.0 kB (0.38%)

Largest size changes

Item Install Size Change
📝 RCInstallmentsInfo.Objc Metadata ⬆️ 2.1 kB
DYLD.Exports ⬆️ 1.8 kB
Code Signature ⬆️ 1.2 kB
📝 RevenueCat.TestStoreProduct.init(localizedTitle,price,currencyCod... ⬆️ 1.2 kB
🗑 RevenueCat.TestStoreProduct.init(localizedTitle,price,currencyCod... ⬇️ -1.2 kB
View Treemap

Image of diff


🛸 Powered by Emerge Tools

Comment trigger: Size diff threshold of 100.00kB exceeded

@fire-at-will fire-at-will changed the title return promo offers for billing plan [Billing Plans]: Handle promotional offers for products with billing plans May 26, 2026

@JZDesign JZDesign left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this testable?

Base automatically changed from intro-offer-eligibility to billing-plans-dev May 27, 2026 15:14
@fire-at-will fire-at-will merged commit bbfa727 into billing-plans-dev May 28, 2026
42 of 43 checks passed
@fire-at-will fire-at-will deleted the promo-offer-eligibility branch May 28, 2026 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:feat A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants