releaseflow
PricingDocsLog in

Release channels

Docs

  • Overview
  • Quickstart
  • Sparkle (macOS)
  • Electron
  • License keys
  • Channels
  • API reference

Every release belongs to one channel: stable, beta or alpha. Stable is always on; beta and alpha are off until you turn on Enable Beta Channel or Enable Alpha Channel in the app settings.

Channel from the tag

The channel comes from the GitHub tag when the release is synced:

TagChannel
v1.4.0stable
v1.5.0-beta.1beta
v1.5.0-rc.2beta
v1.6.0-alpha.3alpha

alpha anywhere in the tag means alpha; beta or rc means beta; anything else is stable. GitHub’s “pre-release” checkbox does not change the channel.

Requesting a channel

Add ?channel=beta or ?channel=alpha to any public URL. Without it, or with an unknown value, the channel is stable.

  • Sparkle: https://releaseflow.net/{username}/{slug}/sparkle/appcast.xml?channel=beta
  • Electron: https://releaseflow.net/{username}/{slug}/update/{platform}/{version}?channel=beta
  • Downloads and listings: https://releaseflow.net/{username}/{slug}/download/{platform}, https://releaseflow.net/{username}/{slug}/releases and the download page https://releaseflow.net/{username}/{slug} take the same parameter.

Fallback

A channel includes everything more stable than itself, and the newest version wins:

  • stable sees stable releases.
  • beta sees beta and stable, so beta users move to the final release once it ships.
  • alpha sees alpha, beta and stable.

A disabled channel drops out: with beta off, ?channel=beta serves stable releases only. Electron responses report the result in x-releaseflow-requested-channel, x-releaseflow-resolved-channel and x-releaseflow-fallback-applied.

Private dev builds

Tags with a -dev pre-release (v1.6.0-dev.4) go to a private dev channel. It never appears on public pages or feeds and is never a fallback. Generate a token with POST https://releaseflow.net/api/rest/apps/{slug}/dev-channel, then request ?channel=dev on the Electron update route with the token as a bearer header:

autoUpdater.requestHeaders = { Authorization: `Bearer ${DEV_CHANNEL_TOKEN}` };
autoUpdater.setFeedURL({
  provider: "generic",
  url: `https://releaseflow.net/{username}/{slug}/update/${platform}/${app.getVersion()}?channel=dev`,
});

Without a valid token, the dev channel answers exactly like an unknown app.

← License keys
releaseflow
PrivacyTermsDocsChangelogSupport