14.7.7 - ExternalPurchaseCustomLink API (iOS 18.1+)
react-native-iap 14.7.7 adds support for Apple's ExternalPurchaseCustomLink API (iOS 18.1+) for apps using custom external purchase links.
Apple StoreKit framework features
View All Tagsreact-native-iap 14.7.7 adds support for Apple's ExternalPurchaseCustomLink API (iOS 18.1+) for apps using custom external purchase links.

React Native IAP 14.4.12 introduces comprehensive alternative billing support for both iOS and Android platforms, empowering developers to use external payment systems alongside or instead of platform billingβunlocking reduced fees and greater monetization flexibility.

React Native IAP 14.4.12 introduces comprehensive alternative billing support for both iOS and Android, empowering developers to use external payment systems alongside or instead of App Store and Google Play billing. This enables reduced platform fees and greater flexibility in monetization strategies while maintaining compliance with platform policies.
This release adds full alternative billing functionality for both platforms:
import {
initConnection,
checkAlternativeBillingAvailabilityAndroid,
showAlternativeBillingDialogAndroid,
createAlternativeBillingTokenAndroid,
userChoiceBillingListenerAndroid,
} from 'react-native-iap';
// Initialize with alternative billing mode
await initConnection({
alternativeBillingModeAndroid: 'alternative-only', // or 'user-choice'
});
// 3-step alternative billing flow
const isAvailable = await checkAlternativeBillingAvailabilityAndroid();
const userAccepted = await showAlternativeBillingDialogAndroid();
const token = await createAlternativeBillingTokenAndroid(productId);
// User choice billing event listener
const subscription = userChoiceBillingListenerAndroid((details) => {
console.log('User selected alternative billing');
// Report to backend for Google Play compliance
});
import {
canPresentExternalPurchaseNoticeIOS,
presentExternalPurchaseNoticeSheetIOS,
presentExternalPurchaseLinkIOS,
} from 'react-native-iap';
// Check availability (iOS 18.2+)
const canPresent = await canPresentExternalPurchaseNoticeIOS();
// Present notice sheet before external link
const noticeResult = await presentExternalPurchaseNoticeSheetIOS();
if (noticeResult.result === 'continue') {
// Redirect to external purchase URL
const result = await presentExternalPurchaseLinkIOS(
'https://your-website.com/purchase',
);
}
Automatic iOS alternative billing configuration:
// app.config.ts
export default {
plugins: [
[
'react-native-iap',
{
iosAlternativeBilling: {
// Required: Countries (ISO 3166-1 alpha-2)
countries: ['kr', 'nl', 'de', 'fr'],
// Optional: External URLs per country
links: {
kr: 'https://your-site.com/kr/checkout',
nl: 'https://your-site.com/nl/checkout',
},
// Optional: Multiple URLs (iOS 17.5+, up to 5)
multiLinks: {
de: [
'https://your-site.com/de/checkout',
'https://your-site.com/de/offer',
],
},
// Optional: Custom regions (iOS 18.1+)
customLinkRegions: ['de', 'fr', 'nl'],
// Optional: Streaming regions (iOS 18.2+, music apps)
streamingLinkRegions: ['at', 'de', 'fr', 'nl'],
// Enable entitlements
enableExternalPurchaseLink: true,
enableExternalPurchaseLinkStreaming: false, // music apps only
},
},
],
],
};
The config plugin automatically adds:
com.apple.developer.storekit.external-purchase, etc.)SKExternalPurchase, SKExternalPurchaseLink, etc.)Alternative billing is fully integrated into the useIAP hook:
import {useIAP} from 'react-native-iap';
const {
checkAlternativeBillingAvailabilityAndroid,
showAlternativeBillingDialogAndroid,
createAlternativeBillingTokenAndroid,
} = useIAP({
// Android alternative billing configuration
alternativeBillingModeAndroid: 'alternative-only',
// User choice billing event handler
onUserChoiceBillingAndroid: (details) => {
console.log('User selected alternative billing');
reportToBackend(details.externalTransactionToken);
},
});
A complete alternative billing example is now included in the example app:
Run the example app and navigate to "Alternative Billing" from the home screen.
All alternative billing APIs are fully typed with TypeScript:
AlternativeBillingModeAndroid: 'none' | 'alternative-only' | 'user-choice'UserChoiceBillingDetails: Product list and external transaction tokenExternalPurchaseNoticeResultIOS: Notice sheet result with actionExternalPurchaseLinkResultIOS: External link presentation resultComprehensive documentation added:
Both platforms require special approval to use alternative billing:
npm install react-native-iap@14.4.12
# or
yarn add react-native-iap@14.4.12
# or
bun add react-native-iap@14.4.12
For Expo projects, run npx expo prebuild after updating your config plugin.
This release builds on the alternative billing implementation from expo-iap, bringing the same powerful features to React Native CLI projects.
Try out alternative billing in 14.4.12 and let us know your feedback via GitHub issues!