Get help with your SDK implementation.
Recently active
Hi there,I have an Expo 53 / react-native-purchases / react-native-purchases-ui 9.2.0 app which uses RC’s V2 paywalls in production, and I’m getting occassional Sentry reports about crashes on Android:IllegalArgumentException: Software rendering doesn't support hardware bitmaps at android.graphics.BaseCanvas.throwIfHwBitmapInSwMode(BaseCanvas.java:732) at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:82) at android.graphics.BaseCanvas.drawBitmap(BaseCanvas.java:140) at android.graphics.Canvas.drawBitmap(Canvas.java:1664) at u0.G.o(SourceFile:109)...(95 additional frame(s) were not displayed)This seems to happen when my V2 Paywall is triggered (I navigate to a react-navigation screen which uses RC’s `<RevenueCatUI.Paywall />` to display the V2 Paywall. Reports are most common on Pixel 6 / Pixel 7 devices running Android 15+ although I have a few reports on Samsung devices too. I haven’t been able to reproduce on my physical Pixel 7 test device, but S
In my paywall, certain things don’t update with package selection. I am using the React Native SDK and Expo. In the paywall, the user is able to select between either a monthly or yearly subscription period by tapping either of the correlating boxes. The selected box is checked, and the border is set to a width of 2, while the unselected product’s border width is set to 1. On Android: The border width does not change on selection, but the checkmark does.On iOS: Both the border and checkmark work properly.On both: There is a text field saying “Auto-renews for {{ product.price_per_period }} until canceled”, but the variable does not switch to reflect the monthly price, it’s always set to the annual price. Is there something specific I’m supposed to do to make it function correctly?
When I use {{ product.offer_period_with_unit }}, the paywall displays correctly in the bottom button, but the top button displays “1 year”, using the same variable. This is testing with TestFlight on iOS.
Hello Revenuecatters:we are having an issue with Paywall layout, making the paywall not usable from a customer experience standpoint, after updating to Android API 35. Does anyone else have this issue? The issue is that the padding of the paywall is pushed down making the pay button below the fold on the screen and therefore the user cannot press on it.
Hi!We have integrated Revenuecat with AppsFlyer for running ads on Apple Search Ads and Meta. The Apple Search Ads integrated is working, but we have some issue with getting attribution to work for Meta.We are doing these calls: await Purchases.collectDeviceIdentifiers() await Purchases.enableAdServicesAttributionTokenCollection()... if (appsFlyerConversionData) { await Purchases.setMediaSource( appsFlyerConversionData.data.media_source, ) }However, it seems that ‘enableAdServicesAttributionTokenCollection’ is only relevant for Apple. How do you collect similar data for Meta?
Hello,I’im displaying my paywall with a passed offering but when the user first opens the paywall the image is displayed late, which makes the paywall appear a bit cheap. Is there any way to “preload” the paywall? theres already so much caching anyways happening :DThanks a lot
When a user starts a subscription, I can see it under:allPurchasedProductIdentifiers: [“com.xyz.weekly”]Which is perfect.However, after they cancel subscription, I still see “com.xyz.weekly” under allPurchasedProductIdentifierI don’t use entitlements and offerings, so I can’t check active entitlements field.Is there solution to this?
Hello, I have been exploring with the new paywalls from revenue cat , and i encounter what i assume is a bug. I am using react-native and have for both purchases and purchases-ui the latest version 9.2.2. When rendering most of the predefined package stacks , i get a warn: 'Could not determine price format because price string is incompatible.'. In the revenue cat preview everything looks great but on the actual device , the offerings are wrong, some text is missing entirely in the prices section. This is how the package looks on the preview: And in the actual app: On all of them it looks like the package selection is not working. Am i missing something in the configuration? Any help is more then welcomed.
Hi!I am trying to integrate RevenueCat into my Expo project, but I keep getting the following error: ERROR [RevenueCat] 🍎‼️ Error fetching offerings - The operation couldn’t be completed. (RevenueCat.OfferingsManager.Error error 1.)There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). I double checked all configuration in both RevenueCat dashboard and App Store Connect:The product ids are matching. Paid Applications Agreement and tax forms are signed. App Store Connect subscriptions are in Ready to Submit state. In-app purchase key configuration is set up. I am testing the app in the iOS 18.6 simulator with the local dev build I run with “npx expo run:ios”.I’d appreciate any help with this because I am out of ideas what goes wrong.
I'm running into an edge case with RevenueCat when handling purchases via a Web Purchase Link after a user's subscription has expired. ProblemWhen a user makes a first-time purchase via a web purchase link, the customer info updates correctly and addCustomerInfoUpdateListener fires as expected.However, if the user’s subscription has previously expired, and they make a new purchase via web checkout, the customer info: Does not show the new active subscription Does not trigger addCustomerInfoUpdateListener This causes the app to remain in a non-subscribed state. What I’m already doing After the user completes the web checkout and returns to the app, I: Call Purchases.invalidateCustomerInfoCache() Then call Purchases.getCustomerInfo() I’ve verified that the purchase does go through successfully, since in the RevenueCat Dashboard I can see both the expired entitlement and the new active entitlement.EnvironmentTesting in a Sandbox environment where monthly subscriptions renew eve
Hi,We are currently experiencing a bug where customers are unable to proceed after completing a purchase. The RevenueCat webhook is being triggered, and the payment is successfully processed, but nothing happens on the frontend. It seems that the event is not firing as expected, which is causing significant issues for our users.Here is our implementation: <RevenueCatUI.Paywall onPurchaseCompleted={({ storeTransaction }) => { try { track('free_trial_premium_button', { partnerGroup }); AppEventsLogger.logEvent(AppEventsLogger.AppEvents.Subscribe, { [AppEventsLogger.AppEventParams.Description]: 'Purchase completed', [AppEventsLogger.AppEventParams.Currency]: 'EUR', [AppEventsLogger.AppEventParams.ContentID]: storeTransaction.productIdentifier, [AppEventsLogger.AppEventParams.NumItems]: '1', }); router.replace(finalLoading); } catch (e
I am building this app https://testflight.apple.com/join/G1a2Gdxx but apple keep rejecting it They are replying with pretty much same thing again and again where as subscription are not approve they are not able to test. And revenuecat forum show the subcription needs to be approved first before it to work. Looks like chiken and egg problem. Tried with sanbox account but still loader is playing infinitely but now apple has rejected the susbcription itself. Can some one please help PS: everything seems work with Storekit configuartion while running from xcode I see multiple people in stackoverflow and apple forums are facing same thinghttps://developer.apple.com/forums/thread/793924https://stackoverflow.com/questions/62252571/app-using-revenuecat-got-rejected-in-review?utm_source=chatgpt.com
According to the docs, the only way to cancel through Web purchases is via Dashboard > User > Cancel flow. This is manual. I’d like to create a programatic way to do this. Does the `@revenuecat/purchases-js` allow for this? I don’t see anything obvious.
Hi everyone,I’m using @revenuecat/purchases-capacitor-ui with the RC Paywall Editor to show my subscription screen:const { result } = await RevenueCatUI.presentPaywall();Purchases work fine, the promise resolves.However, when the user taps Restore Purchases button inside the paywall: The restore actually happens (I see the RevenueCat webhook fire, and the user’s entitlements update in Purchases.addCustomerInfoUpdateListener). But the paywall stays open because presentPaywall() never returns, it’s “stuck” waiting. Questions: Is this expected behavior for presentPaywall() after restore in the Paywall Editor? (I also tried presentPaywallIfNeeded({ ... }), but observed the same behavior.) Is there a way to programmatically detect that restore finished so I can navigate away? (I coudn’t find a dismiss method in the Capacitor sdk) Setup:Capacitor 7.1.0 @revenuecat/purchases-capacitor 11.1.1 @revenuecat/purchases-capacitor-ui 11.1.1 iOS + AndroidThanks!
Hi team, I’ve been facing a persistentissue with the sandbox environment, for more than a week now. I was able to purchase subscriptions initially but all of a sudden they stopped working. I always get the Unable to process your request. Please try again later. Environment: Sandbox error.Now initially i though it was a me problem, thinking maybe the code changes broke something. But then I googled a lot, asked chatGPT for the solution. Tried everything but to absolutely no avail.This is the error I get in the terminal ERROR [RevenueCat] 🍎‼️ There was a problem with the App Store. ERROR [RevenueCat] 💰 Product purchase for 'unferturfer899_1w_3d0_7d299' failed with error: PurchasesError(error: There was a problem with the App Store., userInfo: ["NSUnderlyingError": StoreKit.StoreKitError.unknown, "readable_error_code": "STORE_PROBLEM", "source_function": "asPurchasesError", "NSLocalizedDescription": "There was a problem with the App Store.", "source_file": "RevenueCat/StoreKitError+Ex
If I setup my paywall (v2) for english only it works.As soon as I add another language (in my case japanese and thai), I get this errors causing the fallback paywall to be shown:2025-08-14 12:49:01.707 18237-18237 [Purchases] xxx E Missing string localization for property with id: 'Z_ph1YtWAp', for locale: 'en_US'.2025-08-14 12:49:01.707 18237-18237 [Purchases] xxx E Missing string localization for property with id: 'TM_G22_izX', for locale: 'en_US'.I tried to export the resources as csv and add those 2 ids manually and re-import, but it says they aren’t present.
Hi everyone,We recently started using RevenueCat with React (non-native) and are relying on the JS library.We’re not using RevenueCat Web Subscriptions, since we’d prefer not to be locked into their billing system. Instead, we’re just using the library to check customer subscriptions and retrieve entitlements.One thing we noticed is that the JS library is huge - about 671 KB.A few questions came up internally: Is there any way to reduce the bundle size? Maybe a “lite” or “compact” version of the library? Can we safely use the RC REST API directly from the frontend and skip the JS lib? Is it possible to listen to customer info changes same as in RN? From what we understand, RC Web Billing forces you into their billing system for web. Why is this restriction so aggressive? Is there really no way to fetch offerings and use Stripe directly without all the extra complexity? This has sparked a lot of discussion in our team about whether to keep using RC at all, since the lock-in feels
We were running into an issue during migration to 9.2.0 where we needed to call Purchases.getProducts([product.id]) before calling Purchases.purchaseStoreProduct(storeProduct).Previously we were calling Purchases.purchaseProduct(product.identifier), so we thought it would be an easy transition. But we kept getting an empty array from getProducts().Finally, we realized that RevenueCat product.identifier is NOT the product id (at least not any more for Google Play). Instead, RevenueCat’s product.identifier is a concatenation of product.id:base_plan in Google Play.RevenueCat does display the actual Google Play product id, but it’s called both “Subscription Id” and “Product Group” in the console. And neither of those attributes are part of the StoreProduct attributes in the SDK.We could parse the existing product.identifier, but that seems like a hack. Does anyone have a suggestion for how to get the actual Google Play product id programmatically via the Flutter SDK? The thing that Revenu
Hi everyone, After upgrading my project to SDK 53 (React Native 0.79.5, React 19), I’m seeing this error when opening the RevenueCat Paywall or triggering the Google Sign-In flow in iOS:[UIKitCore] View doesn't recognize its superview as a UIView. This can happen through use of CALayer API on the view layers instead of UIView API on the views.view: <UITextField ... >superview: <UIWindow ...>Issue:When I close the RevenueCat Paywall, the app’s screen becomes frozen — the UI is visible but completely unresponsive to taps or gestures. I have to kill and relaunch the app to continue. The same freeze can happen after closing the Google Sign-In sheet.What I’ve tried so far: Set "newArchEnabled": false in app.config.js → issue persists. Clean rebuild (npx expo prebuild --clean, pod install). Updated @react-native-google-signin/google-signin to latest v15. Using react-native-purchases and react-native-purchases-ui v9.2.0. Environment: Expo SDK 53 (expo@~53.0.0) React Native
Hello team, I recently added a localisation to my Paywall (greek) and immediately broke my Paywall, reverting it to the default one. I checked the logs on Android and I can see:Missing string localization for property with id: 'PTDmqcpjN9', for locale: 'en_US'.Displaying default template due to validation errors.I have checked similar issues - I exported the localisations as CSV and checked: PTDmqcpjN9 is not present in the list of strings.How can I locate which string is missing?
I'm using revenuecat's built in paywalls - when testing the payments on my device via a sandbox account, when trying to purchase products with an introductory offer (1st week free), I'm getting an error (sharing screenshots for reference).This is not happening for products without any intro offers or non-renewal subs. Thanks in advance!App error alert after trying to purchase sub product with intro offerXCode console log error
Hi RevenueCat team & community,Our app integrates the RevenueCat SDK, and our normal flow is: User purchases successfully via the app. RevenueCat sends a webhook to our backend. Our backend upgrades the user to Pro access. However, recently this stopped working — even when the purchase is successful, NO webhook is sent to our server. We have verified: No changes to the app’s SDK version. No changes to the webhook URL or backend configuration. Purchases are going through (confirmed in RevenueCat dashboard and App Store/Google Play console). This issue is critical because users are paying but not getting Pro access, which makes our app look like a scam to them.We urgently need help to: Understand why the webhook is no longer firing. Identify if there’s an outage, delay, or known bug affecting webhook delivery. Learn if there are recent changes in RevenueCat SDK or webhook infrastructure that might cause this. Has anyone else experienced the same issue recently? Any immedi
This is a follow up question or problem to this one: After investigating further, I came to the conclusion that something is not right with the connected Stripe accounts in RevenueCat dashboard (or I am missing something).So I am trying to connect both the Sandbox and the Live Stripe accounts to RC, in order to be able to test subscriptions first. In the RevenueCat “Account Settings” under General there is only the sandbox account being shown. If I then under “Apps & providers” try adding a Stripe web config, I can only choose the live Stripe account (so I have this set up for the live account), but there is no sandbox account so I could make two web configs. In Stripe dashboard, it seems like both are connected.This is probably why there is a “The receipt is not valid” error when trying to send the RC token.Could you point me in the right direction, what am I doing wrong here?Thank you.
Hey! I saw two discussion posts about Web Billing support of upgrades/downgrades from a few months ago (here and here), and I just figured I’d check to see if there’s any update. Thank you so much!
I’m using the RevenueCat KMP SDK and have a weekly subscription that includes an introductory offer.I want to display both the regular price and the introductory offer price in my UI.How can I retrieve both prices using the SDK?
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.