Release notes
This page lists highlights, bug fixes, and known issues for the latest release of Streamlit. If you're looking for information about nightly releases or experimental features, see Pre-release features.
Upgrade Streamlit
Tip
To upgrade to the latest version of Streamlit, run:
pip install --upgrade streamlit
Version 1.52.0 (latest)
Release date: December 3, 2025
Highlights
- 📅 Introducing
st.datetime_inputto set date and time in a single widget. - 📩 To avoid blocking your script, you can pass a callable to
st.download_buttonfor on-demand download generation (#12942, #5053). - 🎤
st.chat_inputcan optionally accept audio input (#12836, #13054).
Notable Changes
- 🎹 You can configure keyboard shortcuts for buttons (#12975, #1291).
- ❓ You can now pass query parameters to
st.switch_pageandst.page_link(#13027, #8102, #8112, #13093). - 〰️
st.htmlhas a newunsafe_allow_javascriptparameter to execute JavaScript (#12918). - ⬆️
st.metrichas a newdelta_arrowparameter to configure the visibility and orientation of the delta arrow (#12982, #4775). - ⌨️ You can configure the horizontal alignment of
st.markdown,st.caption,st.title,st.header,st.subheader, andst.textwith a newtext_alignmentparameter (#13032, #4109, #13034, #13036). - 🌀 You can use a spinner everywhere you can set an
iconand in theavatarparameter ofst.chat_message. The spinner can't be used as a page favicon (#13045, #6415). - 🛠️ You can now add tooltips to
st.badge(#12897, #12878). Thanks, marcolanfranchi! - 🕳️ You can configure placeholder text for null values in
st.dataframeandst.data_editorwith a newplaceholderparameter (#12968, #7360). - 🔑 To prevent widgets from resetting when you change a parameter, widgets are transitioning to an identity based only on their keys (if provided). The following widgets use only their key for their identity:
st.file_uploaderst.camera_input
- ↕️
st.plotly_charthas a height parameter to use with flex containers (#12593). - ↔️
st.container,st.dataframe, andst.data_editorsupportwidth="content"(#12848, #12875, #12391). - 🐍 Streamlit supports Python 3.14 and Vega-Altair 6!
- 👻
st.bokeh_charthas been removed. Use thestreamlit-bokehcustom component instead. - ☠️
**kwargsis deprecated inst.vega_lite_chart(#13141). - 💩 The
.add_rows()method is under consideration for removal. Please leave feedback (#13063). - 👥 We're improving community contributions by using a public workflow for discussing feature specs (#12248).
Other Changes
- 🪥 For better performance, Streamlit uses
uvloopif it's installed (#13047). - 🧼 For improved performance, Markdown plugins are lazy loaded (#13152).
- 🧽 To improve load times, we reduced the bundle size (#13071, #13077, #13099, #13115, #13128).
- 🛁 To improve performance, we've refactored session context data (#12788, #12789, #12790, #12791).
- 🚿 The hovering performance of
st.line_chartwas improved (#13156, #13154). - 🧹
st.metricwas optimized to prevent poor hovering performance with large data sets (#12983). - 👽 The
packagingPython dependency is no longer version-capped (#13073). - 🫥 For clarity, Streamlit logs a warning if you try to hide a non-range index when using
st.data_editorwithnum_rows="dynamic". A non-range index must be editable to add rows (#12978, #8263). - 🦋 Bug fix: Streamlit auth raises a warning instead of an error when browser back navigation revisits a consumed OAuth callback (#13127, #13101).
- 🦀 Bug fix: The WebSocket timeout was increased on Android to improve
st.file_uploaderperformance (#13132, #11419). - 🦎 Bug fix: Query parameters are preserved when using browser back and forward navigation (#13129, #9279).
- 🐌 Bug fix: For custom components v2, the frontend key is correctly computed to be stable if it has a key in Python and otherwise change when its parameters change (#12950).
- 🕸️ Bug fix: Empty code blocks in Markdown don't display "undefined" (#13074, #12986). Thanks, ashm-dev!
- 🦗 Bug fix:
st.feedbackis prevented from wrapping (#12970, #12068). - 🦂 Bug fix: Custom components v2 don't raise a warning when placeholders are replaced as a result of the initial manifest scan (#13043, #13042).
- 🦟 Bug fix:
st.audio_inputhas the correct padding for its waveform (#13010). - 🦠 Bug fix: The date and time icons in
st.data_editorare visible in dark mode (#12994, #12852). Thanks, aritradhabal! - 🪰 Bug fix:
st.pillsandst.segmented_controlwrap correctly whenwidth="content"(#12969, #12067, #12879, #12857). - 🪳 Bug fix:
st.color_pickerhas a minimum width to prevent a pixel width below its intrinsic size (#12962, #12872). - 🕷️ Bug fix: Disabled widgets hide their borders (#12949).
- 🐞
st.audio_inputandst.chat_inputshow a clearer message when microphone permissions are insufficient (#12914). - 🐝 Bug fix:
st.navigationuses the sidebar font and Streamlit falls back to its built-in fonts if a font can't be found (#12948). - 🐜 Bug fix:
MultiselectColumndoesn't raise aValueErrorwhen adding new rows inst.data_editor(#12860, #12936, #12815). Thanks, kkchemboli! - 🪲 Bug fix:
MultiselectColumnworks correctly when the underlying dataframe has an empty column (#12935, #12842). - 🐛 Bug fix:
st.text_areaavoids negative height calculations that produce invalid CSS (#12891, #12867).
Older versions of Streamlit
- 2025 release notes
- 2024 release notes
- 2023 release notes
- 2022 release notes
- 2021 release notes
- 2020 release notes
- 2019 release notes
Still have questions?
Our forums are full of helpful information and Streamlit experts.