HotupdaterHot Updater
Start here

Set up manually

Install packages, provision your update server, connect the app and verify your first OTA update.

Complete the setup

This path uses your terminal and provider tools. For an agent to complete the same workflow, use Set up with an agent. Existing installations should first read Move from v0 to v1.

The result is a deployed update server, an integrated native app and a verified OTA update on a dedicated test channel. Follow these steps from the app's workspace directory.

Provider setup

Step 1: Install hot-updater

First choose infrastructure, then follow Install packages to install the @hot-updater/react-native SDK, hot-updater CLI, your selected build adapter and provider package. Complete all four package choices before init.

Step 2: Initialize your provider

Run the interactive initializer after installation:

npx hot-updater init

Select the app build system and provider you prepared. The provider guide explains access, resources, deployment and the exact update server URL:

If you are assembling your own server, use Custom server quick start. To deploy packaged server files through your own tooling, use Infrastructure Templates.

Step 3: Generated configuration

Review the setup result:

OutputWhat to verify
hot-updater.config.tsSelected build, storage, database, the managed server's plugins, and update strategy
.env.hotupdaterLocal provider settings and registered HOT_UPDATER_API_KEY, kept private and ignored
Update server base URLThe actual deployed endpoint, including a provider base path when required
Remote resourcesThe selected account/project, database and storage match the local config

For every managed provider, init imports apiKeys, insights, and remoteConfig from hot-updater/plugins and writes plugins: [apiKeys(), insights(), remoteConfig()] into hot-updater.config.ts. If it cannot safely merge an existing config, it keeps the file and prints the imports and settings to add. A later spread or computed property must not override the plugins list.

The server URL and client API key connect the app to the server. .env.hotupdater is not automatically loaded into the mobile app. Provider, service-role and admin credentials remain in the CLI/server environment.

Re-running init with another provider preserves unrelated config, prior provider variables and existing infrastructure. Keep old resources until installed binaries no longer depend on them.

Step 4: Initialize your application

Follow Connect your app for the complete HotUpdater.init() flow: initialize once at module scope and export the instance it returns, call hotUpdater.checkForUpdate(), await the selected update's updateBundle(), then reload at a deliberate point. Initialization alone does not check for updates.

That page also configures the client URL/key, native and OTA build variables, build adapter, native loading, compatibility and test channel.

Build configuration

The build configuration section covers Bare, Rock and Expo. Keep its build setting alongside your provider's storage, database and plugins settings.

Native code setup

Native integration is required before the first Release build. Expo applies the native changes through its config plugin during prebuild; bare and Rock apps configure native bundle loading directly.

Android

Follow the Android native setup for your React Native version and Kotlin or Java project.

iOS

Follow the iOS native setup for Swift or Objective-C.

Next steps

Deploy your first update

Complete Test an OTA update. Use a native Release build on a dedicated test channel, change visible JavaScript and an asset, deploy to the matching platform/compatibility target and verify the change on the device. A successful upload alone does not complete onboarding.

Monitor and manage updates

Open the Console and verify received Insights reports. The app sends them with the Insights plugin; the guide explains setup and verification.

Explore advanced features

After the first verified OTA:

On this page