Rant about Streamlit on Snowflake

I used Streamlit Share for the longest to share prototypes with folks.. But now I had this use case where I needed to create an app for a private repo.

I never used snowflake before so I dedicated 4-5 hours to make streamlit work with Snowflake. The number of challenges I faced and the things I had to learn are stupidly too much:

  • Writing commands in Snowflake (managing workbooks, creating secrets, integrations, etc.)
  • Integrating a git repo with Snowflake
  • Setting up CI/CD from Github actions (still WIP)
  • The new interface to edit the app.py file instead of standard UI
    And then after everything was done.. I faced some package dependency issue and then snowflake docs asked me to learn about more things:
  • conda approved packages
  • environment.yml to update and manage packages

At that point, I was just too tired and decided to drop.. I might pick it up again, or maybe I might just damn it spin it on a VM in Azure..

Irrespective, streamlit cloud was easy (share streamlit) – couple of clicks.. this one is painful, like really painful.. Is it just me or do other folks here think likewise?

2 Likes

I use streamlit cloud to deploy from private repos:

Thanks for the honest feedback!

I sympathize with the pain. Some of the issues you bring up are in the process of getting addressed, and others I’d like more information on, if you can find the time:

  • Writing commands in Snowflake (managing workbooks, creating secrets, integrations, etc.)

Not sure what this one means. Can you clarify?
Are you talking about setting some things up using SQL commands rather than a UI?

  • Integrating a git repo with Snowflake

Totally agreed — this needs to be a lot simpler! The Git team is actively working on a better solution.
The best I can say right now is that those frustrating integration steps are a one-time cost. After everything is set up, it should work as expected. But yeah, point taken.

  • Setting up CI/CD from Github actions (still WIP)

What do you mean, exactly? Once you set up Git you shouldn’t need to do anything via Github actions, but I assume you’re referring to something else here…

  • The new interface to edit the app.py file instead of standard UI

Can you provide more information?

Are you talking about Snowflake’s Classic UI vs the new UI (aka Snowsight)? The Classic → Snowsight upgrade is something Snowflake has been carefully rolling out with users for ~4 years now. If this came as a surprise to you LMK so I can poke people here about improving our messaging efforts!

Now, I know this isn’t much help to you, but just so other readers understand what’s going on:

  1. Snowflake introduced a new UI a few years ago
  2. Snowflake has been messaging admins since then to nudge them into switching the default UI for their orgs.
  3. For the past 3 years, new Snowflake accounts only have access to the new UI
  4. As a result or (2) and (3), the vast majority of Snowflake users currently use the new UI.
    …so for users who have made the switch, their experience should be smoother here.

BTW I totally get it that relearning a UI is a pain, when all you want to do is get your work done. But let me also praise some things Snowsight has going for it: Streamlit, Notebooks, Dashboards, the Marketplace, point-and-click creation of ML services/models, visual representations of your data pipelines, and so much more.

Snowsight is where all Snowflake UI development happens at this point, so if we haven’t burned you too bad with this experience, I’d love it if you’d gave it another try!

And then after everything was done.. I faced some package dependency issue and then snowflake docs asked me to learn about more things:

  • conda approved packages
  • environment.yml to update and manage packages

Yeah, I personally find Conda a total pain too. Weird DX and super slow. Give me uv any day!

Thankfully, soon we’ll be launching a container-based version of Streamlit in Snowflake that does away with a lot of the weirdness — including allowing you to install packages from PyPI (with uv behind the scenes :wink: )

I started looking at using and gave up, too complex for simple tasks

I also experienced difficulties same as you, that I deploy my app with private code in digitalocean.

Can anyone site a good tutorial on how to deploy a streamlit app in snowflake?

The weird encounter I had with snowflake is that I am receiving emails from snowflake to do something about my account, app settings, etc. and this needs an action from me because something will happen if I don’t act. Have to read some documents because of that.