Community Interactions
The agent monitors GitHub issues and Reddit posts for developer questions about in-app subscriptions. When it finds a relevant question, it searches the RevenueCat docs, drafts a cited response, and logs it here.
Interactions
Restore Purchases not working in Flutter. The restoreTransactions() call doesn't seem to restore the user's previous pur...
draftgithub
Intent: answer_question
Draft Response
Troubleshooting restoreTransactions() in Flutter
Here are the most common causes and fixes:
1. Check Your Android SDK Version (Google Play)
If this is on Android, there's a known issue with Google's Billing Client 8 affecting one-time purchases for anonymous users. Upgrade to purchases-flutter using purchases-android 9.16.0+ to get the fix.
For cross-platform SDKs (React Native, Flutter, etc.), ensure you're using a version that includes purchases-android 9.16.0+.
2. Check Your Restore Behavior Setting
Your project's restore behavior may be blocking the restore. Go to your RevenueCat dashboard and check which setting is active:
-
"Keep with original App User ID" — Will return an error if the App User ID attempting to restore is different from the one that made the original purchase. Source
-
"Transfer if no active subscriptions" — May also cause unexpected behavior.
Verify the user is restoring under the same App User ID that made the purchase, or adjust the restore behavior setting.
3. Use syncPurchases for Programmatic Restores
If you're calling restoreTransactions() programmatically (not from a user-tapped button), switch to syncPurchases instead — it won't trigger OS-level sign-in prompts and is the correct approach for programmatic use. Source
4. Verify App User ID Linking
Ensure purchases are being linked to the correct App User ID. Mismatched IDs are a common cause of entitlements not appearing after restore. Source
Quick Checklist
-
[ ] Flutter SDK includes purchases-android 9.16.0+
-
[ ] Restore is triggered by user action, not programmatically
-
[ ] App User IDs match between purchase and restore
-
[ ] Restore behavior setting matches your use case
🐛 Video Playback Auto Play Not Working
draftgithub · From: diegodotta · source →
Intent: answer_question
Draft Response
Video Autoplay Not Working
Based on the available documentation, here's what I can tell you:
Minimum SDK Requirements for Video
Video support was added in these versions:
-
iOS: 5.47.0+ (video as background), 5.44.1+ (video component)
-
Android: 9.13.0+ (video as background), 8.25.0+ (video component)
-
React Native: 9.6.0+
-
Flutter: 9.10.1+
-
KMP: 2.2.3+17.11.0+
What to Check
-
SDK Version: You mentioned 5.56.1 on iOS — that meets the minimum requirement. Ensure your Android/hybrid SDK is also up to date.
-
Verify the video component is configured correctly — videos can be used either as a standalone component or as a background fill for stacks, footers, or the full paywall. Source
Recommended Next Steps
The provided documentation does not include specific details about autoplay behavior or known autoplay bugs, so I can't confirm a documented fix for this specific issue.
I recommend:
-
Check the RevenueCat Community for others reporting the same autoplay issue
-
File a bug report directly with RevenueCat support, including:
- Platform & SDK version
- Device/OS version
- Whether it fails for both background video and video component
- Whether it fails on physical device vs. simulator
The AI integration prompt in the Web SDK uses deprecated configure() API and lacks SSR guidance, doesn't distinguish bet...
draftgithub · source →
Intent: answer_question
Draft Response
Web SDK AI Integration Prompt Issues
Based on the available documentation, I can address the key concerns you've raised:
API Key Type Distinction
The documentation clearly defines two key types you should use correctly:
-
Public API keys (SDK API keys): Use these to configure the Web SDK on the client side
-
Secret API keys (prefixed
sk_): Keep server-side only — never expose in client-side code
Recommendations for Your AI Prompt
When using AI tools with the Web SDK, ensure your integration prompt specifies:
- Use public/SDK API keys for client-side SDK initialization — never
sk_prefixed keys - Secret keys belong on your server for privileged operations like granting entitlements or deleting subscribers
Gaps in Current Documentation
The provided documentation does not contain:
-
The specific
configure()API or its deprecation status -
SSR (Server-Side Rendering) guidance for the Web SDK
-
A replacement API for the deprecated
configure()call
For these specific issues, I'd recommend:
-
Checking the Web SDK changelog directly for deprecation notices
-
Opening a support ticket or GitHub issue with RevenueCat to flag the missing SSR documentation
Quick Fix for Your Prompt
Ensure any AI-generated Web SDK code:
// ✅ Use public SDK key (from dashboard)
// ❌ Never use sk_ prefixed secret keys client-side
I can't confirm the specific deprecated API replacement without documentation covering it — I'd flag this directly with RevenueCat's developer relations team.
Restore Purchases not working
draftgithub · From: enoiu · source →
Intent: answer_question
Draft Response
Restore Purchases Not Working (Flutter/Android)
This is a known issue with Google's Billing Client 8, which affects purchases-flutter 9.0.0 and up.
Root Cause
Starting with Billing Client 8, Google removed the ability to query consumed one-time purchases. This breaks restore functionality when:
- Your app doesn't have an account system (relies on anonymous users), AND
- Your app has used consumable one-time products
✅ Recommended Fix: Upgrade Your SDK
A fix is available — upgrade to purchases-flutter 9.10.2+:
| SDK | Minimum Version with Fix | |-----|--------------------------| | purchases-flutter | 9.10.2 | | purchases-android | 9.16.0 |
Additional Mitigations
-
Configure Android Backups — Back up RevenueCat's SharedPreferences file so anonymous user IDs survive reinstalls/device changes. Use Auto Backup or Key-value backups and include
RevenueCatBackupAgent.REVENUECAT_PREFS_FILE_NAME. Source -
Manual Recovery — For users who can't be recovered automatically, ask for their Order ID (starts with
GPA.....), find them in the RevenueCat dashboard, and transfer purchases to their current anonymous user ID. Source -
Stay on SDK v8 (temporary) — Major version 8 uses Billing Client 7 and avoids this issue until BC8 becomes mandatory.
Bottom line: Upgrade to purchases-flutter 9.10.2+ as the primary fix.
[Web SDK] AI integration prompt uses deprecated configure() API, lacks SSR guidance, doesn't distinguish key types
draftgithub · From: bizbuilderai · source →
Intent: answer_question
Draft Response
Based on the provided documentation, I don't have sufficient information to fully address all aspects of this issue.
The documentation provided covers:
-
Basic Web SDK installation (
@revenuecat/purchases-js) Source -
Product configuration via the RevenueCat dashboard Source
However, the provided documentation does not contain details about:
-
The current vs. deprecated
configure()API for the Web SDK -
SSR (Server-Side Rendering) guidance for the Web SDK
-
Distinctions between different API key types for the Web SDK
To properly address this GitHub issue, I'd recommend:
- Checking the Web SDK changelog/releases at the purchases-js GitHub repo to identify the deprecated
configure()API and its replacement - Reviewing the full Web SDK configuration docs at the web-sdk configuration page for current API guidance
- Filing specific asks in the issue:
- Document the current initialization API (replacing deprecated
configure()) - Add SSR guidance (e.g., Next.js, Nuxt compatibility notes)
- Clarify which API key type (public/secret) is required for Web SDK initialization
The documentation provided here doesn't give me enough detail to make specific code corrections or recommendations. I'd suggest consulting the full Web SDK docs or the purchases-js README directly for accurate, up-to-date implementation guidance.
Bug: Paywall shows previous package's price in Stripe checkout after switching selection
draftgithub · From: rafaelmaroxa · source →
Intent: answer_question
Draft Response
I don't have any documentation provided to reference for this specific bug report about Stripe checkout showing previous package prices after switching selections.
Without documentation to cite, I cannot responsibly provide a factual answer about this behavior, its cause, or any known fixes/workarounds.
I'd recommend:
- Check the RevenueCat Community – community.revenuecat.com for similar reports
- File a bug report – Contact RevenueCat support at app.revenuecat.com with:
- Steps to reproduce
- Which paywall component you're using (Billing Portal, Web Paywall, etc.)
- Whether this is a Stripe Checkout redirect issue or an embedded component
- Check RevenueCat's GitHub – Look for open issues if you're using an open-source SDK
I can only provide accurate answers based on provided documentation, and none was included here. I don't want to guess at a fix that could mislead you.
dismissRequest call before onPurchaseCompleted
draftgithub · From: duchhapero · source →
Intent: answer_question
Draft Response
I don't have enough information in the provided documentation to answer your question about dismissRequest being called before onPurchaseCompleted.
Could you provide more context about: 1. What specific behavior you're experiencing? 2. Which SDK and version you're using?
For the most accurate help, I'd recommend:
-
Filing an issue on the RevenueCat Android GitHub repository
-
Reaching out to RevenueCat Support
Missing Implementation of Code Redemption Sheet presentCodeRedemptionSheet() in purchases-kmp. The iOS method presentCod...
draftgithub
Intent: answer_question
Draft Response
presentCodeRedemptionSheet() in purchases-kmp
Good news — this functionality is implemented in purchases-kmp, but it was added in a specific version.
Availability
Offer code redemption is supported in purchases-kmp version 2.1.0+16.2.0 and up. Source
Action Items
- Check your current version against the minimum required (
2.1.0+16.2.0) - Update if needed via your
libs.versions.tomland Gradle dependency
[versions]
purchases-kmp = "2.1.0+16.2.0" # minimum required version
Important Caveats
Before implementing, be aware of known iOS issues:
Apple's in-app Offer Code redemption sheet has proven to be extremely unstable — it may not connect, may not dismiss after successful redemption, and may not accept valid codes. Sandbox and TestFlight behavior is inconsistent. Source
A recommended workaround is redirecting users to the App Store app to redeem codes instead. Source
Handling Post-Redemption
Apple provides no callback for successful redemption. To respond to a completed redemption, implement the receivedUpdated delegate/listener to observe changes in CustomerInfo — the SDK will automatically sync the transaction and refresh CustomerInfo. Source
If you're on 2.1.0+16.2.0 or later and still not seeing the method, I'd recommend opening an issue on the purchases-kmp GitHub repo directly.
Revenuecat virtual currencies -- anyone else using these? so i finally bit the bullet and used revenuecat's virtual curr...
draftIntent: answer_question
Draft Response
RevenueCat Virtual Currencies — Key Answers
Source of Truth: Two Valid Approaches
New setup? Use RevenueCat as source of truth (recommended):
-
RC tracks balances, auto-grants on purchase, validates spend operations
-
App fetches balance directly via SDK
Existing backend system? Keep your backend as source of truth:
-
RC emits
VIRTUAL_CURRENCY_TRANSACTIONwebhooks → your backend updates balances -
Your backend handles spend validation and deduction
-
App fetches from your backend, not RC
Webhooks for Spend Events — Important Gotcha
VIRTUAL_CURRENCY_TRANSACTION webhook events fire for balance adjustments tied to the subscription lifecycle.
⚠️ Critical caveat: Adjustments made via the API (deposits/spends) appear in the customer timeline but do NOT generate webhook events — they're view-only.
Security Requirements (Non-Negotiable)
- Never expose secret API keys — all balance modifications must go through your backend server
- Backend APIs must not accept raw amounts from clients — your server should know the price/reward amount independently
- Always validate eligibility before granting/spending (e.g., check the user actually reached that level, actually owns that item)
| ✅ Do | ❌ Don't | |---|---| | Backend looks up product price, charges that | Backend blindly spends whatever amount client sends | | Backend verifies reward eligibility before granting | Backend grants whatever amount is in the request |
TL;DR Gotcha Summary
-
API adjustments = no webhooks
-
Client should never pass currency amounts directly to your backend
-
If you have an existing coin system, hybrid approach (Approach 2) is cleanest
Hey guys did you ever have this error code 23 using revenue cat on iOS? Getting this error when trying to make a purchas...
draftIntent: answer_question
Draft Response
Error Code 23 in RevenueCat
Based on the provided documentation, error code 23 specifically isn't detailed in the docs I have access to. However, error code 23 corresponds to the STORE_PROBLEM error in RevenueCat, which is worth investigating.
Most Likely Cause: iOS 18 StoreKit Bug
If you're on iOS 18.0–18.3.2, there's a known Apple bug that causes purchases to fail, and RevenueCat throws a STORE_PROBLEM error when it occurs. Source
Symptoms to check in your console logs:
Product purchase for '${PRODUCT_ID}' failed with error:
systemError(Error Domain=NSCocoaErrorDomain Code=4097
"connection to service with pid ${PID} named com.apple.storekitd"
✅ Good news: When this bug occurs, no money is moved and it's an Apple-side issue, not your code. Source
Quick Things to Check
- What iOS version are you and your users on?
- Check console logs for the
NSCocoaErrorDomain Code=4097orstorekitderrors - If on iOS 18.2.x, also check for
Could not get confirmation scene IDerrors, which indicate the purchase sheet failing to appear Source
Next Step
Check the full RevenueCat error handling guide for more detail on specific error codes: RevenueCat Error Docs
Can you share which iOS version you're seeing this on?