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.
