Index of every page on this site: llms.txt
All skills
tristanmanchester avatar

/expo-revenuecat-superwall-integration

@3323bc9
Run it yourself

Integrate or repair RevenueCat and Superwall together in an Expo React Native app. Use for their shared purchase ownership, Android offer selection, billing identity, entitlement sync, restore, or migration flows; not for web billing or unrelated paywall providers.

Use this Skill: https://skilld.dev/gh/tristanmanchester/agent-skills/expo-revenuecat-superwall-integration

Nothing lands on disk. Nothing to clean up.

Fork this Skill

Edit a local copy. It keeps the author and licence.

referencesandroid-base-plans-offers-and-pending.md

≈767 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Android product, base-plan, and offer identity

A displayed offer is part of the purchase the user selected. Never substitute another option merely because the requested one is unavailable.

Exact selection

Fetch the requested subscription with RevenueCat's PRODUCT_CATEGORY.SUBSCRIPTION, inspect its subscriptionOptions, and match both the subscription's productId and the option's id. A base-plan option uses the base plan ID; an offer uses basePlanId:offerId. Require exactly one match. An empty explicit offer, an offer without a base plan, a different product, or multiple matches is an error.

Call Purchases.purchaseSubscriptionOption(option) with that exact object. Do not probe for old API names or fall back to purchaseStoreProduct, defaultOption, or the first array entry. Refresh the paywall and let the user choose again when availability or eligibility changed. A deliberately default-selected product is a separate product contract; it does not authorise fallback from an explicit selection.

examples/custom-purchase-controller.android-offers.tsx and the pure selectPlayOption helper implement this rule. The helper has executable cases for exact base/offer selection, missing offers, wrong products, empty identifiers, and ambiguous matches.

Outcomes and fulfilment

Use RevenueCat's typed cancellation and payment-pending codes, not message regexes. Return Superwall's explicit cancelled, pending, failed, or purchased result. Returning void can count as a conversion under the controller contract, so do not silently fall through.

A completed purchase and an active feature entitlement are different facts. Report a completed charge as purchased, then check the specific entitlement before running the feature. An inactive entitlement after payment requires reconciliation of product mappings, identity, delayed delivery, and provider state; do not mark the store payment failed or retry it automatically. A pending purchase grants no access until entitlement evidence arrives.

Integration checks

Verify product/base-plan/offer IDs in both dashboards and the actual store response. Check displayed price/trial against the selected option; exercise ineligible and withdrawn offers. Test pending completion after restart, cancelled purchase, account changes, restore, and delayed entitlement publication.

This example covers a direct subscription purchase, not replacement/proration of an existing subscription, personalised-pricing disclosures, promotional offers, or alternative stores. Add those supported current API arguments when required, and test their store-specific semantics rather than guessing.

Sources reviewed 2026-09-13: RevenueCat purchase API, SubscriptionOption contract, Superwall controller results.

Source: SKILL.md on GitHub

skilld matched fixed text patterns in SKILL.md and file names. Patterns miss obfuscated code.

skilld run checks every file with the same patterns. It asks for approval before it loads a Skill with a behavior marked Needs approval.

No alerts1mo4 checks · Risk SAFE
  • Gen Agent Trust Hub1mo

    The expo-revenuecat-superwall-integration skill is a professional integration guide for React Native Expo applications. It provides structured architectural choices, implementation playbooks, and a local validation script to ensure a secure and production-ready monetisation stack. The skill adheres to security best practices, such as using public API keys and avoiding PII for identifiers, and contains no malicious code or exfiltration patterns.

  • Socket1mo

    No alerts

  • Snyk1mo

    Risk: LOW · No issues

  • ZeroLeaks6mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 3323bc9. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 weeks ago.

Steadyupdated last month
metadata
{
  "version": "3.0.0",
  "reviewed": "2026-09-13"
}
Other metadata
compatibility
Expo development builds on iOS/Android, expo-superwall's current provider API, and react-native-purchases 9.7 or newer. Resolve native platform requirements from the installed Expo and SDK versions. Offline checks need Python 3.10+, Node.js, and TypeScript.

README badge

README badge for tristanmanchester/agent-skills/expo-revenuecat-superwall-integration