What you will be able to do
- Tell the QA, ALPHA and DEFAULT release channels apart by audience, security scan and intended use
- Add, remove and replace the accounts targeted by a release channel
- Name the privileges that govern release management and installing preview apps
- Explain how channel choice affects pricing, trials and the number of instances
- Explain which channel types are monetized and which are for testing only
- Register, deregister and assign versions and patches within the documented limits
Key concept
Per-channel release directive — When release channels are enabled, versions are assigned to a channel (QA, ALPHA or DEFAULT), and each channel has its own release directive that decides which version and patch its consumers get. Every release-management task happens inside one channel.
1.QA, ALPHA and DEFAULT release channels
Release channels let a provider publish an app at different stages of its development lifecycle, and run several versions and patches at the same time. Release channels are enabled by default when you create an application package. If you created a package without them, you can turn them on later with ENABLE_RELEASE_CHANNELS=TRUE on CREATE APPLICATION PACKAGE or ALTER APPLICATION PACKAGE. This is a one-way decision: after release channels are enabled for a package, they cannot be disabled.
The framework supports three channels. They differ in who can reach them and whether the automated security scan runs.
| Channel | Who can receive it | Automated security scan | Intended use |
|---|---|---|---|
| QA | Only specific accounts in the provider's own organization | Not triggered by adding a version to QA | Testing |
| ALPHA | Can be published to consumers outside the provider's organization | Runs when a version is assigned; a version that fails can no longer be used | Working with consumers while the app is still in development |
| DEFAULT | All consumers who have access to the app version or patch | Must pass | Production |
ALPHA has one subtlety. While the security scan is still running, the provider can already set the release directive for the version, and consumers can install it. If the scan then fails, the version can no longer be used. DEFAULT is the production channel, and everything assigned to it must meet the security requirements for publishing an app.
Checkpoint 1 of 7· Check yourself
A provider adds version V2 only to the QA release channel and waits for the automated security scan to finish. What happens?
Adding a version to QA alone does not start the automated security scan. Only adding it to ALPHA or DEFAULT does.
“Adding a version to the QA release channel does not initiate the automated security scan.”Source: docs.snowflake.com
2.Targeting accounts and release-management privileges
By default, only the DEFAULT channel is open to every consumer with access to the listing. QA and ALPHA must be enabled explicitly for specific accounts, and the application package keeps a list of the accounts in each of those channels. You edit that list with ALTER APPLICATION PACKAGE … MODIFY RELEASE CHANNEL, using ADD ACCOUNTS, REMOVE ACCOUNTS or SET ACCOUNTS.
ALTER APPLICATION PACKAGE my_app_package MODIFY RELEASE CHANNEL ALPHA ADD ACCOUNTS=(ORG1.ACCOUNT1);SET ACCOUNTS does not add to the list. It overwrites the list. Every account that is not in the new list is removed from the channel.
ALTER APPLICATION PACKAGE my_app_package MODIFY RELEASE CHANNEL ALPHA SET ACCOUNTS=(ORG1.ACCOUNT2);Checkpoint 2 of 7· Check yourself
ALPHA currently contains ORG1.ACCOUNT1. The provider runs MODIFY RELEASE CHANNEL ALPHA SET ACCOUNTS=(ORG1.ACCOUNT2). Which accounts are in ALPHA afterwards?
SET replaces the channel's entire account list, so ORG1.ACCOUNT1 is removed and ORG1.ACCOUNT2 is added.
“This command removes all current accounts from the ALPHA release channel and adds the ORG1.ACCOUNT2 account.”Source: docs.snowflake.com
The documentation names privileges for release management in more than one place. The release-channels guide says a role needs MANAGE RELEASES. That privilege lets the role enable release channels and the QA and ALPHA channels, register and deregister versions and patches, add versions and patches, and set the release directive. The SQL reference for MODIFY RELEASE CHANNEL instead lists OWNERSHIP on the application package, or the account-level MANAGE VERSIONS privilege. MANAGE VERSIONS lets a role modify release channels and release directives on any application package without owning it.
Installing from the test channels is controlled separately. To create an app from QA or ALPHA, even in your own account, the role needs CREATE PREVIEW APPLICATION.
Checkpoint 3 of 7· Exam question
Which statement correctly distinguishes a version from a patch when managing an application package's release lifecycle?
Correct answer: A — A version introduces major functional changes and needs its own manifest file and setup script, while a patch delivers smaller updates such as fixes within an existing version
- A. A version represents a major update and requires its own manifest and setup script because it can change the app's structure, while patches carry smaller fixes on top of an existing version. This distinction determines how providers plan releases and how consumers experience upgrades.
- B. This is incorrect because versions and patches are not interchangeable; a version defines a distinct release line with its own manifest and setup script, whereas a patch only layers small fixes onto that line.
- C. This is incorrect because patches are meant for minor fixes, not for introducing new application roles or privilege structures, which typically require a new version instead.
- D. This is incorrect because there is no rule requiring a minimum patch count before a version can be created; versions and patches are independent constructs that a provider can create as needed.
Checkpoint 4 of 7· Check yourself
A provider's test engineer runs CREATE APPLICATION … USING RELEASE CHANNEL QA and gets a privilege error. Which privilege is missing?
Installing from QA or ALPHA requires CREATE PREVIEW APPLICATION. MANAGE VERSIONS and OWNERSHIP control changes to channels and directives, not preview installs.
“you must use a role that has been granted the CREATE PREVIEW APPLICATION privilege”Source: docs.snowflake.com
3.Channel choice and monetization
The channel an app is installed from decides how it is billed. Every instance installed from DEFAULT uses the pricing plan configured for the listing. Instances from QA and ALPHA are free, because they are meant for testing. Only DEFAULT is meant for production.
The channel also limits how many instances a consumer can have. A provider enables multiple instances with the MULTIPLE_INSTANCES property on the application package, and the setting applies to every channel in the package. Even so, on a paid listing a consumer can have only one DEFAULT-channel instance.
| Installed from | Pricing | Instances per consumer |
|---|---|---|
| QA or ALPHA | Free; does not use the listing pricing plan | Multiple |
| DEFAULT, paid listing | Uses the listing pricing plan | One |
| DEFAULT, free listing | Uses the listing pricing plan | Multiple |
Trials work differently by channel on limited trial and paid (with trial) listings. A QA or ALPHA install is free and is disabled when the trial ends. If it was installed from a paid listing, though, it stays available after the trial. To revoke it, the provider removes the consumer from the channel's active targets. A DEFAULT install is disabled when the trial ends, and to keep using the app the consumer must accept an offer and select the app from the DEFAULT channel.
If the USING RELEASE CHANNEL clause is left out of CREATE APPLICATION, the app is installed from DEFAULT.
Checkpoint 5 of 7· Fill the gap
Complete this command so the provider installs a test instance from the channel that is limited to their own organization and does not trigger the security scan.
CREATE APPLICATION my_app
FROM APPLICATION PACKAGE my_app_package
USING RELEASE CHANNEL ? ;QA is restricted to targeted accounts in the provider's organization and does not start the automated security scan. Leaving the clause out would install from DEFAULT.
Source: docs.snowflake.comCheckpoint 6 of 7· Check yourself
A consumer installed an app from the ALPHA channel of a paid listing. The trial has ended and the app is still available. How does the provider revoke access?
ALPHA installs from a paid listing outlive the trial. The documented way to revoke them is to remove the consumer from the channel's active targets.
“they can do so by removing the consumer from the active targets of the release channel”Source: docs.snowflake.com
Putting the channel types and their monetization implications together: the three channel types split into one production channel and two testing channels, and that split is what drives monetization. DEFAULT is the only production channel, and it is the only one whose installs are billed at the listing's pricing plan. QA and ALPHA are testing channels, so their installs are free and never use the pricing plan, whichever listing they came from. That makes channel membership a commercial control as well as a release control: an account added to QA or ALPHA gets a free test instance, while a consumer who should pay must install from DEFAULT.
The implications reach trials and instance counts too. On a paid listing, a QA or ALPHA instance outlives the trial unless the provider removes the consumer from the channel's targets, whereas a DEFAULT instance is disabled when the trial ends until the consumer accepts an offer. A paid listing also caps a consumer at one DEFAULT instance, while QA and ALPHA instances can be multiple. So a provider should not leave a paying customer on a test channel: it is free, and access continues after the trial.
Sources1
4.Registering versions and adding patches
Versions usually carry major updates such as new features and changed functionality. Patches should carry only small updates, such as security fixes. Each version and patch needs its own manifest file and setup script.
With release channels enabled, the legacy ADD VERSION USING '@stage/path' clause is not supported. Instead, you register a version in the package, then assign it to a channel. Registering creates the version and its patch 0, but does not put it in any channel.
ALTER APPLICATION PACKAGE my_app_package REGISTER VERSION V1 USING '@stage/path';ALTER APPLICATION PACKAGE my_app_package MODIFY RELEASE CHANNEL QA ADD VERSION V1;| Clause | Effect | Constraint |
|---|---|---|
| REGISTER VERSION | Creates a version from files at a stage path | Not in any channel until ADD VERSION assigns it |
| DEREGISTER VERSION | Removes the version and its patches from the package | Only when it is in no release channel and no installed instances run on it |
| MODIFY RELEASE CHANNEL … ADD VERSION | Makes a registered version available to release directives in that channel | At most two versions per channel; adding to QA does not trigger the scan |
| MODIFY RELEASE CHANNEL … DROP VERSION | Removes the version from the channel | Asynchronous; finishes only after every install on it has been upgraded |
Each limit applies at a specific level. A package can hold at most two unassigned versions, so to register a third you must deregister one first. The two-version limit applies to each release channel, not to the whole package, which is how channels let a provider run more than two versions at once. Within a version, patches are not capped at two: a single version can have up to 130 patches. Patches cannot be dropped. When you add a patch without a number, Snowflake uses the previous patch number plus 1. Version identifiers can be at most 30 characters long. When a version is added to a channel, its later patches are bound to that same channel.
Checkpoint 7 of 7· Put it in order
Put these steps in order to make a new version installable through a channel's release directive.
- 1.Add the registered version to a release channel with MODIFY RELEASE CHANNEL … ADD VERSION
- 2.Set the channel's release directive to that version and patch
- 3.Register the version from its stage path with REGISTER VERSION
A registered version is not in any channel. It must be added to a channel before that channel's release directive can point at it.
“you must explicitly add the version to a release channel to set the release directive for the app”Source: docs.snowflake.com
Exam traps
Each one states something that sounds right. Open it to see what is actually true.
1.MODIFY RELEASE CHANNEL … SET ACCOUNTS appends the listed accounts to the channel.Why is that wrong?
SET overwrites the list, so any account left out is removed. Use ADD ACCOUNTS to append.
Covered in Targeting accounts and release-management privileges
2.An app installed from the ALPHA or QA channel of a paid listing is billed at the listing's pricing plan.Why is that wrong?
Only DEFAULT installs use the listing's pricing plan. QA and ALPHA installs are free.
Covered in Channel choice and monetization
3.On a package with release channels you can still create a version with ADD VERSION … USING a stage path.Why is that wrong?
That clause is not supported once channels are enabled. Register the version, then add it to a channel.
Covered in Registering versions and adding patches
Sources
Every claim above is drawn from one of these pages, quoted as it was written on the date shown.
- 1.
“After release channels are enabled for an application package, they cannot be disabled.”
↩︎ QA, ALPHA and DEFAULT release channels“To use release channels, you must use a role that has been granted the MANAGE RELEASES privilege.”
↩︎ Targeting accounts and release-management privileges“a consumer can only have one instance of an app using the DEFAULT release channel”
↩︎ Channel choice and monetization“All app instances installed using the DEFAULT release channel use the pricing plan configured for the listing.”
↩︎ Channel choice and monetization“Only apps installed from the DEFAULT release channel are meant for production.”
↩︎ Channel choice and monetization“There is a maximum of two unassigned versions (not added to any release channels) allowed in the application package.”
↩︎ Registering versions and adding patches“When release channels are enabled for an application package, each channel has its own release directive.”
↩︎ Key concept“This command removes all current accounts from the ALPHA release channel and adds the ORG1.ACCOUNT2 account.”
↩︎ Exam trap 1“App instances installed from ALPHA and QA release channels are free and do not use the pricing plan configured for the listing.”
↩︎ Exam trap 2“Providers must register and deregister a version in the application package.”
↩︎ Exam trap 3“Adding a version to the QA release channel does not initiate the automated security scan.”
↩︎ Checkpoint“This command removes all current accounts from the ALPHA release channel and adds the ORG1.ACCOUNT2 account.”
↩︎ Checkpoint“you must use a role that has been granted the CREATE PREVIEW APPLICATION privilege”
↩︎ Checkpoint“App instances installed from ALPHA and QA release channels are free and do not use the pricing plan configured for the listing.”
↩︎ Prediction“they can do so by removing the consumer from the active targets of the release channel”
↩︎ Checkpoint“you must explicitly add the version to a release channel to set the release directive for the app”
↩︎ Checkpoint - 2.
“if a version assigned to this release channel fails the security scan, it can no longer be used.”
↩︎ QA, ALPHA and DEFAULT release channels“This release channel is the production release channel.”
↩︎ QA, ALPHA and DEFAULT release channels“Patches cannot be dropped.”
↩︎ Registering versions and adding patches - 3.https://docs.snowflake.com/en/sql-reference/sql/alter-application-package-release-channelOfficial docs
“Global privilege that allows modifying release channels and release directives on any application package.”
↩︎ Targeting accounts and release-management privileges - 4.
“A single version can have up to 130 patches.”
↩︎ Registering versions and adding patches