diff --git a/.version b/.version
index 6fcafa4d06..45c0821ace 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-4.26.0-SNAPSHOT
+4.25.5
diff --git a/CHANGELOG.latest.md b/CHANGELOG.latest.md
index c135d5784a..c4cbcd6115 100644
--- a/CHANGELOG.latest.md
+++ b/CHANGELOG.latest.md
@@ -1,9 +1,19 @@
-_This release is compatible with Xcode 15 beta 6 and visionOS beta 3_
-
### Bugfixes
-* `Xcode 15`: fix non-`visionOS` build by replacing `.custom` platform (#3005) via NachoSoto (@NachoSoto)
+* `PurchasesOrchestrator`: fixed callback not invoked regression during downgrades (#3028) via NachoSoto (@NachoSoto)
+* `TransactionPoster`: don't finish transactions for non-subscriptions if they're not processed (#2841) via NachoSoto (@NachoSoto)
+### Performance Improvements
+* `StoreKit 2`: only listen to `StoreKit.Transaction.updates` when SK2 is enabled (#3032) via NachoSoto (@NachoSoto)
+* `CustomerInfoManager`: post transactions in parallel to POST receipts only once (#2954) via NachoSoto (@NachoSoto)
### Other Changes
-* `Integration Tests`: test for `SignatureVerificationMode.informational` and receipt posting when fetching `CustomerInfo` (#3000) via NachoSoto (@NachoSoto)
-* `Custom Entitlement Computation`: fixed `visionOS` build (#2999) via NachoSoto (@NachoSoto)
-* `HTTPClient`: extracted `HTTPRequestPath` protocol (#2986) via NachoSoto (@NachoSoto)
-* `CI`: add `visionOS` build (#2990) via NachoSoto (@NachoSoto)
+* `PostedTransactionCache`: remove implementation (#3030) via NachoSoto (@NachoSoto)
+* `Integration Tests`: improved `testCanPurchaseMultipleSubscriptions` (#3025) via NachoSoto (@NachoSoto)
+* `GitHub`: improved `ISSUE_TEMPLATE` (#3022) via NachoSoto (@NachoSoto)
+* `TransactionPoster`: added transaction ID and Date to log (#3026) via NachoSoto (@NachoSoto)
+* `TransactionPoster`: fix iOS 12 test (#3018) via NachoSoto (@NachoSoto)
+* `SystemInfo`: added `ClockType` (#3014) via NachoSoto (@NachoSoto)
+* `Integration Tests`: begin tests with `UIApplication.willEnterForegroundNotification` to simulate a real app (#3015) via NachoSoto (@NachoSoto)
+* `Integration Tests`: add tests to verify `CustomerInfo`+`Offerings` request de-dupping (#3013) via NachoSoto (@NachoSoto)
+* `SwiftLint`: disable `unneeded_synthesized_initializer` (#3010) via NachoSoto (@NachoSoto)
+* Added `internal` `NonSubscriptionTransaction.storeTransactionIdentifier` (#3009) via NachoSoto (@NachoSoto)
+* `Integration Tests`: added tests for non-renewing and non-consumable packages (#3008) via NachoSoto (@NachoSoto)
+* Expanded `EnsureNonEmptyArrayDecodable` to `EnsureNonEmptyCollectionDecodable` (#3002) via NachoSoto (@NachoSoto)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ec1b476fe5..831f0e9c72 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,24 @@
+## 4.25.5
+### Bugfixes
+* `PurchasesOrchestrator`: fixed callback not invoked regression during downgrades (#3028) via NachoSoto (@NachoSoto)
+* `TransactionPoster`: don't finish transactions for non-subscriptions if they're not processed (#2841) via NachoSoto (@NachoSoto)
+### Performance Improvements
+* `StoreKit 2`: only listen to `StoreKit.Transaction.updates` when SK2 is enabled (#3032) via NachoSoto (@NachoSoto)
+* `CustomerInfoManager`: post transactions in parallel to POST receipts only once (#2954) via NachoSoto (@NachoSoto)
+### Other Changes
+* `PostedTransactionCache`: remove implementation (#3030) via NachoSoto (@NachoSoto)
+* `Integration Tests`: improved `testCanPurchaseMultipleSubscriptions` (#3025) via NachoSoto (@NachoSoto)
+* `GitHub`: improved `ISSUE_TEMPLATE` (#3022) via NachoSoto (@NachoSoto)
+* `TransactionPoster`: added transaction ID and Date to log (#3026) via NachoSoto (@NachoSoto)
+* `TransactionPoster`: fix iOS 12 test (#3018) via NachoSoto (@NachoSoto)
+* `SystemInfo`: added `ClockType` (#3014) via NachoSoto (@NachoSoto)
+* `Integration Tests`: begin tests with `UIApplication.willEnterForegroundNotification` to simulate a real app (#3015) via NachoSoto (@NachoSoto)
+* `Integration Tests`: add tests to verify `CustomerInfo`+`Offerings` request de-dupping (#3013) via NachoSoto (@NachoSoto)
+* `SwiftLint`: disable `unneeded_synthesized_initializer` (#3010) via NachoSoto (@NachoSoto)
+* Added `internal` `NonSubscriptionTransaction.storeTransactionIdentifier` (#3009) via NachoSoto (@NachoSoto)
+* `Integration Tests`: added tests for non-renewing and non-consumable packages (#3008) via NachoSoto (@NachoSoto)
+* Expanded `EnsureNonEmptyArrayDecodable` to `EnsureNonEmptyCollectionDecodable` (#3002) via NachoSoto (@NachoSoto)
+
## 4.25.4
_This release is compatible with Xcode 15 beta 6 and visionOS beta 3_
diff --git a/RevenueCat.podspec b/RevenueCat.podspec
index ae60fb290b..07e3cc0eb4 100644
--- a/RevenueCat.podspec
+++ b/RevenueCat.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "RevenueCat"
- s.version = "4.26.0-SNAPSHOT"
+ s.version = "4.25.5"
s.summary = "Subscription and in-app-purchase backend service."
s.description = <<-DESC
diff --git a/Sources/Info.plist b/Sources/Info.plist
index fa86b78981..6cb7337e58 100644
--- a/Sources/Info.plist
+++ b/Sources/Info.plist
@@ -17,7 +17,7 @@
PurchasesReceiptParser/default
:
@@ -3151,6 +3179,13 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductType, "ProductType", open) {
@property (nonatomic, readonly, copy) NSLocale * _Nonnull priceLocale SWIFT_AVAILABILITY(macos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(watchos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(tvos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(ios,unavailable,message="Use localizedPriceString instead");
@end
+
+@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat))
+- (nonnull instancetype)initWithSk1Product:(SKProduct * _Nonnull)sk1Product;
+/// Returns the SKProduct
if this StoreProduct
represents a StoreKit.SKProduct
.
+@property (nonatomic, readonly, strong) SKProduct * _Nullable sk1Product;
+@end
+
@class NSDecimalNumber;
@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat))
@@ -3185,13 +3220,6 @@ typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductType, "ProductType", open) {
@property (nonatomic, readonly, copy) NSString * _Nullable localizedIntroductoryPriceString;
@end
-
-@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat))
-- (nonnull instancetype)initWithSk1Product:(SKProduct * _Nonnull)sk1Product;
-/// Returns the SKProduct
if this StoreProduct
represents a StoreKit.SKProduct
.
-@property (nonatomic, readonly, strong) SKProduct * _Nullable sk1Product;
-@end
-
enum RCPaymentMode : NSInteger;
enum RCDiscountType : NSInteger;
diff --git a/Tests/UnitTests/Info.plist b/Tests/UnitTests/Info.plist
index 51c6d0a506..a5f6956728 100644
--- a/Tests/UnitTests/Info.plist
+++ b/Tests/UnitTests/Info.plist
@@ -15,7 +15,7 @@