Advanced
Publish Pre-release Updates
Releasing pre-release versions is part of a shortcut development where you want to receive feedback from the users and get help in testing the newest features.
Swing Updater has built in support for these types of updates and handles them in something called Channels
.
A channel is a mechanism that is used to deliver updates to users, based on their preference for stability versus having access to the latest features.
All shortcuts that use Swing Updater have one channel by default, that is the Stable
channel. Other common channel names are Alpha
and Beta
but Swing Updater supports any name you want.
Label | Description |
---|---|
Alpha | The shortcut is very unstable and the user experience might be affected, access to the newest features. |
Beta | The shortcut is somewhat stable but it needs to be polished before release. |
Final | The shortcut is almost ready to release and needs ultimate testing to check if everything works as intended. |
Every pre-release version should use a special version structure (0.0-LABEL-0.0
), you can know more in-depth how these versions work by going here.
Note
It's worth mentioning that the
LABEL
on the version doesn't need to match the channel name. This is useful if you only want to provide 2 channels (aStable
and aBeta
channels) and use those to release all your release and pre-release updates (Alphas, Betas, etc.).
To setup pre-release versions on your shortcut, you will need to add two keys to your classic integration, Channel
and Catalog
.
The Channel
key will tell Swing Updater which channel it should check for updates from while the Catalog
will have the list of all available channels (except Stable
) and their corresponding ID's/URL's.
Let's create an integration with 2 pre-release channels, first we add the keys like so:

Here we have filled the info for the Stable
channel. You may use any service you want (RoutineHub, ShareShortcuts or a Custom Server).
The Channel
key should have the name of the channel as value, so we will use a variable here with the choice the user has made on the configuration phase of your shortcut.
Inside the Catalog
key is where the info for all other channels is stored, consider something like this:

Every time you want to add a new update channel, just create a new Dictionary entry with the name of the channel as key (this is the name that should be used with the Channel
key).
For each channel, you need to provide the origin from where Swing Updater gets the updates and the Parent
channel in the update chain. Let's consider our example with the beta and alpha channels.

Beta Channel

Alpha Channel
To sum the keys up, consider the table below after selecting your hosting service:
Key | Type | Required | Description |
---|---|---|---|
RH ID | Number | Yes | The RoutineHub ID of the shortcut, you can find it by clicking the RoutinePub button on the shortcut's RoutineHub page. |
Parent | Text | No | The name of the parent channel, it can also be Stable . This key is optional, a channel with no parent only receives updates released to that specific channel. |
With this setup, you'll have an updater that has the following update chain: Alpha
→ Beta
→ Stable
What if I want an update channel that only receives updates specifically released on that channel? You can achieve this by not setting a parent channel (using the Parent
key).
So how does Swing Updater handles multiple channels? If I release an update on the Stable
channel, do people on the Beta
channel receive it or do I also have to release it there? To answer this questions it's important to explain how Swing Updater determinates if there's an update or not.
First, Swing Updater will determinate the update chain by following all the parent keys until it reaches the Stable
channel (or a channel with no parent).
With the update chain determined, Swing Updater will start checking for updates on each channel in the chain starting from top to bottom. In the case of our example, the check order will be Stable
→ Beta
→ Alpha
.
Lastly, Swing Updater will evaluate all the checks made and determinate if an update or a rollback is available.