Skip to content

Deployment channels

A channel is a named update stream — production, staging, beta, or any string you like. The same app build (same fingerprint) can subscribe to a channel and receive only the releases pushed to it. Channels let you run an internal beta and production in parallel from one codebase.

Set the channel on the SDK at init. It can be any string; the PatchChannel presets are just conveniences.

Choosing a channel
// a preset…
Patch.configure(.init(appKey: "pak_live_…", channel: .staging))
// …or an arbitrary channel string (e.g. a per-tester or per-tenant stream)
Patch.configure(.init(appKey: "pak_live_…", channelName: "beta-eu"))

Pass --channel on release/push. A device only ever receives modules pushed to the channel it’s subscribed to. status and rollback are also channel-scoped.

~/MyApp — zsh
# release a build to the staging channel for internal testers
$ patchcli release --channel staging --message "Try the new checkout flow"
# promote the same logic to production once it looks good
$ patchcli release --channel production --rollout 25
# inspect / roll back a single channel
$ patchcli status --channel staging
$ patchcli rollback --channel staging