Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5.80.0-SNAPSHOT
5.80.0
76 changes: 26 additions & 50 deletions CHANGELOG.latest.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,35 @@
## RevenueCat SDK
### ✨ New Features
* State-driven Paywalls: Tab selected-state (#7019) via Monika Mateska (@MonikaMateska)
* [EXTERNAL] feat: expose revocationDate and revocationReason on StoreTransaction via @mvanhorn (#7012) via Rick (@rickvdl)
* Expose `autoResumeDate` and `productPlanIdentifier` on `SubscriptionInfo` (#7049) via Álvaro Brey (@AlvaroBrey)
* Log reward verification failure reason (#6892) via Pol Miro (@polmiro)
* Report ad event capture method (#7020) via Pol Miro (@polmiro)

## RevenueCatUI SDK
### ✨ New Features
* Add Slovenian locale support in paywalls (#7007) via Monika Mateska (@MonikaMateska)
* Show DefaultPaywall warning view in UI preview mode (#6973) via Antonio Pallares (@ajpallares)
* Preview paywalls via deep link (#6922) via Dave DeLong (@davedelong)
### Paywallv2
#### 🐞 Bugfixes
* Use AVPlayerLayer for no-controls; fix KVO crash (#6987) via Alexander Repty (@alexrepty)
* Extract ImageRenderPlan and add unit tests (#7069) via Alexander Repty (@alexrepty)

### 🔄 Other Changes
* Update sdks-common-config orb to 3.21.2 (#7028) via Antonio Pallares (@ajpallares)
* feat(RevenueCatUI): evaluate state conditions in the override resolver (#6993) via Monika Mateska (@MonikaMateska)
* [AUTOMATIC] Update generated error codes (#7025) via RevenueCat Git Bot (@RCGitBot)
* feat(RevenueCatUI): add presentation-session PaywallStateStore (#6992) via Monika Mateska (@MonikaMateska)
* feat(paywalls): add dedicated state condition to component overrides (#6991) via Monika Mateska (@MonikaMateska)
* feat(paywalls): add decode-only stateUpdates on interactive components (#6990) via Monika Mateska (@MonikaMateska)
* feat(paywalls): decode top-level state declaration map (#6989) via Monika Mateska (@MonikaMateska)
* [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#7023) via RevenueCat Git Bot (@RCGitBot)
* Removes stale paywall template screenshots if necessary (#6984) via JayShortway (@JayShortway)
* Update backend integration tests snapshots to include Slovenian localizations (#7018) via Antonio Pallares (@ajpallares)
* feat: simulate promo offer eligibility in paywall previews (#6994) via Facundo Menzella (@facumenzella)
* chore: Add 3-day Dependabot cooldown, excluding fastlane plugin (#7013) via Toni Rico (@tonidero)
* WFL-303 | Add fallback URL for workflows (#7008) via Rosie Watson (@RosieWatson)
* fix(paywalls): skip workflow fetch for offerings with no mapped workflow (#7002) via Facundo Menzella (@facumenzella)
* Fix RevenueCatUI build on older Xcode: use legacy AVPlayerItemDidPlayToEndTime (#7003) via Alexander Repty (@alexrepty)
* Remove legacy BackendIntegrationTests targets from RevenueCat.xcodeproj (#7006) via Facundo Menzella (@facumenzella)
* Adopt scene lifecycle in UnitTestsHostApp for iOS 27 support (#6980) via Will Taylor (@fire-at-will)
* Update baseline swiftinterface files for `main` (#7004) via RevenueCat Git Bot (@RCGitBot)
* [AUTOMATIC] Update generated error codes (#7001) via RevenueCat Git Bot (@RCGitBot)
* Fix tvOS/visionOS build: import AVFoundation in VideoPlayerViewUIView (#7000) via Alexander Repty (@alexrepty)
* Danger: block manual edits to generated error codes (#6996) via Álvaro Brey (@AlvaroBrey)
* Chore(deps): Bump fastlane-plugin-revenuecat_internal from `d911a06` to `70bf5c7` (#6999) via dependabot[bot] (@dependabot[bot])
* Add macCatalyst availability check (#6997) via Alexander Repty (@alexrepty)
* Add mise setup-worktree task for one-command worktree setup (#6983) via Facundo Menzella (@facumenzella)
* Use a snapshot-env-free macOS executor for update-error-codes (#6995) via Álvaro Brey (@AlvaroBrey)
* Use Tuist workspace for BackendIntegrationTests in CI (#6774) via Facundo Menzella (@facumenzella)
* Add update-error-codes workflow (#6981) via Álvaro Brey (@AlvaroBrey)
* [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#6986) via RevenueCat Git Bot (@RCGitBot)
* test(workflows): verify purchase/restore callbacks fire from any workflow step (#6855) via Facundo Menzella (@facumenzella)
* fix(workflows): compute intro eligibility for inherited packages on packageless workflow screens (#6978) via Facundo Menzella (@facumenzella)
* Makes `run_plugin_action_in_current_directory` resilient to missing subdirectories (#6976) via JayShortway (@JayShortway)
* Adopt generated ErrorCode (#6970) via Álvaro Brey (@AlvaroBrey)
* Chore(deps): Bump fastlane from 2.236.0 to 2.236.1 (#6975) via dependabot[bot] (@dependabot[bot])
* Add internal RulesEngine evaluate API surface (#6966) via Antonio Pallares (@ajpallares)
* Replace `RulesEngine.logger` global with task-local override + module default (#6963) via Antonio Pallares (@ajpallares)
* feat(workflows): serve stale workflow detail while revalidating (#6961) via Facundo Menzella (@facumenzella)
* [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#6964) via RevenueCat Git Bot (@RCGitBot)
* Clean up changelogs from workflows PRs (#6960) via Facundo Menzella (@facumenzella)
* feat(workflows): wire workflow step lifecycle events in PaywallViewModel (#6868) via Facundo Menzella (@facumenzella)
* Fix flaky SK1 trial eligibility network request test (#6956) via Rick (@rickvdl)
* Use the `log` operator to strengthen rules-engine fixtures (#6957) via Antonio Pallares (@ajpallares)
* Add JSON Logic `log` operator (#6945) via Antonio Pallares (@ajpallares)
* Add JSON Logic iteration operators (`none`, `map`, `filter`, `reduce`) (#6834) via Antonio Pallares (@ajpallares)
* Chore(deps): Bump fastlane from 2.235.0 to 2.236.0 (#6959) via dependabot[bot] (@dependabot[bot])
* fix(workflows): Don't leak the previous user's workflows after a login or logout (#6944) via Facundo Menzella (@facumenzella)
* fix: align RulesEngineInternal with json-logic-js (undefined & missing_some) (#7066) via Antonio Pallares (@ajpallares)
* feat(remote-config): update request and response models according to spec (#7022) via Rick (@rickvdl)
* fix(ci): install pinned xcodes prebuilt binary for visionOS support (#7065) via Antonio Pallares (@ajpallares)
* feat(workflows): add workflows_close abandonment event (#7040) via Facundo Menzella (@facumenzella)
* test(ads): add api signature test for newly exposed reward primitives (#7045) via Peter Porfy (@peterporfy)
* Model entitlement reward variant in reward verification (#7038) via Pol Miro (@polmiro)
* Chore(deps): Bump nokogiri from 1.19.3 to 1.19.4 in /Tests/InstallationTests/CocoapodsInstallation (#7063) via dependabot[bot] (@dependabot[bot])
* Chore(deps): Bump concurrent-ruby from 1.3.6 to 1.3.7 in /Tests/InstallationTests/CocoapodsInstallation (#7062) via dependabot[bot] (@dependabot[bot])
* Send `presented_workflow_id` and `presented_step_id` in post-receipt body (#7024) via Cesar de la Vega (@vegaro)
* Chore(deps): Bump nokogiri from 1.19.3 to 1.19.4 (#7061) via dependabot[bot] (@dependabot[bot])
* Chore(deps): Bump danger from 9.5.3 to 9.6.0 (#7060) via dependabot[bot] (@dependabot[bot])
* feat(remote-config): support RC Container format in network stack and use for remote-config request (#7037) via Rick (@rickvdl)
* Bump sdks-common-config orb to 4.1.0 (#7050) via Álvaro Brey (@AlvaroBrey)
* feat(remote-config): add RC Container format V1 + parser (#7030) via Rick (@rickvdl)
* Upload paywall rendering validation screenshots to Emerge in PRs (#6979) via JayShortway (@JayShortway)
* Remove unused pollRewardVerificationStatus (#7042) via Pol Miro (@polmiro)
* Add Danger check to discourage large PRs (#7041) via Toni Rico (@tonidero)
* Update baseline swiftinterface files for `main` (#7036) via RevenueCat Git Bot (@RCGitBot)
* refactor(ads): reuse SDK retry classification for poll errors (#7009) via Antonio Pallares (@ajpallares)
* Migrate update_error_codes to the outputs parameter (#7035) via Álvaro Brey (@AlvaroBrey)
* refactor(ads): move reward verification to coresdk (#6895) via Peter Porfy (@peterporfy)
37 changes: 37 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,40 @@
## 5.80.0
## RevenueCat SDK
### ✨ New Features
* Expose `autoResumeDate` and `productPlanIdentifier` on `SubscriptionInfo` (#7049) via Álvaro Brey (@AlvaroBrey)
* Log reward verification failure reason (#6892) via Pol Miro (@polmiro)
* Report ad event capture method (#7020) via Pol Miro (@polmiro)

## RevenueCatUI SDK
### ✨ New Features
* Preview paywalls via deep link (#6922) via Dave DeLong (@davedelong)
### Paywallv2
#### 🐞 Bugfixes
* Extract ImageRenderPlan and add unit tests (#7069) via Alexander Repty (@alexrepty)

### 🔄 Other Changes
* fix: align RulesEngineInternal with json-logic-js (undefined & missing_some) (#7066) via Antonio Pallares (@ajpallares)
* feat(remote-config): update request and response models according to spec (#7022) via Rick (@rickvdl)
* fix(ci): install pinned xcodes prebuilt binary for visionOS support (#7065) via Antonio Pallares (@ajpallares)
* feat(workflows): add workflows_close abandonment event (#7040) via Facundo Menzella (@facumenzella)
* test(ads): add api signature test for newly exposed reward primitives (#7045) via Peter Porfy (@peterporfy)
* Model entitlement reward variant in reward verification (#7038) via Pol Miro (@polmiro)
* Chore(deps): Bump nokogiri from 1.19.3 to 1.19.4 in /Tests/InstallationTests/CocoapodsInstallation (#7063) via dependabot[bot] (@dependabot[bot])
* Chore(deps): Bump concurrent-ruby from 1.3.6 to 1.3.7 in /Tests/InstallationTests/CocoapodsInstallation (#7062) via dependabot[bot] (@dependabot[bot])
* Send `presented_workflow_id` and `presented_step_id` in post-receipt body (#7024) via Cesar de la Vega (@vegaro)
* Chore(deps): Bump nokogiri from 1.19.3 to 1.19.4 (#7061) via dependabot[bot] (@dependabot[bot])
* Chore(deps): Bump danger from 9.5.3 to 9.6.0 (#7060) via dependabot[bot] (@dependabot[bot])
* feat(remote-config): support RC Container format in network stack and use for remote-config request (#7037) via Rick (@rickvdl)
* Bump sdks-common-config orb to 4.1.0 (#7050) via Álvaro Brey (@AlvaroBrey)
* feat(remote-config): add RC Container format V1 + parser (#7030) via Rick (@rickvdl)
* Upload paywall rendering validation screenshots to Emerge in PRs (#6979) via JayShortway (@JayShortway)
* Remove unused pollRewardVerificationStatus (#7042) via Pol Miro (@polmiro)
* Add Danger check to discourage large PRs (#7041) via Toni Rico (@tonidero)
* Update baseline swiftinterface files for `main` (#7036) via RevenueCat Git Bot (@RCGitBot)
* refactor(ads): reuse SDK retry classification for poll errors (#7009) via Antonio Pallares (@ajpallares)
* Migrate update_error_codes to the outputs parameter (#7035) via Álvaro Brey (@AlvaroBrey)
* refactor(ads): move reward verification to coresdk (#6895) via Peter Porfy (@peterporfy)

## 5.79.0
## RevenueCat SDK
### ✨ New Features
Expand Down
2 changes: 1 addition & 1 deletion Examples/SampleCat/SampleCat.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,7 @@
repositoryURL = "https://github.com/RevenueCat/purchases-ios";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 5.79.0;
minimumVersion = 5.80.0;
};
};
/* End XCRemoteSwiftPackageReference section */
Expand Down
2 changes: 1 addition & 1 deletion RevenueCat.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "RevenueCat"
s.version = "5.80.0-SNAPSHOT"
s.version = "5.80.0"
s.summary = "Subscription and in-app-purchase backend service."

s.description = <<-DESC
Expand Down
2 changes: 1 addition & 1 deletion RevenueCatUI.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "RevenueCatUI"
s.version = "5.80.0-SNAPSHOT"
s.version = "5.80.0"
s.summary = "UI library for RevenueCat paywalls."

s.description = <<-DESC
Expand Down
2 changes: 1 addition & 1 deletion Sources/Misc/SystemInfo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ class SystemInfo {
}

static var frameworkVersion: String {
return "5.80.0-SNAPSHOT"
return "5.80.0"
}

static var installationMethod: String {
Expand Down
10 changes: 8 additions & 2 deletions Tests/InstallationTests/CommonFiles/RevenueCat-Swift.h
Original file line number Diff line number Diff line change
Expand Up @@ -1130,11 +1130,11 @@ SWIFT_CLASS_NAMED("Builder")
@end

@interface RCConfigurationBuilder (SWIFT_EXTENSION(RevenueCat))
- (RCConfigurationBuilder * _Nonnull)withUsesStoreKit2IfAvailable:(BOOL)usesStoreKit2IfAvailable SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Use .with(storeKitVersion:) to enable StoreKit 2");
- (RCConfigurationBuilder * _Nonnull)withObserverMode:(BOOL)observerMode SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(macos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.");
@end

@interface RCConfigurationBuilder (SWIFT_EXTENSION(RevenueCat))
- (RCConfigurationBuilder * _Nonnull)withObserverMode:(BOOL)observerMode SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(macos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'with' has been renamed to 'withPurchasesAreCompletedBy:storeKitVersion:': Observer Mode is now named PurchasesAreCompletedBy.");
- (RCConfigurationBuilder * _Nonnull)withUsesStoreKit2IfAvailable:(BOOL)usesStoreKit2IfAvailable SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Use .with(storeKitVersion:) to enable StoreKit 2");
@end

/// Specifies the behavior for a caching API.
Expand Down Expand Up @@ -4444,6 +4444,9 @@ SWIFT_CLASS_NAMED("SubscriptionInfo")
/// Date when any grace period for this subscription expires/expired.
/// nil if the customer has never been in a grace period.
@property (nonatomic, readonly, copy) NSDate * _Nullable gracePeriodExpiresDate;
/// Date when a paused subscription is expected to automatically resume.
/// Only set for Google Play subscriptions that have been paused; nil otherwise.
@property (nonatomic, readonly, copy) NSDate * _Nullable autoResumeDate;
/// How the Customer received access to this subscription:
/// <ul>
/// <li>
Expand Down Expand Up @@ -4481,6 +4484,9 @@ SWIFT_CLASS_NAMED("SubscriptionInfo")
@property (nonatomic, readonly, strong) RCProductPaidPrice * _Nullable price;
/// Management purchase URL
@property (nonatomic, readonly, copy) NSURL * _Nullable managementURL;
/// The base plan identifier that unlocked this subscription (Google Play base plans
/// and Apple purchases with non-upfront billing plans).
@property (nonatomic, readonly, copy) NSString * _Nullable productPlanIdentifier;
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
Expand Down
2 changes: 1 addition & 1 deletion scripts/docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; url=https://revenuecat.github.io/purchases-ios-docs/5.79.0/documentation/revenuecat"/>
<meta http-equiv="refresh" content="0; url=https://revenuecat.github.io/purchases-ios-docs/5.80.0/documentation/revenuecat"/>
</head>
<body>
</body>
Expand Down
2 changes: 1 addition & 1 deletion scripts/docs/v4_api_migration_guide.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; url=https://revenuecat.github.io/purchases-ios-docs/5.80.0-SNAPSHOT/documentation/revenuecat/v4_api_migration_guide"/>
<meta http-equiv="refresh" content="0; url=https://revenuecat.github.io/purchases-ios-docs/5.80.0/documentation/revenuecat/v4_api_migration_guide"/>
</head>
<body>
</body>
Expand Down
2 changes: 1 addition & 1 deletion scripts/docs/v5_api_migration_guide.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; url=https://revenuecat.github.io/purchases-ios-docs/5.80.0-SNAPSHOT/documentation/revenuecat/v5_api_migration_guide"/>
<meta http-equiv="refresh" content="0; url=https://revenuecat.github.io/purchases-ios-docs/5.80.0/documentation/revenuecat/v5_api_migration_guide"/>
</head>
<body>
</body>
Expand Down