What you will be able to do
- Decide when to suspend an app's compute instead of uninstalling it
- Prepare for uninstall by finding, transferring, or exporting what the app owns
- Predict what DROP APPLICATION removes, with and without CASCADE, including the loss of app roles
1.Uninstall is permanent, so consider suspending instead
Dropping a Snowflake Native App cannot be undone. The APPLICATION object and everything inside it are removed, and APPLICATION objects do not support UNDROP. If the goal is only to cut compute costs for a while, you can suspend the resources the app created and keep the app installed. For an app with containers, suspend its compute pool with ALTER COMPUTE POOL ... SUSPEND. For a warehouse-based app, suspend the warehouses it created.
A suspended app is still installed and still receives upgrades. Upgrades continue to be applied during your configured maintenance window.
Checkpoint 1 of 5· Check yourself
A consumer suspends the compute pool of an SPCS-based app to save money for a month. What happens if the provider releases an upgrade during that month?
Suspending an app's resources does not take the app out of the upgrade process. Upgrades still follow the maintenance window.
“The app itself remains installed and subject to its upgrade schedule even while its resources are suspended.”Source: docs.snowflake.com
The trade-off is simple. Suspending a compute pool stops the container workloads and their associated compute charges, and the app stays available to be resumed later. Suspending a warehouse the app created likewise stops compute charges while the app stays installed. Uninstalling gives up the app, its data, and its roles, and none of that can be restored. When the need is temporary cost control, suspending is the safer choice, as long as you accept that upgrades keep arriving on schedule.
2.Preparing to uninstall
An app can create objects outside its own boundary, such as warehouses, databases, and stages. These objects are in your account, but the app object may own them. Before you drop the app, decide what you want to keep:
- Transfer ownership of outside objects to one of your own roles. If you don't, you may lose access to them. - For containerized apps, drop the app's compute pools or transfer their ownership. If a compute pool is still bound to the app when the app is dropped, the pool becomes unusable and must be dropped manually. Reinstalling the same app later does not make it usable again. - Export any data inside the APPLICATION boundary that you need, through the app or with the provider's help. That data is deleted along with the app. - Cancel any paid listing subscription separately in Snowflake Marketplace. Dropping the app does not cancel it.
To uninstall, use a role with OWNERSHIP on the app. Transferring ownership of the outside objects requires MANAGE GRANTS on them. In SQL, list what the app owns, transfer the objects you want to keep, and then drop the app.
SHOW OBJECTS OWNED BY APPLICATION hello_snowflake_app;GRANT OWNERSHIP ON DATABASE na_external_db TO ROLE consumer_role;Snowsight offers the same choice in its Uninstall dialog. You can transfer the selected objects to a role, or delete all objects created outside the app. Snowsight can only transfer databases, schemas, tables, and views.
Checkpoint 2 of 5· Put it in order
Put these steps in order to keep an app-created database and then uninstall the app
- 1.Run GRANT OWNERSHIP to transfer the database to one of your roles
- 2.Run DROP APPLICATION without CASCADE
- 3.Run SHOW OBJECTS OWNED BY APPLICATION to list objects the app owns outside itself
First find what the app owns, then transfer the objects you want to keep. After that, the app can be dropped without CASCADE.
“To retain objects owned by the application, use the GRANT OWNERSHIP command to transfer ownership of those objects, then run this command without CASCADE.”Source: docs.snowflake.com
The owner of the app can already inspect it, but you can delegate that work. The MONITOR privilege on the app lets another role run DESCRIBE APPLICATION and SHOW OBJECTS OWNED BY APPLICATION, among other commands. That means a colleague can review the list of app-owned objects before the owner transfers them and drops the app.
3.What DROP APPLICATION removes, with and without CASCADE
DROP APPLICATION has a single option, CASCADE. Without CASCADE, the command returns an error if the app still owns any objects outside itself. You have to transfer those objects first. With CASCADE, every object the app owns is dropped. This includes tables whose primary or unique keys are referenced by foreign keys in other tables. It also includes consumer-owned objects inside an app-owned container: a schema you transferred to your role is still dropped if the app owns its parent database. To keep a child object, transfer ownership of its app-owned parent as well.
DROP APPLICATION hello_snowflake_app CASCADE;Two more effects matter. First, all app roles are dropped with the app, so any access those roles granted on objects in your account is lost. Second, some things are not removed. If you configured an event table, it belongs to you and is not affected.
| Situation | Result |
|---|---|
| No CASCADE, app owns no outside objects | App and everything inside it are dropped |
| No CASCADE, app still owns outside objects | Command returns an error |
| CASCADE | All app-owned objects are dropped, including consumer-owned objects inside them |
| App roles | Dropped; access granted through them is lost |
| Dropped app | Cannot be recovered; UNDROP is not supported |
Checkpoint 3 of 5· Check yourself
An analyst role read a consumer table only through an application role that the app granted. After DROP APPLICATION, what access does the analyst have?
App roles are dropped together with the application object, so any access granted through them is gone.
“Any access granted by those roles on objects in the consumer account is lost.”Source: docs.snowflake.com
Checkpoint 4 of 5· Exam question
A consumer is deciding whether to manually upgrade their app instance. The provider's automatic upgrade process has already begun for that instance. What happens if the consumer now tries to run a manual upgrade?
Correct answer: A — The consumer can no longer manually trigger upgrades once the automatic process has started for that instance.
- A. Once Snowflake's automated upgrade process has started for an app instance, the provider's process takes precedence and manual upgrade attempts are no longer available for that instance.
- B. There is no rollback-and-replace mechanic; the framework simply blocks new manual upgrade attempts once the automatic process has taken over.
- C. A prior manual upgrade does not cancel a later automatic upgrade; the two are sequential, not mutually cancelling.
- D. Snowflake does not run two upgrade paths concurrently for the same instance; only one upgrade process is active on an instance at a time.
Checkpoint 5 of 5· Exam question
Which view lets a consumer monitor the progress of an in-flight application upgrade, including states such as QUEUED and UPGRADING?
Correct answer: A — APPLICATION_STATE
- A. APPLICATION_STATE is the view consumers query to track the lifecycle state of an installed application instance during and after an upgrade attempt.
- B. This is not a recognized native app monitoring object for upgrade progress; it does not exist as the upgrade-tracking view.
- C. There is no UPGRADE_HISTORY view in the Native App Framework for tracking instance-level upgrade state.
- D. State tracking applies to the application object, not a separate package-level state view; this name does not match the actual monitoring object.
Objects outside the app that you did not drop are not lost when the app goes. Warehouses, databases, and stages the app created outside its boundary remain in your account and are fully owned by you once the app is dropped without CASCADE. Developers who use the Snowflake CLI meet the same choice: snow app teardown drops the application object and the application package, and its --cascade option also drops objects the app owns, such as compute pools, without prompting.
Exam traps
Each one states something that sounds right. Open it to see what is actually true.
1.After you transfer a schema to your own role, DROP APPLICATION ... CASCADE will leave it alone.Why is that wrong?
CASCADE drops every object the app owns, including consumer-owned objects inside it. A schema whose parent database is still owned by the app is dropped too.
Covered in What DROP APPLICATION removes, with and without CASCADE
2.Uninstalling a paid Marketplace app stops the billing.Why is that wrong?
Dropping the app does not cancel the subscription. You must cancel it separately in Snowflake Marketplace.
Covered in Preparing to uninstall
Practise it for real
Uninstall a test Native App while keeping a database it created
1.Run SHOW OBJECTS OWNED BY APPLICATION hello_snowflake_app; using a role with OWNERSHIP on the app
Why: Lists every object outside the app that the app owns. Without CASCADE, these objects would block the drop.
You should see: A list of objects and their types, for example na_external_db of type DATABASE
2.Run GRANT OWNERSHIP ON DATABASE na_external_db TO ROLE consumer_role; for each object you want to keep
Why: Objects that are still owned by the app are either deleted by CASCADE or cause a plain DROP to fail
You should see: The database no longer appears in SHOW OBJECTS OWNED BY APPLICATION
3.Run DROP APPLICATION hello_snowflake_app; without CASCADE
Why: Without CASCADE, the drop fails if the app still owns anything outside itself, so you can't lose an object you missed
You should see: hello_snowflake_app successfully dropped. If an app-owned object remains, you get an error instead
Stuck? Get a nudge
If the drop fails, run SHOW OBJECTS OWNED BY APPLICATION again. Something you meant to keep may still be owned by the app.
Sources
Every claim above is drawn from one of these pages, quoted as it was written on the date shown.
- 1.
“suspend the app’s compute pool using ALTER COMPUTE POOL ... SUSPEND.”
↩︎ Uninstall is permanent, so consider suspending instead“Even if you reinstall the same app from the same package and version with the same name, the orphaned compute pool cannot be reused.”
↩︎ Preparing to uninstall“Your event table, if configured, is not affected: it belongs to you.”
↩︎ What DROP APPLICATION removes, with and without CASCADE“Dropping the app does not automatically cancel a paid listing subscription.”
↩︎ Exam trap 2“The app itself remains installed and subject to its upgrade schedule even while its resources are suspended.”
↩︎ Checkpoint - 2.
“UNDROP is not supported for APPLICATION objects.”
↩︎ Uninstall is permanent, so consider suspending instead“If CASCADE is not specified, this command returns an error if the app owns objects outside of itself.”
↩︎ What DROP APPLICATION removes, with and without CASCADE“all objects owned by the app are dropped, even if those objects contain other objects owned by the consumer.”
↩︎ Exam trap 1“To retain objects owned by the application, use the GRANT OWNERSHIP command to transfer ownership of those objects, then run this command without CASCADE.”
↩︎ Checkpoint“running this command with CASCADE also drops those objects.”
↩︎ Prediction“Any access granted by those roles on objects in the consumer account is lost.”
↩︎ Checkpoint - 3.https://docs.snowflake.com/en/developer-guide/native-apps/ui-consumer-managing-applicationsOfficial docs
“To uninstall an app, you must use a role that has the OWNERSHIP privilege on the app.”
↩︎ Preparing to uninstall