Which SDKs does RevenueDot have?
RevenueDot has an SDK for every platform: iOS and the other Apple platforms, Android, React Native and Expo, Flutter, the web, Capacitor and Ionic, Kotlin Multiplatform, Unity and Cordova. Install the one for your platform and pass your app's API key to configure. On RevenueDot Cloud nothing else is needed, because each SDK already calls https://api.revenuedot.app. All of them are released (2026-10-02).
The RevenueDot SDK is built from RevenueCat's open-source SDK (MIT license), so your code imports RevenueCat and calls Purchases. It sends every request to RevenueDot and needs no RevenueCat account.
Install the RevenueDot SDK for your platform#
| Platform | Install (versions checked 2026-10-05) | Configure on RevenueDot Cloud | Guide |
|---|---|---|---|
| iOS, macOS, tvOS, watchOS, visionOS | Swift Package Manager: https://github.com/revenuedot/purchases-ios, exact version 5.91.0-revenuedot, product RevenueCat (RevenueCatUI for paywalls). CocoaPods: pod 'RevenueDotPurchases', '5.91.0' (RevenueDotPurchasesUI for paywalls) |
Purchases.configure(withAPIKey: "appl_...") |
iOS |
| Android | Maven Central: implementation("app.revenuedot.purchases:purchases:10.23.3") (purchases-ui for paywalls) |
Purchases.configure(PurchasesConfiguration.Builder(this, "goog_...").build()) in Application.onCreate() |
Android |
| React Native and Expo | npm install react-native-purchases@npm:@revenuedot/react-native-purchases@10.10.2. The alias keeps import Purchases from "react-native-purchases". Paywalls: react-native-purchases-ui@npm:@revenuedot/react-native-purchases-ui@10.10.2 |
Purchases.configure({ apiKey: Platform.OS === "ios" ? "appl_..." : "goog_..." }), with Platform from react-native |
React Native |
| Flutter | Git dependency in pubspec.yaml: https://github.com/revenuedot/purchases-flutter.git at 10.13.2-revenuedot. The pub.dev names belong to RevenueCat |
await Purchases.configure(PurchasesConfiguration(kIsWeb ? 'test_...' : defaultTargetPlatform == TargetPlatform.iOS ? 'appl_...' : 'goog_...')), with kIsWeb and defaultTargetPlatform from package:flutter/foundation.dart |
Flutter |
| Web (purchases-js) | npm install @revenuedot/purchases-js@1.67.0 |
Purchases.configure({ apiKey: "test_...", appUserId }). Only Test Store keys buy through purchases-js today |
Web |
| Capacitor and Ionic | npm install @revenuecat/purchases-capacitor@npm:@revenuedot/purchases-capacitor@13.6.1. The alias keeps the native names |
await Purchases.configure({ apiKey: ... }) |
Capacitor |
| Kotlin Multiplatform | Maven Central: implementation("app.revenuedot.purchases:purchases-kmp-core:3.10.1") |
Purchases.configure(PurchasesConfiguration(apiKey)) |
Kotlin Multiplatform |
| Unity | OpenUPM: openupm add com.google.external-dependency-manager (the External Dependency Manager, which fetches the native libraries), then openupm add com.revenuedot.purchases-unity (9.11.1), or git tag 9.11.1-revenuedot |
API keys on the Purchases component | Unity |
| Cordova | cordova plugin add @revenuedot/cordova-plugin-purchases@8.2.3 |
Purchases.configureWith({ apiKey: ... }) |
Cordova |
The cross-platform SDKs (React Native, Flutter, Capacitor, Unity and Cordova) share a native layer, purchases-hybrid-common. The install pulls in RevenueDot's build of it (pods RevenueDotPurchasesHybridCommon, Maven app.revenuedot.purchases:purchases-hybrid-common, both 19.4.1). Apps never install it directly.
Self-hosting: also set the SDK's proxy URL to your server before configure, and set entitlement verification to disabled. Each SDK trusts RevenueDot Cloud's response-signing key, and a self-hosted server signs with its own key. The iOS, Android, Capacitor and Unity SDKs default to informational mode, so they need the setting. React Native, Flutter and Kotlin Multiplatform already default to disabled. Cordova has no setting for it, so it logs each response as a failed check and still grants access. Each guide shows the code. To verify against your own server, build the SDKs with your key. See Trusted Entitlements.
Switching from RevenueCat? Keep your SDK and change one line#
All nine RevenueCat app SDKs work with RevenueDot in proxy mode: you keep the SDK you ship, set one proxy URL before configure, and turn off signature checks. The RevenueCat SDK checks response signatures against RevenueCat's key, so every RevenueDot response reads as "verification failed" unless you turn the check off. The importer copies each app's public key into RevenueDot, so builds you already shipped keep the same appl_ or goog_ key. See Connect your app and Migrate from RevenueCat.
| SDK | Proxy mode today | How to set the proxy URL | Signature check default (RevenueCat SDK) | Guide |
|---|---|---|---|---|
| iOS, macOS, tvOS, watchOS, visionOS | Yes | Purchases.proxyURL = URL(string: "...")! |
Informational: logs a failure, still grants access. Set .disabled |
iOS |
| Android | Yes. Diagnostics, paywall events and ad events still go to RevenueCat | Purchases.proxyURL = URL("...") |
Informational. Set DISABLED |
Android |
| React Native and Expo | Yes, on iOS, Android, Expo Go and web | await Purchases.setProxyURL("...") |
Disabled | React Native |
| Flutter | Yes on iOS and Android. Not on Flutter web with RevenueCat's package | await Purchases.setProxyURL('...') |
Disabled | Flutter |
| Web (purchases-js) | Yes, with Test Store (test_) keys only |
httpConfig: { proxyURL: "..." } in configure |
No signature checks | Web |
| Capacitor and Ionic | Yes | await Purchases.setProxyURL({ url: "..." }) |
No default passed, so the native informational default applies. Pass DISABLED |
Capacitor |
| Kotlin Multiplatform | Yes | Purchases.proxyURL = "..." (a String) |
Disabled | Kotlin Multiplatform |
| Unity | Yes | The Proxy URL field on the Purchases component | Informational. Set Disabled in the Inspector | Unity |
| Cordova | Yes | Purchases.setProxyURL("...") before configureWith |
No option: logs a failure, still grants access | Cordova |
Never use ENFORCED mode with a RevenueCat SDK against RevenueDot. Every call would fail, because RevenueDot cannot sign with RevenueCat's key. After the update ships, call syncPurchases() once on its first launch, so current subscribers keep access. Each SDK guide shows the call.
The RevenueDot SDKs are RevenueCat's releases plus RevenueDot's patches#
Each RevenueDot SDK lives in github.com/revenuedot/<repo>. Releases are upstream release tags plus RevenueDot's patch commits, tagged <upstream version>-revenuedot; the branch revenuedot/main-patches follows upstream main. The patches change only these things:
- The default API host becomes
https://api.revenuedot.app, which is RevenueDot Cloud (live since 2026-09-30). Self-hosters still set the proxy URL. - The SDK trusts RevenueDot's response-signing key instead of RevenueCat's.
- Registry names change (first table above). Module and package names that your code imports stay the same, so
import RevenueCatandcom.revenuecat.purchases.*work. - Android: diagnostics, paywall events and ad events follow the proxy URL.
- purchases-js: analytics events follow
httpConfig.proxyURL, and checkout reads "Secure checkout by RevenueDot". - Flutter web:
Purchases.setProxyURLworks. - Each README gets a banner saying the SDK is maintained by RevenueDot and not affiliated with RevenueCat.
Source: prd/sdk-forks/PRD.md.
Three SDKs bought a Test Store subscription on the web, and the native builds carry RevenueDot's host and key#
- Purchases on the web (2026-10-02). purchases-js from npm, Flutter web from its git tag and
@revenuedot/react-native-purchasesfrom npm, running on the web, each bought a Test Store subscription against a RevenueDot server, and the server showsproactive. - Native builds. iOS apps built with the published pods and Swift packages (Flutter, Capacitor and Cordova) carry
api.revenuedot.appand RevenueDot's signing key, and no RevenueCat host. The Android artifacts on Maven Central and the Kotlin Multiplatform iOS library do the same. - Not run yet. The Unity package has not run in the Unity editor, and the React Native SDK's native iOS and Android builds are not verified.
- The unmodified RevenueCat iOS SDK 5.92 on an iPhone simulator and Android SDK 10.24 on an Android emulator pass configure, customer info, offerings, a Test Store purchase and
logInagainst RevenueDot (scripts/e2e). - A real App Store sandbox purchase ran end to end on a physical iPhone on 2026-10-02: Apple's purchase sheet, Apple's notification into RevenueDot, an
INITIAL_PURCHASEwebhook, access unlocked in the app. Google Play sandbox purchases have not run end to end yet; Play handling is tested against a copy of Google's API. - The React Native Expo example and the purchases-js Vite example run against RevenueDot with a Test Store key.