What is purchases-hybrid-common, and do I need to install it?
purchases-hybrid-common is the shared layer that the cross-platform SDKs (React Native, Flutter, Capacitor, Unity and Cordova) sit on. It turns their calls into calls on the native iOS and Android SDKs. You never install it yourself: your wrapper depends on it, and setting the proxy URL and verification mode in the wrapper is all you need.
What it contains#
| Part | What it does | RevenueDot fork name (planned) | Keeps the name |
|---|---|---|---|
| iOS layer | Swift bridge over the iOS SDK | pods RevenueDotPurchasesHybridCommon, RevenueDotPurchasesHybridCommonUI |
modules PurchasesHybridCommon, PurchasesHybridCommonUI |
| Android layer | Kotlin bridge over the Android SDK | Maven app.revenuedot.purchases:purchases-hybrid-common (and -ui) |
Kotlin packages |
| TypeScript types | Shared types and enums such as ENTITLEMENT_VERIFICATION_MODE |
npm @revenuedot/purchases-typescript-internal and -esm |
installed through npm aliases, so imports stay @revenuecat/... |
| Web mappings | Runs purchases-js in browser mode (Expo Go, React Native web, Flutter web) | npm @revenuedot/purchases-js-hybrid-mappings |
installed through an npm alias |
The fork is github.com/revenuedot/purchases-hybrid-common, branch revenuedot/main-patches, version 19.4.1.
Which wrappers use it#
| Wrapper | Native layer | TypeScript or web packages | Fork pin |
|---|---|---|---|
| React Native | Yes | purchases-typescript-internal, purchases-js-hybrid-mappings |
19.4.1 |
| Flutter | Yes | A copy of the web mappings for Flutter web | 19.4.1 |
| Capacitor | Yes | purchases-typescript-internal-esm |
19.4.1 |
| Unity | Yes, through EDM4U | none | 19.4.1 |
| Cordova | Yes | none | 19.4.1 |
Kotlin Multiplatform does not use it: it builds on the iOS and Android SDKs directly. The native iOS, Android and web SDKs do not use it either.
How the forks fit together#
The RevenueDot forks pin each other, so a wrapper fork gets the RevenueDot builds all the way down:
- The hybrid-common fork depends on RevenueDot's iOS fork (
RevenueDotPurchases5.91.0) and Android fork (app.revenuedot.purchases:purchases10.23.3). - The web mappings depend on RevenueDot's purchases-js fork through an npm alias.
- Every wrapper fork depends on hybrid-common 19.4.1.
That chain is why the wrapper forks cannot be used before release: nothing in it is on CocoaPods, Maven Central or npm yet (2026-09-30). Publishing runs in dependency order: iOS and Android first, then hybrid-common, then purchases-js and the web mappings, then the wrappers.
What it means for proxy mode#
- You do nothing here. The wrapper's
setProxyURLand verification option pass through hybrid-common to the native SDK. - With the stock wrappers, hybrid-common is RevenueCat's build, which trusts RevenueCat's signing key. That is why you turn verification off. See Trusted Entitlements.