RevenueCat SDK 4.0.0-beta.1 is out
Hey all, some of you might know we’ve been hard at work migrating our mixed-language Purchases.framework to Swift. Well, we did it, and we’re excited to share it with you!
For context, here were our goals of the migration:
🦶 Lowers our overall footprint for modules.
🗣️ Unifies the language used for the entire SDK.
🚤 Faster feature development, bug fixes on old logic, and integration through simplified SDK, CI, and testing infrastructure.
🐐 Improve consistency among our API calls, classes, properties, etc.
Enable us to implement StoreKit2 changes easier.
🧑🏫 Easier onboarding for new members (internal and external).
You can find a more detailed breakdown of the motivations and our actual migration plan in our SwiftMigration.md.
We haven’t added any new features (yet), but we did update our API to be more idiomatic to Swift, fixed a few tiny bugs, and improved the safety of our API through fixing various nullability mismatches.
We’re planning on adding StoreKit2 improvements before officially shipping, so stay tuned for those additions.
How can you help?
You can update to this beta and report your experience to us! We’re looking for any and all feedback, suggestions, and comments 😄
We feel really confident in our migrated SDK, but having you try it out and tell us it’s still performing how you expect it - even if everything is great, is really helpful to us.
We tried as hard as we could to retain the same API. Ironically, our ObjC interfaces are nearly exactly the same, the majority of our API changes were naming updates for Swift. There were some required changes (outlined in our API Changes doc), and the biggest being:
Renaming `Purchases` module to `RevenueCat`
How to install the beta:
We launched a new pod:
pod 'RevenueCat', '4.0.0-beta.1'
You can also use Carthage, and Swift Package Manager. For SPM, you’ll also want to point to the version `4.0.0-beta.1`
Make sure any imports of `Purchases` are switched to: `RevenueCat`.
Anticipated future updates before shipping V4:
🔍 Adding a script that will help migrate your code for changed API.
🏪 StoreKit2 support.
🧱 ObjC/Swift block naming convention: changing all references of “completionBlock” to “completion” to be more consistent.