Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    rawveg

    revenuecat

    rawveg/revenuecat
    Business
    15
    6 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Comprehensive assistance with RevenueCat in-app subscriptions and purchases

    SKILL.md

    RevenueCat Skill

    Expert assistance for implementing in-app subscriptions and purchases using RevenueCat across iOS, Android, Flutter, React Native, and web platforms.

    When to Use This Skill

    This skill should be triggered when:

    • SDK Setup: Initializing RevenueCat SDK in iOS, Android, Flutter, or React Native apps
    • Subscription Implementation: Adding subscription or in-app purchase functionality
    • Entitlement Checks: Verifying user access to premium features or content
    • Purchase Flow: Implementing buy buttons, handling transactions, or processing purchases
    • Restore Purchases: Adding restore functionality for users switching devices
    • Offerings/Products: Fetching and displaying subscription options or product catalogs
    • Paywall Design: Building or configuring paywalls and purchase screens
    • Customer Info: Retrieving subscription status or customer data
    • Debugging Purchases: Troubleshooting subscription issues or transaction failures
    • REST API Integration: Server-side subscription validation or webhook handling

    Quick Reference

    SDK Configuration

    Swift (iOS)

    import RevenueCat
    
    Purchases.logLevel = .debug
    Purchases.configure(withAPIKey: "your_public_api_key", appUserID: "user_123")
    

    Kotlin (Android)

    Purchases.logLevel = LogLevel.DEBUG
    Purchases.configure(PurchasesConfiguration.Builder(this, "your_public_api_key").build())
    

    Flutter

    await Purchases.setLogLevel(LogLevel.debug);
    PurchasesConfiguration configuration = PurchasesConfiguration("your_public_api_key");
    await Purchases.configure(configuration);
    

    React Native

    Purchases.setLogLevel(Purchases.LOG_LEVEL.DEBUG);
    Purchases.configure({ apiKey: "your_public_api_key" });
    

    Checking Entitlements

    Swift

    let customerInfo = try await Purchases.shared.customerInfo()
    if customerInfo.entitlements["pro"]?.isActive == true {
        // User has premium access
    }
    

    Kotlin

    Purchases.sharedInstance.getCustomerInfoWith(
        onSuccess = { customerInfo ->
            if (customerInfo.entitlements["pro"]?.isActive == true) {
                // User has premium access
            }
        }
    )
    

    React Native

    const customerInfo = await Purchases.getCustomerInfo();
    if (customerInfo.entitlements.active["pro"] !== undefined) {
        // User has premium access
    }
    

    Fetching Offerings

    Swift

    Purchases.shared.getOfferings { (offerings, error) in
        if let packages = offerings?.current?.availablePackages {
            self.display(packages)
        }
    }
    

    Kotlin

    Purchases.sharedInstance.getOfferingsWith({ error -> }) { offerings ->
        offerings.current?.availablePackages?.let { packages ->
            // Display packages
        }
    }
    

    Making a Purchase

    Swift

    Purchases.shared.purchase(package: package) { (transaction, customerInfo, error, userCancelled) in
        if customerInfo.entitlements["pro"]?.isActive == true {
            // Unlock premium content
        }
    }
    

    Kotlin

    Purchases.sharedInstance.purchase(
        packageToPurchase = aPackage,
        onError = { error, userCancelled -> },
        onSuccess = { storeTransaction, customerInfo ->
            if (customerInfo.entitlements["pro"]?.isActive == true) {
                // Unlock premium content
            }
        }
    )
    

    Restoring Purchases

    Swift

    Purchases.shared.restorePurchases { customerInfo, error in
        // Check customerInfo to see if entitlement is now active
    }
    

    Kotlin

    Purchases.sharedInstance.restorePurchases(
        onError = { error -> },
        onSuccess = { customerInfo ->
            // Check customerInfo to see if entitlement is now active
        }
    )
    

    REST API - Get Customer Info

    curl --request GET \
      --url https://api.revenuecat.com/v1/subscribers/app_user_id \
      --header 'Authorization: Bearer PUBLIC_API_KEY'
    

    Key Concepts

    Entitlements

    A level of access, features, or content that a user is "entitled" to. Most apps use a single entitlement (e.g., "pro"). Created in the RevenueCat dashboard and linked to products. When a product is purchased, its associated entitlements become active.

    Offerings

    The set of products available to a user. Configured remotely in the dashboard, allowing you to change available products without app updates. Access via offerings.current for the default offering.

    Packages

    Containers for products within an offering. Include convenience accessors like .monthly, .annual, .lifetime. Each package contains a storeProduct with pricing details.

    CustomerInfo

    The central object containing all subscription and purchase data for a user. Retrieved via getCustomerInfo() or returned after purchases. Contains the entitlements dictionary for access checks.

    App User ID

    Unique identifier for each user. Can be provided during configuration or auto-generated as an anonymous ID. Used to sync purchases across devices.

    Reference Files

    This skill includes comprehensive documentation in references/:

    • other.md - General RevenueCat documentation and overview

    For detailed implementation patterns beyond the quick reference, consult the official documentation at https://www.revenuecat.com/docs/

    Working with This Skill

    For Beginners

    1. Start by configuring the SDK in your app's initialization code
    2. Create entitlements and offerings in the RevenueCat dashboard
    3. Implement a simple entitlement check before showing premium content
    4. Add a purchase button using purchase(package:)
    5. Include a "Restore Purchases" button for App Store compliance

    For Intermediate Users

    • Implement dynamic paywalls by fetching offerings and displaying packages
    • Handle multiple entitlements for tiered access levels
    • Set up customer info listeners for real-time subscription updates
    • Use the REST API for server-side validation

    For Advanced Users

    • Configure webhooks for server-side event handling
    • Implement A/B testing with different offerings
    • Set up integrations with analytics and attribution platforms
    • Handle edge cases like grace periods and billing retry

    Common Patterns

    Paywall Display Logic

    // Show paywall only if user doesn't have active subscription
    if customerInfo.entitlements["pro"]?.isActive != true {
        showPaywall()
    }
    

    Conditional Offerings

    if user.isPaidDownload {
        packages = offerings?.offering(identifier: "paid_download_offer")?.availablePackages
    } else {
        packages = offerings?.current?.availablePackages
    }
    

    Important Notes

    • Always initialize the SDK early in your app's lifecycle
    • Use debug logging during development (Purchases.logLevel = .debug)
    • The SDK automatically finishes/acknowledges transactions
    • Only call restorePurchases from user interaction (like a button tap)
    • Use public API keys from Project Settings; never expose secret keys
    • Test Store allows development testing without real charges

    Resources

    Official Documentation

    • Getting Started: https://www.revenuecat.com/docs/getting-started/quickstart
    • SDK Reference: https://www.revenuecat.com/docs/
    • REST API: https://docs.revenuecat.com/reference

    references/

    Organized documentation extracted from official sources with detailed explanations and code examples.

    scripts/

    Add helper scripts here for common automation tasks.

    assets/

    Add templates, boilerplate, or example projects here.

    Recommended Servers
    Stripe
    Stripe
    OneSignal
    OneSignal
    InstantDB
    InstantDB
    Repository
    rawveg/skillsforge-marketplace
    Files