Setup: React 18.3 + Capacitor 8.3 iOS app. @revenuecat/purchases-capacitor 12.3.2, installed via Swift Package Manager (RevenueCat 5.67.1 / PurchasesHybridCommon 17.55.1). Running directly on a physical device from Xcode (iOS 26.5, Xcode 26.5) — not just TestFlight.
Problem: Purchases.configure() is called at launch and never resolves — no success, no error, ever. The subscribe button hangs on "Processing…" forever.
The key clue: I set setLogLevel(LOG_LEVEL.VERBOSE) before configure, and the RevenueCat SDK prints absolutely nothing in the Xcode console. The Capacitor bridge clearly works for other plugins — I see To Native → LocalNotifications — but there is never a To Native → Purchases line for any RevenueCat call. So calls to the Purchases plugin don't seem to reach native at all.
Already ruled out (from my actual code):
- Not a
purchases-js+purchases-capacitorclash — I only havepurchases-capacitor, imported in one file. - Not the Vue reactive-Proxy issue — I'm on React, and my hang is at
configure()(plain string arg), notpurchasePackage. - API key is the correct
appl_public key (verified baked into the built bundle).
Already tried: Clean Build Folder, Reset Package Caches, full clean rebuild + npx cap sync ios. No change.
My hypothesis: the native Purchases plugin isn't registering in my SPM build, so it's silently falling back to the web implementation, which just spins. Does that fit? What's the right way to confirm/fix native plugin registration for purchases-capacitor under SPM?
