Skip to content
Back to skills

Integrate Revenuecat Rn Android

ASecurity

Integrate RevenueCat 8.x SDK in Expo Android with Play Billing 7+. Use when the user says 'integrate revenuecat android', 'rc android setup', 'play billing rn'.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 4, 2026
developmentgobashreactapi

Works with

  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add khadinakbarlabs/expo-mobile-app-builder --skill integrate-revenuecat-rn-android --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Integrate Revenuecat Rn Android?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Integrate Revenuecat Rn Android
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/khadinakbarlabs-integrate-revenuecat-rn-android/badge)](https://www.skillsdirectory.com/skills/khadinakbarlabs-integrate-revenuecat-rn-android)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "integrate-revenuecat-rn-android"
description: "Integrate RevenueCat 8.x SDK in Expo Android with Play Billing 7+. Use when the user says 'integrate revenuecat android', 'rc android setup', 'play billing rn'."
---

# Integrate RevenueCat (Android)

RC wraps Google Play Billing. Mostly same as iOS version.

## Install
```bash
pnpm add react-native-purchases
```

## Configure

```tsx
import Purchases, { LOG_LEVEL } from 'react-native-purchases';

Purchases.setLogLevel(__DEV__ ? LOG_LEVEL.DEBUG : LOG_LEVEL.WARN);

Purchases.configure({ apiKey: 'goog_YOUR_RC_API_KEY' });

// On login:
await Purchases.logIn(user.id);
// On logout:
await Purchases.logOut();
```

## Fetch offerings + show paywall

```tsx
const offerings = await Purchases.getOfferings();
const current = offerings.current;

// Display packages
current.availablePackages.forEach(pkg => {
  console.log(pkg.product.priceString); // localized "$9.99"
});

// Purchase
try {
  const { customerInfo } = await Purchases.purchasePackage(pkg);
  if (customerInfo.entitlements.active.pro) {
    // grant access
  }
} catch (e) {
  if (e.userCancelled) return;
  throw e;
}
```

## Restore

```tsx
const { customerInfo } = await Purchases.restorePurchases();
```

## Check entitlement on app open

```tsx
const info = await Purchases.getCustomerInfo();
const hasPro = info.entitlements.active.pro !== undefined;
```

## Android-specific gotchas

- Play Billing Library 8 mandatory since Aug 2025
- RC 8.x handles PBL 8 — make sure on RC 8.0+
- For one-time products, use `oneTimePurchaseOfferDetailsList` (PBL 8 requirement)
- Test in sandbox via license testers (`test-paywall-play-billing`)
- "DEVELOPER_ERROR" usually means SHA-1 mismatch in Play vs your build

## Edge cases

- User on Play Family plan: `customerInfo` shows entitlement from family sharing
- User refunded by Google: RTDN fires `SUBSCRIPTION_REVOKED` → RC auto-revokes entitlement
- Grace period: user still has access for ~3 days after card fail
- Account hold: longer grace (16 days default in 2025)

## Pair with
- `set-up-revenuecat-dashboard-android`
- `revenuecat-paywall-builder-android`
- `app-store-server-notifications-android`

Files in this skill

  • SKILL.md2.1 KB
  • agents/openai.yaml224 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…