The next frontier for Streamlit

Dear Python developers and wonderful Streamlit community, ❤️

We come bearing exciting news about the future of Streamlit—amazing new superpowers, mind-bending new use cases, and powerful new technologies.

But first, let’s take a look at the last year.

In October 2021, we hit a big milestone and launched Streamlit 1.0. Then a few months later we announced we’d be growing our “baby” with new parents. Yup. If you missed the news—six months ago we joined Snowflake. Snowflake’s commitment to Streamlit and open source is deep, and it’s giving us even more support to build the Streamlit library and the community platforms for years to come. Yay!

So, what’s next?

We’re thinking bigger than ever, looking far into the future, and asking ourselves, “What will Streamlit be when it grows up?” In short, we want to see Streamlit become the essential UI layer for Python. We want to take our amazing dev experience and turn it up to 11—taking your daily pain points and turning them into magical moments. And we want these new superpowers to benefit the entire Python community—regardless of skill level, application domain, deployment platform, or ability to pay.

Without further ado, here are our plans for next year and beyond:

📀 The data trio: st.connection, st.dataframe, and st.database

We want to make the path from data to app as frictionless as possible. st.connection will let you connect to external databases and APIs with a single line of code. st.database will launch a small database alongside every Streamlit app, so you can permanently store data without any setup. Andst.dataframe will get a number of improvements—from filtering to sorting, editability, showing images, and much more.

🕹 Interactive everything: charts, tables, maps, and more!

One of the most upvoted feature requests is to make output elements interactive. Click on a chart datapoint, a map location, or a dataframe row, and the Python script will catch that event on the Python side and update your app. This allows extremely cool new use cases, e.g., showing the details for a selected dataframe row or running a prediction on some data selected in a chart.

🎨 Visual customization ++

Our focus has always been on making your app as beautiful out-of-the-box as possible. But if you want to customize it, the current options are limiting. Grid layout, more options for colors, logo positioning, and better themes are just some of the options we’re looking at. But we’re also wondering if we can go beyond that and better integrate with CSS or offer other ways to manipulate styling. Stay tuned!

🧩 Custom components v2

Today, you can extend Streamlit by building custom components, but this requires advanced JavaScript skills. Plus, it’s time-consuming (even for experts). We want to crack open this box to rethink how we’re doing extensibility, to make it easier to do more with less. Components should be able to interact with more elements in apps, it should be incredibly easy to publish Python- or HTML-only components, and it should be effortless to discover and use great community-built components.

🧠 ML is amazing in Streamlit

It feels like every day there is a new, amazing breakthrough in ML and AI. The boundaries of what’s possible are being pushed—and we want to push alongside it. We want to make it easier to connect to and work with models and pipelines, integrate with the machine learning tools you love, and create the visualization and widgets you need to show off your work.

🐞 Debugging is gosh darn delightful

Building a Streamlit app is pretty delightful, so we want to make debugging your code just as frictionless. We’re going back to the mat to think about what it means for you as a developer—including a better in-app display of exceptions and logs, built-in memory and runtime profilers, and improvements to how Streamlit works in the terminal and in your favorite editor.

🎈 Streamlit Cloud becomes a hub for community discovery

A huge part of developing Streamlit apps is sharing them with other developers for feedback, being inspired by the work of others in the community, and finding app examples and code snippets to use. Streamlit Cloud is (and will continue to be!) a free platform for sharing, but we see the potential for so much more. The potential to offer a true hub for you and everyone in the community. We want to continue to remove all barriers to easy development, sharing, and discovery—helping you to get started coding directly on the cloud, show off your work to a broader audience, save inspiring and useful bits of code, encounter trending and relevant apps, meet collaborators, and uncover amazing community-created components.

λ Towards stateless Streamlit…

We’re investigating how to expand the ways Streamlit can be hosted, including implementing a stateless model so it works well in a serverless computing environment. This is part of a broader effort to make it easy for you to run Streamlit on any infrastructure and to rethink how it runs—to open new possibilities for sharing, state, compute, and more.

🏁 Wrapping up

We want to make working in Streamlit your daily source of joy. What issues have we missed? What new features do we need to develop? Please come to the forum and tell us!

We hope you’ll keep sharing your apps, components, videos, and blog posts with us. Your work is an incredible source of inspiration, and it makes us want to build even more amazing things with you in the future. Thank you. 🙏

Love,

Amanda, Adrien, Thiago, Johannes, TC, and everyone at Streamlit. ❤️

P.S.: Streamlit in Snowflake is coming soon! ❄️ See a little preview here.

P.P.S.: Want to help with Streamlit full-time? We’re hiring!

Forward-Looking Statements

This post contains express and implied forwarding-looking statements, which are subject to a number of risks, uncertainties and assumptions, including those described under the heading “Risk Factors” in quarterly and annual reports that Snowflake files with the Securities and Exchange Commission. In light of these risks, uncertainties, and assumptions, actual results could differ materially and adversely from those anticipated or implied in the forward-looking statements. As a result, you should not rely on any forwarding-looking statements as predictions of future events.

Š 2022 Snowflake Inc. All rights reserved. Snowflake, the Snowflake logo, and all other Snowflake product, feature and service names mentioned herein are registered trademarks or trademarks of Snowflake Inc. in the United States and other countries. All other brand names or logos mentioned or used herein are for identification purposes only and may be the trademarks of their respective holder(s). Snowflake may not be associated with, or be sponsored or endorsed by, any such holder(s).


This is a companion discussion topic for the original entry at https://blog.streamlit.io/the-next-frontier-for-streamlit/
5 Likes

This is really excellent! It is amazing to see the future developments that genuinely will take Streamlit to a whole new level!

My first impressions:

The data trio

This is very nice. I have Python functions already written to do all of these things, but will be good to have built in solutions.
The database, will it be sqlite?
I currently connect a streamlit app (locally) to a sqlite database and it is F.A.S.T!

Interactive everything

Perfect! I currently use community components for all these things, but again, will be lovely to have built in solutions.
In terms of tables, for me panel Tabulator or Aggrid are really great examples of where Streamlit could take this. Selecting rows, filtering the table, making cells editable seem to be the key points that people like to see.

Custom components v2

Custom components is something I still haven’t been able to get my head around so making this simpler would be extremely welcome.

Streamlit Cloud

Coding directly on the cloud sound perfect for people who don’t have Python installed (some work colleagues have very locked down PCs).
I’ve been using stlite to debug some forum issues which has been great.
Personally I would see it as a useful way to “deploy” apps. I’d likely still develop locally, then when I wanted to publish it would just be easier to copy paste/upload files, rather than linking a Github repo.

Towards stateless Streamlit

Would really love to hear more about plans in this area, if you have any details :–)

Honestly, best news of the day. Thanks v much streamlit team, you are doing amazing stuff!

3 Likes

Love the idea of the database - I’ve just been writing to a yaml file which probably not great for async operations. I’ve shied away from sqlite3 too, because I’m not familiar with SQL, so hopefully Streamlit’s db will be more pythonic?

1 Like

Thanks @LukeF for your detailed response! Super helpful! For st.database, I think we’re considering NoSQL.

1 Like

@kevinlinxc awesome! Thanks for the feedback. We’ll share this with the team!

The database trio sounds great.

WIth regard to custom components, the overall vision sounds great, but it is overly abstract, so let me make it very specific. No one can use Streamlit to run a business, or anything that requires cost-recovery of any kind, unless it is easy to install javascript widgets for Google Analytics, Google Ads, Mailchimp, Stripe, and a handul of other key enablers.

With regard to Cloud as sharing portal – I don’t have any of my complex applications on Cloud because they all make extensive use of local data and scripts. A VM option on Cloud would be fantastic. I’d rather have a VM than docker or whatever because I like to do my tinkering locally.

Partner with HuggingFace, OpenAI, Google CoLab.

1 Like

I don’t know if it is possible but I would love to be able to create my streamlit app into a mobile app and a desktop app :heart_eyes:

Hi, this is a great high-level roadmap and thanks for sharing it publicly.

We’ve been building our commercial app using Streamlit for the past several months. It has been great for productivity. Streamlit excels at making it dead easy to spit out nicely formatted data on the screen. This is huge.

But there are two areas that are pretty major gaps if Streamlit intends to graduate from a prototyping / internal tooling framework to one where commercial applications are developed (is the latter even a goal?)

Control over full page layout - Creating a nice UX around page content is very hard and frustrating (as you know, controlling page layout, sidebar, header bar, navigation etc. has no first-class support). Visual customization ++ and Custom components v2 themes on your roadmap capture this it seems. However, I feel it hasn’t been prioritised enough when looking at the quarter-level plans. Maybe you are working on it right now but only materialising middle of next year, which is fair enough. I can understand this is likely a pretty major change.

Low-level server API - provide access to read/write HTTP headers, lifecycle hooks, middleware. The most significant use case we’ve struggled with is authN/Z. persisting an auth token / JWT across sessions can only be done it seems using cookies rather than a standard authorization header (if we’ve missed a trick please tell us). How can one instrument an app with observability tracing tools? Setting up REST endpoint using frameworks isn’t possible. Looking at the architecture it seems like most if not all of this can be enabled by exposing the web server instance maybe with a few lifecycle hooks.

Overall it would be great if you all took a layered approach and gave access to the lower layers as an escape hatch.

Thanks :pray: