HotupdaterHot Updater
Guides

Deploy

Deploy an update to one platform or both platforms sequentially.

Checklist

  1. Ensure hot-updater.config.ts is properly configured.
  2. Wrap your components using HotUpdater.wrap.
  3. Include the native code.

If you haven't completed these steps, refer to the Supabase Provider guide.

Options

Options:
  -p, --platform <platform>                    specify the platform (choices: "ios", "android")
  -t, --target-app-version <targetAppVersion>  specify the target app version (semver format e.g. 1.0.0, 1.x.x)
  -f, --force-update                           force update the app (default: false)
  -o, --bundle-output-path <bundleOutputPath>  the directory where bundle archives will be generated
  -r, --rollout <percentage>                   specify the rollout percentage for the deployed bundle (0-100) (default: 100)
  -i, --interactive                            interactive mode (default: false)
  -c, --channel <channel>                      specify the channel to deploy (default: "production")
  -m, --message <message>                      Specify a custom message for this deployment. If not provided, the latest git commit message will be used as the deployment message
  -h, --help                                   display help for command

Usage

Default Mode

When you omit -p and -i, Hot Updater deploys iOS first, then Android sequentially. If the iOS deploy fails, Android is not attempted.

Run the following command:

npx hot-updater deploy
  • This is the default mode for CI/CD pipelines when both platforms should move together.
  • Local bundle archives are written under platform-specific directories such as <bundle-output-path>/ios/bundle/ and <bundle-output-path>/android/bundle/.

Bundle Diffing

New deployments automatically include the artifacts needed for bundle diffing alongside the archive bundle. When the app runtime supports manifest-based diffing, unchanged files can be reused locally and only changed files are downloaded. No deploy flag is required for this behavior.

If patch.enabled: true is set in hot-updater.config.ts, deploy also tries to prepare compatible bsdiff patches for the Hermes bundle. This optimization is disabled by default. Patch generation is best-effort; a skipped patch does not fail the deployment because the normal archive update remains available.

See Bundle Diffing for the runtime behavior and fallback rules.

Interactive Mode

Interactive mode guides you through the deployment steps via keyboard inputs.

Execute the following command:

npx hot-updater deploy -i

The -i (or --interactive) flag enables interactive keyboard input.

  • This mode allows you to proceed through deployment steps interactively.

For Continuous Deployment (CD) Pipelines

Use this mode when a pipeline should deploy only one platform.

Run the following command:

npx hot-updater deploy -p <"ios" | "android">
  • Use -p to scope the deploy to exactly one platform.

Force Update

Deploy a forced update for emergency purposes. This will immediately apply the update.

Run the following command:

npx hot-updater deploy -p <"ios" | "android"> -f

The -f (or --force-update) flag enables force update.

Channel

The -c (or --channel) flag specifies the release channel.

Run the following command:

npx hot-updater deploy -p <"ios" | "android"> -c "<channel>"

The -c (or --channel) flag specifies the release channel. The default value is production.

For more details about default channels, refer to Default Channel Setup.

Rollout

The -r (or --rollout) flag sets the rollout percentage for the deployed bundle.

Run the following command:

npx hot-updater deploy -p <"ios" | "android"> -r 25

Use 1 to 99 for gradual rollout, 100 for a full rollout, and 0 when you want to keep the bundle deployed but unavailable to numeric rollout until you edit it later in the console.

Hot Updater maps rollout percentages to 1..1000 numeric cohorts internally. For example, -r 25 means 250 of 1000 numeric cohorts are eligible for that bundle.

If you omit -r, the default value is 100, so the bundle is deployed to the entire audience immediately.

For more on gradual rollout, current device cohorts, and cohort targeting from the console, see Rollout & Cohorts.

Message

The -m (or --message) flag specifies the message.

Run the following command:

npx hot-updater deploy -p <"ios" | "android"> -m "<message>"

If you omit -p, the same message is applied to both sequential platform deploys.

Force Update Flag Difference

Update TypeWhen AppliedHow to Enable
DefaultDownloads the update bundle in the background and applies it when the user restarts the app.Default setting
Force UpdateDownloads the update bundle and applies it immediately.Use the --force-update flag or console.

On this page