Creating templates for a Snowflake Native App project

To get you started, Snowflake has created some templates that give you a basic idea of what a Snowflake Native App project should look like. These templates are available at the Snowflake Git repository. Snowflake recommends that you use Snowflake CLI to interact with these templates as it offers some benefits over a simple git clone, such as:

  • It allows you to share a jinja template for your project definition file, which is rendered as a snowflake.yml file when you run snow app init.

  • It uses your desired directory name to populate the project definition file and also names the newly created directory with this name.

  • It performs shallow clones for a quick cloning process and removes the git history from a cloned repository, so that you can initiate your own Git repository in this directory to share with your organization.

You are also free to create your own templates and share them with the rest of your organization or the general public. You do not have to conform to the structure that is provided in the Snowflake templates. However, you must satisfy the following requirements for Snowflake CLI to recognize your template as a valid Snowflake Native App template:

  • You must use a Git repository to share templates. Non-git URLs are not supported for cloning.

  • Either an entire Git repository must be one template, or it can be a collection of templates with a nesting of one level from the root of the repository.

  • You must define a snowflake.yml at the root of the project with the minimum required fields, including definition_version,, and native_app.artifacts. You can provide a dummy value for native_app.artifacts. At runtime, the CLI will replace the field with the name the user of the CLI initialized their Snowflake Native App project with, during snow app init.

  • You can also choose to have a snowflake.yml.jinja file instead of snowflake.yml file, but with the same required fields. If using a snowflake.yml.jinja, the only variable you can have in this file should be named project_name, which will be replaced by at CLI runtime. Any additional variables cause the CLI to fail when initializing a project from the template.

  • The file extension must be .yml. No other extensions, including .yaml are valid.


Snowflake does not own the templates provided by third parties and does not guarantee that these templates represent working Snowflake Native App applications.