Packages
pnpm add @piparotech/subkit-core@^0.1.11 @piparotech/subkit-expo@^0.1.12Install the matching core contract explicitly. The Expo SDK imports its runtime schemas from that host-provided package and will not auto-install a second unpublished copy.
Peer dependencies
The SDK declares these peers — your app provides them:
| Peer | Why |
|---|---|
expo |
Expo runtime |
expo-iap |
Native store adapter (StoreKit / Play Billing) |
react (>= 18) |
Hooks (useSubKitAccess, useSubKitHasAccess, useSubKitIapAutoSync) |
react-native |
AppState, Platform defaults |
@react-native-async-storage/async-storage ships as a regular dependency and
backs the default durable purchase queue and customer-info cache.
npx expo install expo-iapNative prerequisites
expo-iap contains native code, so purchases do not work in Expo Go:
- Use a development build (
npx expo run:ios/npx expo run:android) or EAS Build. - iOS: in-app purchase capability on the app ID; products configured in App Store Connect; a sandbox tester account for testing.
- Android: app published to a testing track in Play Console with billing permission; license testers for testing.
The SDK loads expo-iap lazily — importing @piparotech/subkit-expo in a
test or web environment does not immediately require the native module. The
native module is needed the first time a store operation runs.
Optional: MMKV instead of AsyncStorage
If your app uses react-native-mmkv, you can back the purchase queue with it
instead of AsyncStorage — see
Advanced configuration.
Next
- Configuration — set up keys and options.