Skip to content

Channels

A channel points a group of React Native apps to a JavaScript bundle release. Use channels to separate production, beta, staging, and development update flows without rebuilding the native binary for every JavaScript change.

Common channel setup

Most teams start with:

  • production for App Store and Play Store users
  • beta for TestFlight, internal testing, or QA users
  • development for local validation devices

Channel names are case-sensitive. Use one naming convention and keep it consistent in the CLI, console, and updater config.

Configure a channel in React Native

Set the default channel when starting the updater client:

import { configureCodePushGo, startCodePushGo } from '@codepushgo/react-native-updater'
configureCodePushGo({ endpoint: 'https://api.codepushgo.com' })
await startCodePushGo({ defaultChannel: 'production' })

For beta builds:

await startCodePushGo({ defaultChannel: 'beta' })

Upload to a channel

Use the one-step release command when CodePushGo should build and upload the React Native bundle:

Terminal window
npx @codepushgo/cli@latest release --platform ios --version 1.0.1 --channel production

Or upload an existing bundle directory:

Terminal window
npx @codepushgo/cli@latest upload --platform android --version 1.0.1 --bundle-dir ./build/codepushgo/android --channel beta

Promote a release

A typical release flow is:

  1. Upload to development from a local branch.

  2. Upload the same code to beta after local validation.

  3. Promote or upload to production after QA signs off.

  4. Watch console release stats before expanding rollout.

Roll back a channel

If a release misbehaves, point the channel back to a previous known-good release in the console. Devices on that channel will receive the rollback target the next time they check for updates.

Read Rollbacks for the response flow.