About the Snowflake Native App Framework

This topic provides general information about the Snowflake Native App Framework.

Introduction to the Snowflake Native App Framework

The Snowflake Native App Framework allows you to create data applications that leverage core Snowflake functionality. The Snowflake Native App Framework allows you to:

  • Expand the capabilities of other Snowflake features by sharing data and related business logic with other Snowflake accounts. The business logic of an application can include a Streamlit app, stored procedures, and functions written using Snowpark API, JavaScript, and SQL.

  • Share an application with consumers through listings. A listing can be either free or paid. You can distribute and monetize your apps in the Snowflake Marketplace or distribute them to specific consumers using private listings.

  • Include rich visualizations in your application using Streamlit.

The Snowflake Native App Framework also supports an enhanced development experience that provides:

  • A streamlined testing environment where you can test your applications from a single account.

  • A robust developer workflow. While your data and related database objects remain within Snowflake, you can manage supporting code files and resources within source control using your preferred developer tools.

  • The ability to release versions and patches for your application that allows you, as a provider, to change and evolve the logic of your applications and release them incrementally to consumers.

  • Support for logging of structured and unstructured events so that you can troubleshoot and monitor your applications.

Known Limitations

The Snowflake Native App Framework has limitations, including:

  • Snowflake accounts on Google Cloud Platform are not yet supported.

  • Cross-Cloud Auto-Fulfillment is currently supported only on AWS and Azure regions.

  • Snowflake accounts in government regions are not supported.

  • Virtual Private Snowflake (VPS) is only supported within a single organization.

  • Iceberg tables are not supported.

  • Temporary tables or stages are not supported.

  • Some Streamlit features are not supported. See Unsupported Streamlit Features for details.

  • The Snowflake Native App Framework does not support failover for business continuity. Adding application packages to replication groups and failover groups is not supported.

Components of the Snowflake Native App Framework

The following diagram shows a high-level view of the Snowflake Native App Framework.

../../_images/native-apps-overview.png

The Snowflake Native App Framework is built around the concept of provider and consumer used by other Snowflake features, including Snowflake Collaboration and Secure Data Sharing

Provider

A Snowflake user who wants to share data content and application logic with other Snowflake users.

Consumer

A Snowflake user who wants to access the data content and application logic shared by providers.

Develop and Test an Application Package

To share data content and application logic with a consumer, providers create an application package.

Application package

An application package encapsulates the data content, application logic, metadata, and setup script required by an application. An application package also contains information about versions and patch levels defined for the application. See Create an application package for details.

An application package can include references to data content and external code files that a provider wants to include in the application. An application package requires a manifest file and a setup script.

Manifest file

Defines the configuration and setup properties required by the application, including the location of the setup script, versions, etc. See Create the manifest file for an application package for details.

Setup script

Contains SQL statements that are run when the consumer installs or upgrades an application or when a provider installs or upgrades an application for testing. The location of the setup script is specified in the manifest.yml file. See Create a setup script for details.

Publish an Application Package

After developing and testing an application package, a provider can share an application with consumers by publishing a listing containing the application package as the data product of a listing. The listing can be a Snowflake Marketplace listing or a private listing.

Snowflake Marketplace listing

Allows providers to market applications across the Snowflake Data Cloud. Offering a listing on the Snowflake Marketplace lets providers share applications with many consumers simultaneously, rather than maintain sharing relationships with each individual consumer.

Private listing

Allows providers to take advantage of the capabilities of listings to share applications directly with another Snowflake account in any Snowflake region supported by the Snowflake Native App Framework.

See About Listings for details.

Install and Manage an Application

After a provider publishes a listing containing an application package, consumers can discover the listing and install the application.

Snowflake Native App

A Snowflake Native App is the database object installed in the consumer account. When a consumer installs the Snowflake Native App, Snowflake creates the application and runs the setup script to create the required objects within the application. See Create an application object for details.

After installing the application, consumers can perform additional tasks, including:

See Working with Applications as a Consumer for details on how consumers install and manage an application.