The Streamlit Roadmap: Big Plans for 2020!

We created Streamlit to give the Python data community a new superpower: the ability to create beautiful apps as easily as writing Python scripts. We launched a minimal version of Streamlit in October with only basic output and interaction primitives. Despite these limitations, the response has been overwhelming: almost 7,000 Github stars and 13,000 monthly active users in less than four months! Most exciting has been to see the emergence of an intricate archipelago of Streamlit apps, from simple, fun demos of open-source projects, to community-spanning infrastructure and complex internal tooling at major companies used in production by hundreds of employees.

Inspired by your energy and creativity, we’re devoting 2020 to giving the Streamlit community a vastly expanded new set of superpowers. Our goal is to make Streamlit not only the most productive (and fun!) app building experience in the Python ecosystem, but also the most powerful by adding:

  • Improved caching that’s easier to use and understand
  • A custom component system to extend Streamlit’s capabilities in the browser
  • Layout primitives to customize layout and other visual elements
  • User-programmable state, especially for multi-page apps
  • Enabling you to easily deploy apps from Streamlit (closed source)

A detailed feature list is on GitHub, and it’s really just a distillation of the ideas coming from Streamlit’s amazingly smart and creative community. Please help us understand what to build by submitting issues and pull requests, and by sharing your thoughts in the comments below.

Caching

Caching enables you to reuse data and computation in your apps, allowing scripts to run quickly by saving the results of expensive functions. We recently released hash_funcs so that you can set your own hash function for specific data types like TensorFlow sessions or live database connections. And we added more documentation on basic and advanced caching. Coming up are even more improvements to caching for other function types and some added magic to make everything around caching even more straightforward. Please share thoughts here about how you’d like to see caching work.

Custom Components

The Streamlit custom components system will give you the ability to write arbitrary React or Javascript code and insert it into your app. This opens the door for a lot of possibilities for custom solutions to visualization, interactivity with chart/maps/tables, and other unique needs of your app. Please share thoughts here about how you’d like to see custom components work.

Customizable Layout

Our community has already created some great style and layout resources (and we have no plans to deprecate html, unsafe_allow_html=True!), but Streamlit in its current form doesn’t make layout nearly as easy as we think it should be. We’ll be adding style and customization options to Streamlit, and also building new layout primitives: horizontal, grid, scroll views, and more. This is a tricky one to get right because layouts make up some of the most complex parts of display logic like CSS, not to mention it’s really easy to make these layouts look ugly. What are your thoughts? What are your favorite layout systems in other languages? Please share thoughts here about how you’d like to see layout work.

Programmable State

Right now, getting a Streamlit app to store internal state, like information a user entered in a form, is simply too tricky. There are some workarounds for session state, but we want to give you a baked-in and elegant version of programmable state so you can build apps with sequential logic, apps with multiple pages, apps that incrementally ask users for input, and so on. Please share thoughts here about the use cases you’d like to see supported.

Deploy

We know that building a great app is only half of the equation. You also want to deploy and share your app with others. We want Streamlit’s deployment workflow to be as elegant and awesome as its app-building workflow. That’s why we’re creating Streamlit for Teams: a single-click deployment solution for Streamlit apps with built-in enterprise-grade features like auth, logging, and auto-scaling. The first version of this will be rolled out for free to the community in a few months (and we’re expanding the beta soon, apologies if we haven’t gotten back to you yet!).

For now, you can check out some great community resources about deploying on AWS, GCP, Heroku, and Azure, and you help us by providing feedback on how you’d like to use Streamlit in your company.

We’ve been tinkering with and refining these features over at Streamlit HQ. We’re so excited to share these new superpowers and iterate on them with the community!

Thank you for your part in the Streamlit journey and here’s to a great 2020 :heart:

Resources

Roadmap
Documentation
GitHub
Changelog

32 Likes

this is great

1 Like

This sounds great! Do you hava any fixed time plan/dead lines or priorities (e.g. Layouts vs. Caching)?

Best,
Marius

1 Like

Hey @mariusgarbowski and welcome to the community,

Our two next big pushes are going to be around Custom Components [our new working name for Plugins] and deployment! We should have more info coming soon for both :heart:

1 Like

Hi,

Great…! , really look forward for all the new stuff @ streamlit.
Though my idea mentioned below is very vague, I feel there is a strong need to use the ML concepts in component coding or language specifics. What I mean is that there should be a ML engine for each session that can learn and improve the aspect of component coding and development.