2019 release notes
This page contains release notes for Streamlit versions released in 2019. For the latest version of Streamlit, see Release notes.
Version 0.52.0
Release date: December 20, 2019
Highlights:
-
π€ Preview release of the file uploader widget. To try it out just call
st.file_uploader
!Note that as a preview release things may change in the near future. Looking forward to hearing input from the community before we stabilize the API!
-
π Support for emoji codes in
st.write
andst.markdown
! Try it out withst.write("Hello :wave:")
.
Breaking changes:
- π§Ή
st.pyplot
now clears figures by default, since that's what you want 99% of the time. This allows you to create two or more Matplotlib charts without having to callpyplot.clf
every time. If you want to turn this behavior off, usest.pyplot(clear_figure=False)
- π£
st.cache
no longer checks for input mutations. This is the first change of our ongoing effort to simplify the caching system and prepare Streamlit for the launch of other caching primitives like Session State!
Version 0.51.0
Release date: November 30, 2019
Highlights:
- π You can now tweak the behavior of the file watcher with the config option
server.fileWatcherType
. Use it to switch between:auto
(default) : Streamlit will attempt to use the watchdog module, and falls back to polling if watchdog is not available.watchdog
: Force Streamlit to use the watchdog module.poll
: Force Streamlit to always use polling.none
: Streamlit will not watch files.
Notable bug fixes:
- Fix the "keyPrefix" option in static report sharing #724
- Add support for getColorX and getTargetColorX to DeckGL Chart #718
- Fixing Tornado on Windows + Python 3.8 #682
- Fall back on webbrowser if xdg-open is not installed on Linux #701
- Fixing number input spin buttons for Firefox #683
- Fixing CTRL+ENTER on Windows #699
- Do not automatically create credential file when in headless mode #467
Version 0.50.1
Release date: November 10, 2019
Highlights:
- π©βπ SymPy support and ability to draw mathematical expressions using LaTeX! See
st.latex
,st.markdown
, andst.write
. - π You can now set config options using environment variables. For example,
export STREAMLIT_SERVER_PORT=9876
. - π± Ability to call
streamlit run
directly 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 originating from the user's app.
Version 0.49.0
Release date: October 23, 2019
Highlights:
- π― New input widget for entering numbers with the keyboard:
st.number_input()
- πΊ 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 show
to set it up. Then share from top-right menu. - βοΈ Use
server.baseUrlPath
config option to set Streamlit's URL to something likehttp://domain.com/customPath
.
Notable bug fixes:
- Fixes numerous Windows bugs, including Issues #339 and #401.
Version 0.48.0
Release date: October 12, 2019
Highlights:
- π§ 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
@st.cache
hashing. - ποΈ Improved handling of widget state when Python file is modified.
- π Improved HTML support in
st.write
andst.markdown
. HTML is still unsafe, though!
Notable bug fixes:
- Fixes
@st.cache
bug related to having your Python environment on current working directory. Issue #242 - Fixes loading of root url
/
on Windows. Issue #244
Version 0.47.0
Release date: October 1, 2019
Highlights:
- π 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
st.sidebar.
instead ofst.
- β‘ 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.line_chart
,st.area_chart
andst.bar_chart
now 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
Breaking change:
- π‘οΈ 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!
Version 0.46.0
Release date: September 19, 2019
Highlights:
- β¨ Magic commands! Use
st.write
without typingst.write
. See https://docs.streamlit.io/en/latest/api.html#magic-commands - ποΈ New
st.multiselect
widget. - π Fixed numerous install issues so now you can use
pip install streamlit
even in Conda! We've therefore deactivated our Conda repo. - π Multiple bug fixes and additional polish in preparation for our launch!
Breaking change:
- π‘οΈ HTML tags are now blacklisted in
st.write
/st.markdown
by default. More information and a temporary work-around at: https://github.com/streamlit/streamlit/issues/152
Version 0.45.0
Release date: August 28, 2019
Highlights:
- π± 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.cached
functions, 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
st.slider
,st.selectbox
, andst.radio
. - π€ Automatically fixes the Matplotlib backend -- no need to edit .matplotlibrc
Version 0.44.0
Release date: July 28, 2019
Highlights:
- β‘ 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
Version 0.43.0
Release date: July 9, 2019
Highlights:
- β‘ Support for interactive widgets! ππ
Version 0.42.0
Release date: July 1, 2019
Highlights:
- πΎ 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
Version 0.41.0
Release date: June 24, 2019
Highlights:
- π 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
server.folderWatchBlacklist
config option. - β More robust against syntax errors on the user's script and imported modules
Version 0.40.0
Release date: June 10, 2019
Highlights:
- 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 run
to 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 server.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
What's next?
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.
Version 0.36.0
Release date: May 03, 2019
Highlights
- π£ββοΈ
st.progress()
now also accepts floats from 0.0β1.0 - π€― Improved rendering of long headers in DataFrames
- π Shared apps now default to HTTPS
Version 0.35.0
Release date: April 26, 2019
Highlights
- π· Bokeh support! Check out docs for
st.bokeh_chart
- β‘οΈ Improved the size and load time of saved apps
- βΎοΈ Implemented better error-catching throughout the codebase
Still have questions?
Our forums are full of helpful information and Streamlit experts.