RNForge
In-App Updates

Installation

Add the package, Nitro peer dependency, and native requirements.

Install the package

npm install @rnforge/react-native-in-app-updates react-native-nitro-modules

Rebuild the app

This package includes native code. After installing it, rebuild the native app for the platform you use.

Android

Rebuild the Android app from Android Studio or your React Native CLI workflow.

iOS

Install pods, then rebuild the iOS app from Xcode or your React Native CLI workflow.

cd ios && pod install

Expo

Expo Go cannot load this package because it includes native code. Use a development build.

npx expo prebuild

Then build and run the development app with your Expo workflow.

Requirements

The package is built with Nitro and requires:

AreaRequirement
React NativeVersion supported by react-native-nitro-modules
Native bridgereact-native-nitro-modules
AndroidcompileSdkVersion 34+, NDK 27+, Google Play Services
iOSXcode 16.4+, Swift 5.9+

Platform Setup

Android

No JavaScript setup is required after installation. The native module uses Google Play Core for real in-app update flows.

Real update flows require the app to be:

  • installed from Google Play, not sideloaded or installed from a debug build
  • signed with the same certificate as the Play track build
  • running on a device with Google Play Services available
  • built without legacy APK expansion (.obb) files

If those requirements are not met, APIs return typed unsupported results instead of pretending an update can run.

iOS

No additional setup is required. iOS does not support Google Play-style immediate or flexible in-app updates, so update-flow APIs return typed unsupported results.

Use openStorePage({ ios: { appStoreId } }) to send users to the App Store.

Verify Installation

After installing, call the API once to confirm the native module loads:

import { getUpdateStatus } from '@rnforge/react-native-in-app-updates';

const status = await getUpdateStatus();

console.log(status.platform);
console.log(status.supported);
console.log(status.reason);

On iOS without an App Store ID, supported is false and reason is missing-app-store-id. On Android debug or sideload installs, supported is usually false with unsupported-install-source. See Troubleshooting if the status does not match what you expect.

On this page