Upwell

Installation

Add Upwell to an Expo or bare React Native app.

Requirements

React NativeA version supported by your Expo SDK (the example app uses Expo SDK 58 and React Native 0.88)
Expoexpo must be installed. Upwell is an Expo module, so it works in bare React Native apps too
iOS16.4 or later
AndroidInstalls from Google Play for the in-app update flows; other installs fall back to a store link
BuildA development build or a release build. Expo Go has no native module, so use simulation there

Install the package

Add Upwell

npx expo install upwell

Add expo-updates (optional)

If you ship OTA updates with expo-updates, install it too. Upwell uses it through upwell/expo-updates.

npx expo install expo-updates

expo-updates and expo-constants are optional peer dependencies. Without an OTA adapter, Upwell only handles store updates.

Add the config plugin (optional)

Upwell works without the config plugin. Add it to pin the Play Core version or to declare the store URL schemes:

app.json
{
  "expo": {
    "plugins": [["upwell", { "playAppUpdateVersion": "2.1.0" }]]
  }
}

See Config plugin for every option.

Rebuild the native app

Upwell adds native code, so rebuild your app after you install it:

npx expo prebuild   # only if you use Continuous Native Generation
npx expo run:android
npx expo run:ios

With EAS Build, start a new build (eas build --profile development). Because the native code changed, an OTA update can't add Upwell to builds that are already installed.

Bare React Native

In a bare React Native app, install expo first so Expo modules can be autolinked:

npx install-expo-modules@latest
npm install upwell
cd ios && pod install

There's no app.json plugin step in a bare app. To pin the Play Core version, set it in android/gradle.properties:

android/gradle.properties
upwellPlayAppUpdateVersion=2.1.0

Entry points

Upwell is one package with subpath exports, so you only load what you import:

ImportWhat it contains
upwellThe core engine (decide, explain, validators), createUpwell, sources, the native platform, simulation
upwell/reactUpwellProvider, useAppUpdate, useUpdateHistory, useUpwell, useUpwellState
upwell/expo-updatesexpoUpdatesAdapter()
upwell/uiThe UI kit and theming
upwell/schemas/*JSON Schemas for policy.json and releases.json
upwell/app.plugin.jsThe Expo config plugin

Next: Quick start.

On this page