Guidelines for submitting an app to the Snowflake Marketplace

This topic describes criteria for submitting a Snowflake Native App to the Snowflake Marketplace.

Prepare to submit a Snowflake Native App

When your application package is ready to be published on the Snowflake Marketplace, you must submit it to Snowflake for approval.

Note

The approval process required to publish an app on the Snowflake Marketplace is different than the automated security scan that is run when the DISTRIBUTION property of an application package is set to EXTERNAL.

Before creating a listing, verify that you understand the enforced requirements and ensure that your application package follows each requirement. If an application package does not follow these requirements, your submission might be rejected.

If you receive a rejection notification for your submitted application package, make the recommended changes and resubmit your application package for approval.

Enforced requirements

The following requirements are verified when you submit an application package for approval to be published to the Snowflake Marketplace:

  • All account-level privileges and references that the Snowflake Native App requires must be listed in the manifest file of the application package.

  • If a listing includes an account-level privilege or reference in the security section of the manifest file and the application package contains a Streamlit app, you must use the Python Permission SDK to create a user interface to request privileges and references from the consumer.

  • If an application package does not provide a Streamlit app as the user interface for the app, the readme file of the application package must contain the following information:

    • A description of what the app does.

    • The steps the consumer must perform to configure the app after it is installed.

    • The stored procedures and user-defined functions the app uses.

    • The privileges the app requires.

    • Example SQL commands that show consumers how to use the app.

  • If the readme file includes SQL statements or code examples, you must use codeblocks.

  • Use a single, multi-page Streamlit app instead of multiple separate Streamlit apps, when possible. This includes multi-user Streamlit apps, etc.

  • If the app provides sample data, you must include procedures on how to use the sample data, including the code required to create the database, if necessary.

Best practices when publishing a Snowflake Native App

In addition to the requirements for submitting an application package to the Snowflake Marketplace, Snowflake also recommends the following best practices when publishing a Snowflake Native App:

  • Ensure that all required files are uploaded to the named stage for the version of the app you are submitting, including:

    • The manifest.yml file.

    • The setup script.

    • The readme.md file.

    • Any external stored procedures or user-defined functions required by the application package.

    • Any Streamlit files required by the application package.

    • Any external source code, including Python, Java, etc.

  • Ensure that the version of the app you are developing passes the automated security scan.

  • Test the new version of your application package by creating the application object locally by using the CREATE APPLICATION command.

    • Do not add a new version to your application package or set the DISTRIBUTION property to EXTERNAL while you are developing and testing an app. These actions will trigger the automated security scan which delays the development cycle.

      Instead, create the application object using files on a named stage.

    • If your app includes a Streamlit app, test the application in Snowsight to ensure the Streamlit app works as expected.

    • Verify that interactions between the Streamlit app and Snowflake Worksheets are seamless and that the consumer does not have to navigate excessively between the two.

  • Review all parts of a listing before submitting it for approval.

  • Ensure that there are no typos or other textual errors in the listing, readme file, and Streamlit app.