Get help with your SDK implementation.
Recently active
I am experiencing a layout discrepancy between the RevenueCat Paywall Editor preview and the actual rendering on iOS devices. (I’m using Flutter.) Image 1: Preview from the RevenueCat Paywall Edit Page.Image 2: A screenshot from the iOS Simulator (The same issue occurs on a physical iPhone 14). As shown in the second image, the height of each membership package card is significantly enlarged compared to the preview. And the badge on the last membership package is being cut off.What could be causing this issue specifically on iOS? Image 1 (RevenueCat Paywall Edit Page.)Image2 (A screenshot from the iOS Simulator)=======================================================================Giving a fixed height to the container made it look disproportionately large on iOS. I resolved this by removing the fixed height and using internal padding instead. And The badge issue has been fixed by applying a margin value to the container.
Hey everyone 👋We’ve been experimenting with exit offers and rewrote our paywall presentation flow on iOS. We moved from embedding PaywallView to using presentPaywallIfNeeded.However, we encountered a couple of questions about exit offers during testing. No client-side signal when an exit offer is shownThere’s no local callback or hook in the SwiftUI presenter API that tells us when an exit offer is displayed or which offering is shown.We can see this in RevenueCat debug logs, but we found no way of observing it. Since we track conversions and funnels via Mixpanel, this makes it hard to understand:Whether an exit offer was shown Whether a conversion came from the main paywall or the exit offer Exit offers always show on dismissExit offers appear every time the user dismisses the paywall. Many users open the paywall, quickly close it, and continue using the app.If the exit offer always shows immediately on the first close, it feels like two paywalls back-to-back, defeating the purpose o
I need to get the purchase data with RC_Transaction_ID on server, because I have to process the data and return the state to client before waiting webhook to arrive. I have searched the documentation and all the forums, and it seems like there is no easy way to do it. why? Current v2 api:I can get the purchases on customer, but it returns all purchases, and I have to match the one with transaction id, also if there is too much data, we have to paginate on server! I guess I can get it with two separate calls, but why? slow and will hit the genereous rate limit of 480 requests per minute. So please RC, can you help us?
Hi there,I am new to using RevenueCat with Capacitor and I'm encountering an issue during initialization. I attempted to configure RevenueCat using Purchases.configure within my application code, but the process returns an error code of -1. Could you please advise on what might be causing this issue and how I can resolve it?Thank you for your assistance!
I'm using custom fonts in my iOS app. They're provided via a Design System Swift Package and registered programmatically using `CTFontManagerRegisterFontsForURL`: private static func registerFonts() { guard let fontURLs = Bundle.module.urls(forResourcesWithExtension: "ttf", subdirectory: nil) else { return } for url in fontURLs { var error: Unmanaged<CFError>? let success = CTFontManagerRegisterFontsForURL( url as CFURL, .process, &error ) // ... error handling }}The fonts are registered at app launch before Revenue Cat Paywall is displayed. However, when the Paywall tries to use these fonts, the SDK appears to not detect that they're already registered and attempts to download them from the Revenue Cat CDN, resulting in this error:GSFont: "NewSpiritTRIAL-Bold" already exists.ERROR: 😿‼️ Error installing font with url: 'https://fonts.pawwalls.com/1356886_2e523ecc_084cd089f3d2e468f0b8.ttf': Font re
Hello! Could I please get some guidance on a code change for my app to address a crash that appears to be tied to some code from a RevenueCat sample project? I have a shortcut that launches my iOS app and then navigates to a View. I realized that there is a crash scenario. If I initially run the shortcut from the Shortcuts app when the app wasn’t running it correctly launches the app and navigates to the View. However, if I then go back to the Shortcuts app and run the shortcut again the system correctly switches to the app but then the app crashes. To investigate I ran the app in debug mode and was quite surprised to see where it was crashing. It was inside of my tip jar, which I haven’t changed the core logic for since I first developed my app in 2023. I used the Magic Weather SwiftUI sample project as a basis for the consumable, in-app purchases in my tip jar. Here’s the code that was causing the issue:// from RC Magic Weather exampleextension NSError: LocalizedError { public var e
Looking into the REST API v1 and v2 and what the web sdk does, I’ve noticed that https://api.revenuecat.com/rcbilling/v1/subscribers/<user_id>/products?id=<product_id> is kind of what we need. Is it safe to use? I don’t see any documentation around.Thanks!
We use AppsFlyer for attribution and RevenueCat for subscriptions. I am referring to this article: We currently call Purchases.collectDeviceIdentifiers(); again after the user has given ATT consent.What is not clear to me though: Do we have to collect IDFA consent before signup and before showing the paywall / any purchase happening? Or does that not matter?Thanks
I get the error 'SubscriptionPeriod' is ambiguous for type lookup in this context. during a ReactNative iOS build in DraftBit since version 9.7 of react-native-purchases. I reverted to 9.6.15 and the error disappeared. The error appeared in this line:static func rc_normalized(subscriptionPeriod: SubscriptionPeriod) -> StringIs there something I can do to fix this?
I’ve been getting warnings about an old unused offering which does not let me delete.How can I get rid of these warnings?The sometimes hang the simulator / emulator tests ( not on real device ).I can not seem to delete this offering even though they are deleted from the app store.If I can delete it from the app store, revenuecat should let me delete it as well. Am I wrong?What am I missing?
I understand RevenueCat doesn’t support Windows and Linux for Flutter for now. I’m new to RevenueCat, so I want to know whether there are any workarounds to allow users pay when they are using Windows or Linux. For example, directing to web? If it’s possible, how?
Good Evening, I have been working with Revenue cat’s flutter SDK, this is my code: var configuration = PurchasesConfiguration('goog_**********');configuration.entitlementVerificationMode = EntitlementVerificationMode.informational;await Purchases.configure(configuration); After configuring the SDK, I think it fetches the products automatically which I don’t want. I have only one product (infinity) which is a non-consumable product. However what I see in logs:I/[Purchases] - INFO( 3470): ℹ️ Missing productDetails: UnfetchedProduct{productId='infinity', productType='subs', statusCode=3}I/[Purchases] - INFO( 3470): ℹ️ Product not found: infinity - Product Type: subs, Reason: PRODUCT_NOT_FOUND, Serialized doc ID: I dont have any subscription product, yet it fetches a subs type product and could not find it.What is the solution for this error? Or am I making some mistakes.
Anyone know’s how to resolve this? SDK is not ready?
App is getting crash on application onCreate : Caused by java.lang.IllegalStateException: PaywallActivity was not launched through the SDK. Please use the SDK methods to open the Paywall. This might happen on some Google automated testing, but shouldn't happen to users. at com.revenuecat.purchases.ui.revenuecatui.activity.PaywallActivity.onCreate(PaywallActivity.kt:105) at android.app.Activity.performCreate(Activity.java:7994) at android.app.Activity.performCreate(Activity.java:7978) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1548) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3406) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3607) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.
SDK version: 9.15.1androidMinSdkVersion = 29androidCompileSdkVersion = 35androidTargetSdkVersion = 35We are facing nullpointer crash in FontLoader. Fatal Exception: java.lang.NullPointerException: at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81) at com.revenuecat.purchases.paywalls.FontLoader.getCacheDirectory(FontLoader.kt:36) at com.revenuecat.purchases.paywalls.FontLoader.ensureFoldersExist(FontLoader.kt:163) at com.revenuecat.purchases.paywalls.FontLoader.access$getContext$p(FontLoader.kt) at com.revenuecat.purchases.paywalls.FontLoader.access$ensureFoldersExist(FontLoader.kt) at com.revenuecat.purchases.paywalls.FontLoader$startFontDownload$1.invokeSuspend(FontLoader.kt:76) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104) at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.java:111) at kotlinx.c
Hello,I have a working subscription system with revenuecat for a jazz education app. I wanted to be able sell individual lessons. I heard from many customer that they would want individual lesson purchases that is unlocked for life. I have 42 lessons in the app now and I plan to add more. It will be around 150-180 lessons total. So, What is the best practice here? Do I need to create 150 SKUs ?I have 6 categories and that number will be 10 categories soon.Every lesson in each category will have the same price. However, I will need to track who bought which lesson? So could I somehow have 10 categorical prices to simplify things down and still track 150 lessons with it? Thanks..
Our paywall on iOS works perfectly fine right now. It fetches the products/offerings and displays the paywall UI.However on Android we are only showing the offerings and not the paywall UI. Was curious if anyone knows the solution/problem?We are running RC:react-native-purchases - 9.7.0react-native-purchases-ui - 9.7.0expo: ^54.0.19We are displaying the paywall via: <RevenueCatUI.Paywall>
I current offer subscriptions through the App Store, Google Play, RC Web Billing, and Stripe directly.I’m investigating implementing the Customer Center and see that it fully supports managing App Store & Play Store subscriptions and promo offers for win backs but it’s not clear to me if it supports management of subs from RC Web Billing and Stripe.My specific questions are:If a customer has a RC Web Billing sub: Can they cancel/manage it from the Customer Center? Do they still have to re-auth from the email magic link? Can I configure win back promo offers? If a customer has a subscription through Stripe directly, can they manage it from the Customer Center, ideally by linking to the Stripe Customer Portal? I’m fine without promo offers on Stripe but it is important that my existing Stripe subscribers can continue to manage their subscription directly from my app, via the RC Customer Center.Thanks!
In my flutter app on Android, paywall is not showing for one user, with endless loading. I have not received any other reports on this problem. The user is detected as from Russia, which might be an issue, but Google seems to support that for subscriptions, at least there is a price. I don’t see any exceptions (there is an analytics event supposed to be thrown if revenue cat paywall fails), so I guess it is just freezing forever SDK version 9.8.0video:https://drive.google.com/file/d/1v5rkR5kP6tsm22T4iCYIN3SbAdHzpScA/view?usp=sharing
We can honour entitlements that were purchased on other platforms by calling login(appUserId).What if someone purchases a package on ios, then logs out of the app, then creates a new appUserId.Wouldn’t this create a scenario where multiple appUserId’s have an entitlement from a single purchase?
We want to use the remote paywalls in our app and as there is no problem with iOS we encountered layout issues on bigger screens (e.g. iPad).Is there a way to define a safe area for the paywall? We’re not presenting it as a sheet since we need to embed in the parent view that swaps the views based on the state.If it’s not possible to have a safe area defined the only way of doing so is to change the sizes to fit and set paddings so that the view is hugging the actual size?What we’d like to achieve looks something like this what was mentioned in this post:
Hello RevenueCat Support Team,We are integrating RevenueCat Web SDK (@revenuecat/purchases-js) with Stripe Checkout for our web subscription flow.We are passing customerEmail during purchase, like this: await Purchases.configure(WEB_BILLING_PUBLIC_API_KEY, appUserId); await Purchases.getSharedInstance().purchase({ rcPackage: selectedPackage, customerEmail: subscriptionData?.email, }); Expected behavior: Email field should be hidden or pre-filled for all users (since we already pass customerEmail). Current behavior: For most users, the email field is hidden / pre-filled, which is correct. For some users (e.g., kavita@flunzy.ai, kruti@flunzy.ai), the email field still appears on the subscription screen. We understand that Stripe Checkout controls whether the email field is displayed in some cases, such as existing customer state or session differences.Questions / Request: Can you confirm whether this behavior is expected and controlled by Stripe Checkout? Is there any supported way t
Im extremely stuck on submitting my app to the app store.I tried to submit my app to the app store - but it got rejected based on the paywall screen erroring.Im using a custom screen. I have a few questions.Do I have to submit the app and the subscriptions together?Surely this leads to a catch 22 - where the paywall screen will not ever serve the subscriptions since they are still in review…Ive been waiting for my subscriptions to get reviewed now for like 4 days - I’m wondering if i need to submit the whole APP again for review - to get them to review the whole app again and therefore review the subscriptions (?).If I use my prod revenue cat key - i get a similar error appearing…@app/mobile:dev: WARN [RevenueCat] ⚠️ RevenueCat SDK is configured correctly, but contains some issues you might want to address@app/mobile:dev: @app/mobile:dev: Warnings:@app/mobile:dev: • Your products are configured in RevenueCat but aren't approved in App Store Connect yet. This prevents users from mak
I’ve seen these two threads: and And the blog post announcing the availability of paywall support for (non-flutter) web sdk here: https://www.revenuecat.com/blog/company/paywalls-on-the-web/ It would be very helpful to know if you have specific plans to add paywalls for web to the flutter SDK, and if so what the timeline might look like, so I can figure out whether I need to roll my own ahead of time or wait for a supported version.
Is it possible to log in users anonymously?Currently we are facing an issue. We user Firebase in our apps and in order to send notifications we need to store push tokens in our database. So, we sign in users anonymously to Firebase, and then we can store this info under their user ID.The problem arises when we then call Revenuecat’s login function. We do this so that if a user contact’s us we can match them between Firebase ID abd Revenuecat.However, the problem arises in that now Revenuecat treats the user as signed in. So, same user trying to access the app on two devices will not be able to do so, as the purchase is constantly transferred from one user to the other.Hence a question - is there a way to provide anonymous alias? So that we can search users by their firebase id, but tell Revenuecat “this one is not signed in, so apply anonymous behavior to purchases transfers”.Alternatively, this could be sorted by allowing us to search customer by their user properties. We could set “F
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.