3.4.10 - Onside Integration
Expo IAP 3.4.10 introduces Onside integration for iOS, enabling alternative payment processing for apps distributed through the Onside marketplace. This is especially relevant for apps in the European Union (DMA).
Alternative Marketplace
The EU's Digital Markets Act (DMA) requires Apple to allow alternative app marketplaces on iOS. Starting with iOS 17.4, users in the EU can install apps from third-party marketplaces outside the App Store. This opens the door for developers to use alternative payment systems with lower commission rates.
Expo IAP now supports this through the Alternative Marketplace category, starting with Onside as the first integration.
Onside Integration
Onside is an alternative app marketplace for iOS available in the EU. With this release, expo-iap can automatically detect whether your app was installed from Onside and route all IAP calls through the Onside payment module instead of Apple StoreKit — with zero code changes to your existing purchase logic.
Key Features
- Auto-Switch: The library detects the installation source at runtime and selects the correct payment module (Onside or Apple StoreKit).
- Unified API: Your existing
useIAPhooks and IAP methods work as-is. - Easy Setup: The Expo config plugin handles all native configuration.
Requirements
- Register your app at developer.onside.io.
- iOS 16.0+ is required.
- The Onside Store must be installed on the user's device.
Quick Start
Step 1 — Enable in app.json
{
"expo": {
"plugins": [
["expo-iap", { "modules": { "onside": true } }]
]
}
}
Step 2 — Initialize before IAP usage
The Onside check must complete before any useIAP call. The simplest approach is the useOnside hook:
import { useOnside } from 'expo-iap';
export default function App() {
const { isOnsideLoading } = useOnside();
if (isOnsideLoading) return <SplashScreen />;
return <MainApp />;
}
Or use the imperative function if you prefer:
import { checkInstallationFromOnside } from 'expo-iap';
// Call early in app startup, before any useIAP usage
await checkInstallationFromOnside();
Step 3 — Use useIAP as always
No changes needed — your existing purchase logic works with both Apple and Onside.
For the full guide, see Onside Integration.
Other Changes
- Updated
openiap-appleto 1.3.15 - Removed unused
SubscriptionProductReplacementParamsAndroidimport - Switched to
bunxfortest:pluginscript
Installation
bun add expo-iap@3.4.10
# or
npm install expo-iap@3.4.10
# or
yarn add expo-iap@3.4.10
References
Questions or feedback? Reach out via GitHub issues.
