Streamlit in Snowflake: New Streamlits default to container runtime (Pending)

Attention

This behavior change is in the 2026_06 bundle.

For the current status of the bundle, refer to Bundle history.

When this behavior change bundle is enabled, new Streamlit in Snowflake apps created without specifying a runtime use the SYSTEM$ST_CONTAINER_RUNTIME_PY3_11 container runtime by default. Previously, omitting RUNTIME_NAME from a CREATE STREAMLIT command defaulted to SYSTEM$WAREHOUSE_RUNTIME (warehouse runtime). Both runtimes continue to be supported.

This change does not apply to Government and China region accounts, where the container runtime is not available. Streamlit in Snowflake apps created by Native Applications are also excluded; Native Applications continue to default to warehouse runtime when no runtime is specified.

Before the change:

A CREATE STREAMLIT command without an explicit RUNTIME_NAME creates a warehouse-runtime app:

-- Implicitly uses SYSTEM$WAREHOUSE_RUNTIME
CREATE STREAMLIT my_app
  FROM @my_stage/my_app
  MAIN_FILE = 'app.py'
  QUERY_WAREHOUSE = my_wh;
After the change:

When the 2026_06 behavior change bundle is enabled in your account, the same command creates a container-runtime app using SYSTEM$ST_CONTAINER_RUNTIME_PY3_11:

-- Now implicitly uses SYSTEM$ST_CONTAINER_RUNTIME_PY3_11
CREATE STREAMLIT my_app
  FROM @my_stage/my_app
  MAIN_FILE = 'app.py'
  QUERY_WAREHOUSE = my_wh;

Container-runtime apps require a compute pool. If you do not include a COMPUTE_POOL clause, Snowflake uses the account-level default configured through the DEFAULT_STREAMLIT_COMPUTE_POOL account parameter, provided your primary role has USAGE on that pool. If no default is configured, you must specify COMPUTE_POOL explicitly.

To continue using warehouse runtime, specify RUNTIME_NAME explicitly:

CREATE STREAMLIT my_app
  FROM @my_stage/my_app
  MAIN_FILE = 'app.py'
  QUERY_WAREHOUSE = my_wh
  RUNTIME_NAME = 'SYSTEM$WAREHOUSE_RUNTIME';

How to update your code

Existing Streamlit in Snowflake apps are not affected. Only new CREATE STREAMLIT commands issued after the bundle is enabled. For all of the failures listed below, you can also resolve them by adding RUNTIME_NAME = 'SYSTEM$WAREHOUSE_RUNTIME' to opt back into warehouse runtime instead.

If your statements use features specific to warehouse runtime, they will fail after the bundle is enabled. The table below lists each failure and how to resolve it. To migrate existing apps proactively, see Migrating between runtime environments.

ErrorCauseResolution
STREAMLIT_NO_IMPORTS_CONTAINER_RUNTIMEIMPORTS clause is present. The IMPORTS property is only valid for warehouse runtime.Remove the IMPORTS clause and place package dependencies in a requirements.txt or pyproject.toml file in the app’s stage.
STREAMLIT_NO_EXECUTION_MODE_CONTAINER_RUNTIMEEXECUTE AS clause is present. Caller’s-rights and owner’s-rights execution modes are not supported on container runtime.Remove the EXECUTE AS clause, or specify RUNTIME_NAME = 'SYSTEM$WAREHOUSE_RUNTIME' to keep the required execution mode.
INVALID_PROPERTY for RUNTIME_NAME or COMPUTE_POOLSPCS is not enabled on the account, so both properties are unrecognized.Contact your Snowflake account team to enable SPCS, or specify RUNTIME_NAME = 'SYSTEM$WAREHOUSE_RUNTIME'.
STREAMLIT_COMPUTE_POOL_NOT_SETNo compute pool was specified and no account-level default is configured.Add COMPUTE_POOL = '<pool_name>' to the statement, or ask an admin to set the DEFAULT_STREAMLIT_COMPUTE_POOL account parameter.
STREAMLIT_VALIDATION_FAILURE_NO_USAGE_ON_COMPUTE_POOLThe Streamlit owner role lacks USAGE on the compute pool.Run GRANT USAGE ON COMPUTE POOL <pool_name> TO ROLE <owner_role>.
STREAMLIT_VALIDATION_FAILURE_NO_USAGE_ON_COMPUTE_POOL_PDBFor Personal Database Streamlits: the owner UBAC role (USER$<username>) lacks USAGE on the compute pool.Grant the user a role that has USAGE on the compute pool, or grant USAGE on the pool to a role the user already holds.
STREAMLIT_COMPUTE_POOL_NO_AUTO_RESUMEThe compute pool has auto-resume disabled; container Streamlits require auto-resume.Run ALTER COMPUTE POOL <pool_name> SET AUTO_RESUME = TRUE, or use a pool that already has auto-resume enabled.

Ref: 2342