# Use the console

Upload, publish, adjust the rollout and restore a stable update, step by step.

## Gather the release inputs {#before}

Ask the developer for the application name and platform, registered channel and native version, the `.ppk` file, release notes, and a device running the matching Release build.

Native APK / IPA / Harmony APP files are registered with the CLI. **Add update package** accepts `.ppk` files, not native installers. See [developer preparation](/docs/publish#register-native).

## Find the right page {#navigation}

Sign in, open **Applications**, and enter the application.

| Page | Tasks |
| --- | --- |
| Update packages | Upload, publish, change rollout percentages, restore older updates |
| Native builds | Inspect registered channels and versions; edit native build status |
| Channels | Create channels, configure download URLs, enable or disable updates |
| Live metrics | Inspect device checks, downloads, activation and errors |
| Audit logs | Find who changed what and when |
| API Key | Create credentials for developers and CI |

If needed, create an application from the application list, enter its name and select its platform. Create separate applications for Android, iOS and HarmonyOS; give the developer the matching appKey.

## 1. Check the native target {#native}

1. Open **Native builds** in the application.
2. Find the intended channel and version, for example `huawei / 1.0.0`.
3. Check that the build is neither paused nor expired and the channel allows updates.

If the list is empty, ask the developer to register the exact distributed installer, then refresh. Creating a channel alone does not create a native version.

## 2. Upload the update {#upload}

1. Open **Update packages → Add update package**.
2. Select the supplied `.ppk`.
3. Enter a release name such as `fix-checkout-001` and release notes.
4. Leave Meta Info as `{}` unless your app uses custom metadata.
5. Submit and wait for the update to appear in the list.

Upload alone does not publish to devices. Continue below. If the developer already published through the CLI, inspect the existing targets instead of uploading again. For error symbolication, have the developer [publish with the matching sourcemap](/docs/publish#publish).

## 3. Select targets and publish {#publish}

1. Click **Publish** on the update row.
2. Choose the first target, or add a target if some already exist.
3. Find a channel and select its native version, such as `huawei → 1.0.0`; confirm the selection.
4. Set the rollout percentage to `10`, or `100` for an isolated test app.
5. Leave brick rescue off for ordinary releases.
6. Choose **Preview and apply**. Check each channel, version, percentage and any online update it will replace.
7. Confirm the submission and check the resulting published target in the list.

| Example | Eligible audience |
| --- | --- |
| `huawei / 1.0.0 / 10%` | A portion of devices with that Huawei native build |
| `xiaomi / 1.0.0 / 100%` | All eligible devices with that Xiaomi native build |

If a version is absent, check **Native builds**. You cannot invent an unregistered version in the target picker.

## 4. Verify and expand {#rollout}

1. Check for updates on the test device, wait for the download, and activate according to the app's settings.
2. Open **Live metrics** and select the application, channel and release time range.
3. Inspect download, startup and success confirmation events. Open device records to investigate failures.
4. After key app flows pass, return to the update, click its target label or reopen **Publish**, and increase the percentage.
5. Preview and confirm each increase, observe again, and eventually set 100%.

A 10% release may exclude your test phone. Use 100% on an isolated test channel for initial verification. A completed download is not proof of successful activation; see [event meanings](/docs/analytics).

## Stop a release {#stop}

For one target, click its label, select **Cancel release**, review and confirm. The package can be published again later.

For a whole channel, open **Channels → Configure**, disable hot updates and save. Re-enable the switch to resume, after inspecting the channel's existing releases.

Neither action uninstalls an update already running on a phone. Deleting an update package also removes its release records; use the controls above to stop distribution.

## Restore a stable update {#rollback}

1. Stop further distribution of the faulty update.
2. Locate a previously verified package in **Update packages**.
3. Open its historical target for the same channel and native version and choose the full rollback action.
4. If that target no longer exists, use **Publish → Add target** with the same channel/version and 100%.
5. Review affected targets and confirm.
6. Check again on an affected device, activate, verify the app, and watch metrics.

This republishes stable content. Devices must still check and download; the console action does not instantly revert running apps.

## Recover an app that cannot open {#rescue}

Have the developer supply a tested fix. Select the affected channel/version and enable brick rescue before previewing and publishing.

The installed SDK must already support and enable native startup checks. It can download a repair while JavaScript is unavailable and schedule activation for a later launch. The switch cannot add native capabilities to old installers or bypass local protection against an update already rolled back. Test recovery using the affected native build first.

## Daily checks and troubleshooting {#troubleshooting}

| Problem | Next step |
| --- | --- |
| No release targets | Register a native build, confirm application/platform, refresh |
| Correct channel but no update | [Inspect the installed build's channel](/docs/channels#verify) |
| Upload succeeded but no release | Add a target and confirm the publish preview |
| Preview conflict | Read the failing row, refresh target data and preview again |
| Lower percentage did not revert users | Percentages affect subsequent update selection |
| Unexpected setting change | Filter **Audit logs** by time and keyword |
| Downloaded but old screen remains | Follow the [device activation steps](/docs/publish#verify) |

Record the application, channel, native version, update name, percentage, time and test result for each release. For automation, see [API Key and CI](/docs/api-token).
