Skip to main content

3.4.10 - Onside Integration

· 3 min read
Hyo
Expo IAP Maintainer

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 useIAP hooks and IAP methods work as-is.
  • Easy Setup: The Expo config plugin handles all native configuration.

Requirements

  1. Register your app at developer.onside.io.
  2. iOS 16.0+ is required.
  3. 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-apple to 1.3.15
  • Removed unused SubscriptionProductReplacementParamsAndroid import
  • Switched to bunx for test:plugin script

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.