Skip to main content
Version: 14.5

Installation

IapKit - In-App Purchase Validation Service

This guide will help you install and configure React Native IAP in your React Native or Expo project.

Compatibility (Nitro 14.x)

react-native-iap@14.x is Nitro-based and requires React Native 0.79+.

If you must stay on RN 0.75.x or lower, install the last pre‑Nitro version: npm i react-native-iap@13.1.0.

Hitting Swift 6 C++ interop errors in Nitro (e.g. AnyMap.swift using cppPart.pointee.*)? Pin Swift 5.10 for the NitroModules pod (see snippet below) as a temporary workaround.

Recommended path: Upgrade to RN 0.79+, update react-native-nitro-modules and nitro-codegen to latest, then pod install and do a clean build.

If you're using React Native version 0.78 or using Expo, consider using expo-iap instead (easier configuration by installing expo-modules-core first).

If issues persist after upgrading or applying the Swift pin, please share a minimal repro (fresh app + package.json + Podfile).

Prerequisites​

Before installing React Native IAP, make sure you have:

  • For react-native-iap@14.x (Nitro): React Native 0.79+ (Expo SDK aligned with RN 0.79)
  • For older RN (0.75.x or lower): use react-native-iap@13.1.0 (pre‑Nitro)
  • Node.js 16 or later
  • iOS 15+ for iOS apps (StoreKit 2 requirement)
  • Android API level 21+ for Android apps

Package Installation​

Install the package using your favorite package manager:

npm install react-native-iap react-native-nitro-modules

For React Native CLI Projects​

If you're using React Native CLI (not Expo), you need to install iOS dependencies after installing the package:

cd ios && pod install

The native modules will be automatically linked during your app's build process.

Expo Configuration​

Important for Expo Managed Workflow​

If you're using the Expo managed workflow, you must use a custom development client since in-app purchases require native modules that aren't available in Expo Go.

After installing the package, you need to:

  1. Configure expo-build-properties for Android (required for Kotlin 2.0+ support):

    Starting from version 14.0.0-rc, react-native-iap supports Google Play Billing Library v8.0.0, which requires Kotlin 2.0+. Since expo-modules-core doesn't support Kotlin 2.0 yet, you need to manually configure the Kotlin version.

    Add the following to your app.json:

    {
    "expo": {
    "plugins": [
    "react-native-iap",
    [
    "expo-build-properties",
    {
    "android": {
    "kotlinVersion": "2.1.20"
    }
    }
    ]
    ]
    }
    }
  2. Install expo-dev-client

    Since in-app purchases require native modules that aren't available in Expo Go, you need to install expo-dev-client to create a custom development client. Learn more about expo-dev-client.

    npx expo install expo-dev-client
  3. Install the plugin and run prebuild:

    npx expo prebuild --clean

    This will generate the native iOS and Android directories with the necessary configurations. Learn more about adopting prebuild.

  4. Optional: Fix iOS Folly coroutine include error

    If your iOS build fails with errors such as 'folly/coro/Coroutine.h' file not found from RCT-Folly/folly/Expected.h, you can opt‑in to a workaround that disables Folly coroutine support during CocoaPods install.

    Add this flag to the react-native-iap plugin options in your Expo config:

    {
    "expo": {
    "plugins": [
    [
    "react-native-iap",
    {
    "ios": {
    "with-folly-no-coroutines": true
    }
    }
    ]
    ]
    }
    }

    Note migration:

    • This option key was renamed from with-folly-no-couroutines to with-folly-no-coroutines. Update your Expo config accordingly. For compatibility, the plugin temporarily accepts the old key and logs a deprecation warning.

    What this does:

    • Injects FOLLY_NO_CONFIG=1, FOLLY_CFG_NO_COROUTINES=1, and FOLLY_HAS_COROUTINES=0 into the Podfile post_install block for all Pods targets, preventing RCT-Folly from including non‑vendored <folly/coro/*> headers.
    • Idempotent: skips if you already set these defines yourself.

    After enabling the flag, re-run prebuild:

    npx expo prebuild

Store Configuration​

For detailed platform-specific configuration:

Real-world examples​

For detailed platform-specific setup instructions, check out our real examples: