Skip to content

hyochan/expo-iap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Expo IAP

Expo IAP Logo

Version Download CI codecov FOSSA Status

Expo IAP is a powerful in-app purchase solution for Expo and React Native applications that conforms to the Open IAP specification. It provides a unified API for handling in-app purchases across iOS and Android platforms with comprehensive error handling and modern TypeScript support.

If you're shipping an app with expo-iap, we’d love to hear about it—please share your product and feedback in Who's using Expo IAP?. Community stories help us keep improving the ecosystem.

Open IAP

📚 Documentation

📖 Visit our comprehensive documentation site →

Notice

The expo-iap module has been migrated from react-native-iap. While we initially considered fully merging everything into react-native-iap, we ultimately decided to maintain the two libraries in parallel, each tailored to its own ecosystem.

  • react-native-iap → a Nitro Modules–based implementation for React Native.
  • expo-iap → an Expo Module with tighter integration and smoother compatibility in the Expo ecosystem.

Both libraries will continue to be maintained in parallel going forward.

📖 See the Future Roadmap and Discussion for more details.
👉 Stay updated via the Current Project Status comment.

Installation

npx expo install expo-iap

Android Configuration

Important: For Android, expo-iap uses Google Play Billing Library v8.0.0 which requires Kotlin 2.0+. Since expo-modules-core doesn't support Kotlin v2 yet, you need to configure your project with expo-build-properties:

{
  "expo": {
    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "kotlinVersion": "2.1.20"
          }
        }
      ]
    ]
  }
}

If you're targeting Expo SDK 54 or newer, please confirm whether this manual override is still required and share findings with the community at github.com/hyochan/expo-iap/discussions.

Contributing

We welcome contributions! Please see our Contributing Guide for details on:

  • Development setup
  • Running the example app
  • Testing guidelines
  • Code style and conventions
  • Submitting pull requests

For detailed usage examples and error handling, see the documentation.

Sharing your thoughts—any feedback would be greatly appreciated!

Our Sponsors

💼 View Our Sponsors

We're building the OpenIAP ecosystem—defining the spec at openiap.dev, maintaining openiap-gql for the shared type system, and shipping platform SDKs like openiap-apple and openiap-google that power expo-iap, flutter_inapp_purchase, React Native, and kmp-iap. The work so far has focused on untangling fragmented APIs; the next milestone is a streamlined purchase flow: initConnection → fetchProducts → requestPurchase → (server receipt validation) → finishTransaction.

Your sponsorship helps ensure developers across platforms, OS, and frameworks can implement in-app purchases without headaches. It also fuels new plugins, payment systems, and partner integrations already being explored in the OpenIAP community. Sponsors receive shout-outs in every release and can request tailored support depending on tier. If you’re interested—or have rollout feedback to share—you can view sponsorship options at openiap.dev/sponsors.

Angel

Meta Meta

Past Supporters