See highlights, bug fixes, and known issues for Streamlit releases:
To upgrade to the latest version of Streamlit, run:
$ pip install --upgrade streamlit
Release date: November 10, 2019
- 👩🎓 SymPy support and ability to draw mathematical expressions using LaTeX! See
- 🌄 You can now set config options using environment variables. For example,
- 🐱 Ability to call
streamlit rundirectly with Github and Gist URLs. No need to grab the “raw” URL first!
- 📃 Cleaner exception stack traces. We now remove all Streamlit-specific code from stack traces generating from the user’s app.
Release date: October 23, 2019
- 💯 New input widget for entering numbers with the keyboard:
- 📺 Audio/video improvements: ability to load from a URL, to embed YouTube videos, and to set the start position.
- 🤝 You can now (once again) share static snapshots of your apps to S3! See
the S3 section of
streamlit config showto set it up. Then share from top-right menu.
- ⚙️ Use
server.baseUrlPathconfig option to set Streamlit’s URL to something like
Notable bug fixes:
Release date: October 12, 2019
- 🔧 Ability to set config options as command line flags or in a local config file.
- ↕️ You can now maximize charts and images!
- ⚡ Streamlit is now much faster when writing data in quick succession to your app.
- ✳️ Ability to blacklist folder globs from “run on save” and
- 🎛️ Improved handling of widget state when Python file is modified.
- 🙈 Improved HTML support in
st.markdown. HTML is still unsafe, though!
Notable bug fixes:
Release date: October 1, 2019
- 🌄 New hello.py showing off 4 glorious Streamlit apps. Try it out!
- 🔄 Streamlit now automatically selects an unused port when 8501 is already in use.
- 🎁 Sidebar support is now out of beta! Just start any command with
- ⚡ Performance improvements: we added a cache to our websocket layer so we no longer re-send data to the browser when it hasn’t changed between runs
- 📈 Our “native” charts
st.bar_chartnow use Altair behind the scenes
- 🔫 Improved widgets: custom st.slider labels; default values in multiselect
- 🕵️♀️ The filesystem watcher now ignores hidden folders and virtual environments
- 💅 Plus lots of polish around caching and widget state management
- 🛡️ We have temporarily disabled support for sharing static “snapshots” of Streamlit apps. Now that we’re no longer in a limited-access beta, we need to make sure sharing is well thought through and abides by laws like the DMCA. But we’re working on a solution!
Release date: September 19, 2019
- ✨ Magic commands! Use
st.write. See https://streamlit.io/docs/api.html#magic-commands
- 🎛️ New
- 🐍 Fixed numerous install issues so now you can use
pip install streamliteven in Conda! We’ve therefore deactivated our Conda repo.
- 🐞 Multiple bug fixes and additional polish in preparation for our launch!
- 🛡️ HTML tags are now blacklisted in
st.markdownby default. More information and a temporary work-around at: https://github.com/streamlit/streamlit/issues/152
Release date: August 28, 2019
- 😱 Experimental support for sidebar! Let us know if you want to be a beta tester.
- 🎁 Completely redesigned
st.cache! Much more performant, has a cleaner API, support for caching functions called by
@st.cachedfunctions, user-friendly error messages, and much more!
- 🖼️ Lightning fast
st.image, ability to choose between JPEG and PNG compression, and between RGB and BGR (for OpenCV).
- 💡 Smarter API for
- 🤖 Automatically fixes the Matplotlib backend – no need to edit .matplotlibrc
Release date: July 28, 2019
• ⚡ Lightning-fast reconnect when you do a ctrl-c/rerun on your Streamlit code • 📣 Useful error messages when the connection fails • 💎 Fixed multiple bugs and improved polish of our newly-released interactive widgets
Release date: July 1, 2019
- 💾 Ability to save Vega-Lite and Altair charts to SVG or PNG
- 🐇 We now cache JS files in your browser for faster loading
- ⛔ Improvements to error-handling inside Streamlit apps
Release date: June 24, 2019
- 📈 Greatly improved our support for named datasets in Vega-Lite and Altair
- 🙄 Added ability to ignore certain folders when watching for file changes. See the
- ☔ More robust against syntax errors on the user’s script and imported modules
Release date: June 10, 2019
- Streamlit is more than 10x faster. Just save and watch your analyses update instantly.
- We changed how you run Streamlit apps:
$ streamlit run your_script.py [script args]
- Unlike the previous versions of Streamlit,
streamlit run [script] [script args]creates a server (now you don’t need to worry if the proxy is up). To kill the server, all you need to do is hit Ctrl+c.
Why is this so much faster?
Now, Streamlit keeps a single Python session running until you kill the server. This means that Streamlit can re-run your code without kicking off a new process; imported libraries are cached to memory. An added bonus is that
st.cache now caches to memory instead of to disk.
What happens if I run Streamlit the old way?
If you run
$ python your_script.py the script will execute from top to bottom, but won’t produce a Streamlit app.
What are the limitations of the new architecture?
- To switch Streamlit apps, first you have to kill the Streamlit server with Ctrl-c. Then, you can use
streamlit runto generate the next app.
- Streamlit only works when used inside Python files, not interactively from the Python REPL.
What else do I need to know?
The strings we print to the command line when liveSave is on have been cleaned up. You may need to adjust any RegEx that depends on those.
A number of config options have been renamed:
Old config New config proxy.isRemote server.headless proxy.liveSave server.liveSave proxy.runOnSave, proxy.watchFileSystem server.runOnSave proxy.enableCORS server.enableCORS proxy.port server.port browser.proxyAddress browser.serverAddress browser.proxyPort browser.serverPort client.waitForProxySecs n/a client.throttleSecs n/a client.tryToOutliveProxy n/a client.proxyAddress n/a client.proxyPort n/a proxy.autoCloseDelaySecs n/a proxy.reportExpirationSecs n/a
What if something breaks?
If the new Streamlit isn’t working, please let us know by Slack or email. You can downgrade at any time with these commands:
$ pip install --upgrade streamlit==0.37
$ conda install streamlit=0.37
Thank you for staying with us on this journey! This version of Streamlit lays the foundation for interactive widgets, a new feature of Streamlit we’re really excited to share with you in the next few months.
Release date: May 03, 2019
st.progress()now also accepts floats from 0.0–1.0
- 🤯 Improved rendering of long headers in DataFrames
- 🔐 Shared apps now default to HTTPS