2022 release notes
This page contains release notes for Streamlit versions released in 2022. For the latest version of Streamlit, see Release notes.
Version 1.16.0
Release date: December 14, 2022
Highlights
- 👩🎨 Introducing a new Streamlit theme for Altair, Plotly, and Vega-Lite charts! Check out our blog post for more information.
- 🎨 Streamlit now supports colored text in all commands that accept Markdown, including
st.markdown
,st.header
, and more. Learn more in our documentation.
Notable Changes
- 🔁 Functions cached with
st.experimental_memo
orst.experimental_singleton
can contain Streamlit media elements and forms. - ⛄ All Streamlit commands that accept pandas DataFrames as input also support Snowpark and PySpark DataFrames.
- 🏷 st.checkbox and st.metric can customize how to hide their labels with the
label_visibility
parameter.
Other Changes
- 🗺️
st.map
improvements: support for upper case columns and better exception messages (#5679, #5792). - 🐞 Bug fix:
st.plotly_chart
respects the figure's height attribute and theuse_container_width
parameter (#5779). - 🪲 Bug fix: all commands with the
icon
parameter such as st.error, st.warning, etc, can contain emojis with variant selectors (#5583). - 🐝 Bug fix: prevent
st.camera_input
from jittering when resizing the browser window (#5661). - 🐜 Bug fix: update exception layout to avoid overflow of stack traces (#5700).
Version 1.15.0
Release date: November 17, 2022
Notable Changes
- 💅 Widget labels can contain inline Markdown. See our docs and demo app for more info.
- 🎵
st.audio
now supports playing audio data passed in as NumPy arrays with the keyword-onlysample_rate
parameter. - 🔁 Functions cached with
st.experimental_memo
orst.experimental_singleton
can contain Streamlit widgets using theexperimental_allow_widgets
parameter. This allows caching checkboxes, sliders, radio buttons, and more!
Other Changes
- 👩🎨 Design tweak to prevent jittering in sliders (#5612).
- 🐛 Bug fix: links in headers are red, not blue (#5609).
- 🐞 Bug fix: properly resize Plotly charts when exiting fullscreen (#5645).
- 🐝: Bug fix: don't accidentally trigger
st.balloons
andst.snow
(#5401).
Version 1.14.0
Release date: October 27, 2022
Highlights
- 🎨
st.button
andst.form_submit_button
support designating buttons as "primary" (for additional emphasis) or "secondary" (for normal buttons) with thetype
keyword-only parameter.
Notable Changes
- 🤏
st.multiselect
has a keyword-onlymax_selections
parameter to limit the number of options that can be selected at a time. - 📄
st.form_submit_button
now has thedisabled
parameter that removes interactivity.
Other Changes
- 🏓
st.dataframe
andst.table
accept categorical intervals as input (#5395). - ⚡ Performance improvements to Plotly charts (#5542).
- 🪲 Bug fix:
st.download_button
supports non-latin1 characters in filenames (#5465). - 🐞 Bug fix: Allow
st.image
to render a local GIF as a GIF, not as a static PNG (#5438). - 📱 Design tweaks to the sidebar in multipage apps (#5538, #5445, #5559).
- 📊 Improvements to the axis configuration for built-in charts (#5412).
- 🔧 Memo and singleton improvements: support text values for
show_spinner
, usedatetime.timedelta
objects asttl
parameter value, properly hash PIL images andEnum
classes, show better error messages when returning unevaluated dataframes (#5447, #5413, #5504, #5426, #5515). - 🔍 Zoom buttons in maps created with
st.map
andst.pydeck_chart
use light or dark style based on the app's theme (#5479). - 🗜 Websocket headers from the current session's incoming WebSocket request can be obtained from a new "internal" (i.e.: subject to change without deprecation) API (#5457).
- 📝 Improve the text that gets printed when you first install and use Streamlit (#5473).
Version 1.13.0
Release date: September 22, 2022
Notable Changes
- 🏷 Widgets can customize how to hide their labels with the
label_visibility
parameter. - 🔍
st.map
adds zoom buttons to the map by default. - ↔️
st.dataframe
supports theuse_container_width
parameter to stretch across the full container width. - 🪄 Improvements to
st.dataframe
sizing: Column width calculation respects column headers, supports double click between column headers to autosize, better fullscreen support, and fixes the issue with thewidth
parameter.
Other Changes
- ⌨️
st.time_input
allows for keyboard-only input (#5194). - 💿
st.memo
will warn the user when usingttl
andpersist
keyword argument together (#5032). - 🔢
st.number_input
returns consistent type after rerun (#5359). - 🚒
st.sidebar
UI fixes including a fix for scrollbars in Firefox browsers (#5157, #5324). - 👩💻 Improvements to usage metrics to guide API development.
- ✍️ More type hints! (#5191, #5192, #5242, #5243, #5244, #5245, #5246) Thanks harahu!
Version 1.12.0
Release date: August 11, 2022
Highlights
- 📊 Built-in charts (e.g.
st.line_chart
) get a brand-new look and parametersx
andy
! Check out our blog post for more information.
Notable Changes
- ⏯ Functions cached with
st.experimental_memo
orst.experimental_singleton
can now contain staticst
commands. This allows caching text, charts, dataframes, and more! - ↔️ The sidebar is now resizable via drag and drop.
- ☎️
st.info
,st.success
,st.error
, andst.warning
got a redesign and have a new keyword-only parameter:icon
.
Other Changes
- 🎚️
st.select_slider
correctly handles all floats now (#4973, #4978). - 🔢
st.multi_select
can take values from enums (#4987). - 🍊
st.slider
range values can now be set throughst.session_state
(#5007). - 🎨
st.progress
got a redesign (#5011, #5086). - 🔘
st.radio
better deals with list-like dataframes (#5021). - 🧞♂️
st.cache
properly handles JSON files now (#5023). - ⚓️ Headers render markdown now when the
anchor
parameter is set (#5038). - 🗻
st.image
can now load SVGs from Inkscape (#5040). - 🗺️
st.map
andst.pydeck_chart
use light or dark style based on the app's theme (#5074, #5108). - 🎈 Clicks on elements below
st.balloons
andst.snow
don't get blocked anymore (#5098). - 🔝 Embedded apps have lower top padding (#5111).
- 💅 Adjusted padding and alignment for widgets, charts, and dataframes (#4995, #5061, #5081).
- ✍️ More type hints! (#4926, #4932, #4933)
Version 1.11.0
Release date: July 14, 2022
Highlights
- 🗂 Introducing
st.tabs
to have tab containers in your app. See our documentation on how to use this feature.
Notable Changes
- ℹ️
st.metric
supports tooltips with thehelp
keyword parameter. - 🚇
st.columns
supports setting the gap size between columns with thegap
keyword parameter.
Other Changes
- 💅 Design tweaks to
st.selectbox
,st.expander
,st.spinner
(#4801). - 📱 The sidebar will close when users select a page from the navigation menu on mobile devices (#4851).
- 🧠
st.memo
supports dataclasses! (#4850) - 🏎 Bug fix for a race condition that destroyed widget state with rapid interaction (#4882).
- 🏓
st.table
presents overflowing content to be scrollable when placed inside columns and expanders (#4934). - 🐍 Types: More updated type annotations across Streamlit! (#4808, #4809, #4856)
Version 1.10.0
Release date: June 2, 2022
Highlights
- 📖 Introducing native support for multipage apps! Check out our blog post and try out our new
streamlit hello
.
Notable Changes
- ✨
st.dataframe
has been redesigned. - 🔘
st.radio
has ahorizontal
keyword-only parameter to display options horizontally. - ⚠️ Streamlit Community Cloud will support richer exception formatting.
- 🏂 Get user information on private apps using
st.experimental_user
.
Other Changes
- 📊 Upgraded Vega-Lite library to support even more interactive charting improvements. See their release notes to find out more. (#4751).
- 📈
st.vega_lite_chart
will respond to updates, particularly in response to input widgets (#4736). - 💬
st.markdown
with long text will always wrap (#4696). - 📦 Support for PDM (#4724).
- ✍️ Types: Updated type annotations across Streamlit! (#4679, #4680, #4681, #4682, #4683, #4684, #4685, #4686, #4687, #4688, #4690, #4703, #4704, #4705, #4706, #4707, #4708, #4710, #4723, #4733).
Version 1.9.0
Release date: May 4, 2022
Notable Changes
- 🪗
st.json
now supports a keyword-only argument,expanded
on whether the JSON should be expanded by default (defaults toTrue
). - 🏃♀️ More performance improvements from reducing redundant work each script run.
Other Changes
- 🏇 Widgets when
disabled
is set/unset will maintain its value (#4527). - 🧪 Experimental feature to increase the speed of reruns using configuration
runner.fastReruns
. See #4628 for the known issues in enabling this feature. - 🗺️ DataFrame timestamps support UTC offset (in addition to time zone notation) (#4669).
Version 1.8.0
Release date: March 24, 2022
Notable Changes
- 🏃♀️ Dataframes should see performance improvements (#4463).
Other Changes
- 🕰
st.slider
handles timezones better by removing timezone conversions on the backend (#4348). - 👩🎨 Design improvements to our header (#4496).
Version 1.7.0
Release date: March 3, 2022
Highlights
- Introducing
st.snow
, celebrating our acquisition by Snowflake! See more information in our blog post.
Version 1.6.0
Release date: Feb 24, 2022
Other Changes
- 🗜 WebSocket compression is now disabled by default, which will improve CPU and latency performance for large dataframes. You can use the
server.enableWebsocketCompression
configuration option to re-enable it if you find the increased network traffic more impactful. - ☑️ 🔘 Radio and checkboxes improve focus on Keyboard navigation (#4308).
Version 1.5.0
Release date: Jan 27, 2022
Notable Changes
- 🌟 Favicon defaults to a PNG to allow for transparency (#4272).
- 🚦 Select Slider Widget now has the
disabled
parameter that removes interactivity (completing all of our widgets) (#4314).
Other Changes
- 🔤 Improvements to our markdown library to provide better support for HTML (specifically nested HTML) (#4221).
- 📖 Expanders maintain their expanded state better when multiple expanders are present (#4290).
- 🗳 Improved file uploader and camera input to call its
on_change
handler only when necessary (#4270).
Version 1.4.0
Release date: Jan 13, 2022
Highlights
- 📸 Introducing
st.camera_input
for uploading images straight from your camera.
Notable Changes
- 🚦 Widgets now have the
disabled
parameter that removes interactivity. - 🚮 Clear
st.experimental_memo
andst.experimental_singleton
programmatically by using theclear()
method on a cached function. - 📨 Developers can now configure the maximum size of a message to accommodate larger messages within the Streamlit application. See
server.maxMessageSize
. - 🐍 We formally added support for Python 3.10.
Other Changes
- 😵💫 Calling
str
orrepr
onthreading.current_thread()
does not cause a RecursionError (#4172). - 📹 Gracefully stop screencast recording when user removes permission to record (#4180).
- 🌇 Better scale images by using a higher-quality image bilinear resampling algorithm (#4159).
Still have questions?
Our forums are full of helpful information and Streamlit experts.