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.46.0 (latest)
Release date: June 18, 2025
Highlights
- π§ Introducing top navigation! Use
st.navigation
withposition="top"
to create a navigation menu across the top of your app. - π You can detect if the viewer is in light mode or dark mode at runtime with
st.context.theme
.
Notable Changes
- πͺΊ Streamlit no longer restricts the nesting of columns, expanders, popovers, and chat message containers, but beware of bad design! Always be mindful of different screen sizes and orientations, and don't overuse nested layouts.
- βοΈ You can set the width of most Streamlit elements.
- β¬οΈ
st.form
has a new parameter to configure itsheight
. - π οΈ
st.columns
supportsgap=None
for no gap between columns. - ποΈ Font face declarations in
config.toml
support weight and unicode ranges (#11248, #11163, #11247). - π Font face declarations are supported in the window variable (#11628, #11568).
- π Streamlit searches for secrets and configuration options relative to the entrypoint file in addition to the working directory and user root (#10173, #8195).
- π¨ A new configuration option,
theme.dataframeBorderColor
, lets you set the border color for dataframes and tables separately from other border colors (#11475). - π― A new configuration option,
theme.buttonRadius
, lets you set the radius of buttons separately from other elements (#11464). - π₯οΈ A new configuration option,
theme.codeFontSize
, lets you set the size of code inst.code
,st.json
, andst.help
(#11508). - π You can configure a list of allowed origins when CORS protection is enabled (#11377).
- π
st.set_page_config
can be called multiple times in a single script run (#11286, #4483, #2216, #9797, #9038). - πΊοΈ
st.pydeck_chart
andst.map
now use Carto by default to provide map tiles (#11231). - π You can configure Streamlit to watch additional directories for changes with the new configuration option,
server.folderWatchList
(#9656, #9655). Thanks, akramsystems!
Other Changes
- π Exception messages include a copy button to conveniently copy the message to your clipboard (#11250, #11083). Thanks, snakeM!
- β Streamlit apps can be served from port 3000 (#11525, #8149).
- π Markdown dependencies were upgraded for improved performance (#11553, #11550).
- βοΈ The sidebar is narrower by default and consistently handles the scrollbar spacing (#11412).
- π We gave Streamlit hello a couple small tweaks (#11442).
- π§βπ» Base URL window variables are consistently namespaced in
__streamlit
(#11481). - π Streamlit apps now serve a
manifest.json
file (#11462). - ποΈ
st.dataframe
shows row selection boxes always instead of just on hover (#11411, #11410). - π¦
ListColumn
andLinkColumn
can inherit coloring frompandas
Styler
(#11612, #8254). - πΉ
NumberColumn
andProgressColumn
support a Japanese yen number format (#11588). Thanks, alexmalins! - π
st.page_link
can inherit an icon when passed aStreamlitPage
(#10694, #9743). Thanks, abokey1! - π« A button's placement in the sidebar or main body of an app is included in its widget identity (#10881, #10598). Thanks, joaooliveira-11!
- π·οΈ Built-in Streamlit fonts now use variable font files (#11646, #11600, #11534).
- π€Ή Bug fix: Streamlit Markdown correctly formats task lists and block quotes (#11237).
- π Bug fix: Horizontal scroll bars are sized correctly in Safari (#11625).
- π Bug fix: Unnecessary media caching was reduced to improve efficiency and avoid video player crashes (#11635, #9688).
- π Bug fix:
st.text
uses thebreak-word
CSS property to wrap long lines without whitespace (#10969, #10824). Thanks, matilde2004! - πͺ² Bug fix: Material icons display correctly in
st.markdown
whenunsafe_allow_html=True
(#11633, #9945). - π Bug fix: Multi-index column names preserve brackets (#11617, #10415).
- π Bug fix: Various CSS tweaks (#11631, #11632, #11630, #11611, #11577, #9085, #8671, #11576, #11569).
- βοΈ Bug fix:
st.dataframe
clears filter options when applying sort to prevent incorrect highlights (#11587, #11575). - π Bug fix: Altair charts have the correct width and don't overflow with long titles (#11585, #9984).
- π Bug fix:
st.toast
messages appear abovest.dialog
containers (#11578, #10383). - πͺ± Bug fix: Streamlit apps correctly scroll to anchor links (#11552, #11551).
- βοΈ Bug fix:
st.context
does not lose state in an app being edited (#11506, #11330). - β¬ Bug fix:
st.code
preserves leading white space (#10065, #6302). Thanks, XuehaiPan! - π
Bug fix:
st.date_input
shows the correct hover effect when using date ranges (#11223, #10929). Thanks, Bernardo1008! - π© Bug fix: Dataframes using
pandas
Styler
correctly displayEnum
values (#11049, #10637). Thanks, BigBird404! - β οΈ Bug fix:
st.context
does not lose state whenst.switch_page
is called (#11521, #11507). - π½ Bug fix: File watcher correctly handles custom metaclasses (#10388, #10992). Thanks, HomenShum!
- π» Bug fix:
st.map
uses a private Mapbox token when configured (#11511, #11399). - π¦ Bug fix:
vega-interpreter
was updated to prevent unintentional blank axes (#11514, #5733). - π¦ Bug fix: Truncated values in
NumberColumn
are rounded correctly (#11520, #11519). - π Bug fix: Highlighted in text in Markdown has the correct padding on wrapped lines (#11530).
- πΈοΈ Bug fix: For a Plotly chart, reset axes works correctly after using fullscreen (#11498, #11327).
- π¦ Bug fix: Altair chart are not cropped on the left on first load (#10939, #9339). Thanks, goncalossmartins!
- π Bug fix: Chart columns correctly show negative values (#11048, #10411). Thanks, tiagorb1!
- π¦ Bug fix: Streamlit doesn't crash when editing indices in
st.data_editor
(#11448, #11434). - π¦ Bug fix: Color and style is preserved in charts when using
.add_rows()
(#11414, #11312). - πͺοΈ Bug fix: Tornado 6.5.0 is excluded to prevent file uploading errors related to unicode filenames (#11440, #11396, #11436).
- π¦ Bug fix: Selected rows are cleared when a column in
st.dataframe
is sorted (#11363, #11345). - πΆ Bug fix: Streamlit shows a clearer message when it can't connect to the server and automatically dismisses the message if a connection is successful (#11366).
- πͺ° Bug fix: Localized number and date formats correctly interpret locales with commas (#11297, #11291).
- π§Ή Bug fix: Streamlit cleans up the forward message cache to prevent WebSocket message errors (#11302, #11299, #11300).
- π Bug fix:
st.latex
scrolls horizontally when its content is wider than the app (#10071, #4304). - πͺ³ Bug fix:
st.multiselect
has a more stable sort when filtering options (#11309, #11218). - π·οΈ Bug fix:
st.multiselect
options are case sensitive and don't overlap in the drop down menu (#11307, #11217, #11306, #11215). - πͺ Bug fix: Streamlit logs an error if the cookie returned by
st.login
is too large (#11290, #11168). - πͺ² Bug fix: Displaying elements within a fragment's callback logs a clear warning that it's not supported (#10942, #10475). Thanks, Zane-dev16!
- π Bug fix:
st.file_uploader
is case insensitive when validating allowed file extensions (#11261, #11259). - π Bug fix: Page runs end correctly to prevent invalid widget states (#11258, #11202).
- π€ Bug fix: Error messages correctly refer to
st.user
instead ofst.experimental_user
(#11198). - π·οΈ Bug fix: The missing label warning for widgets includes a stack trace (#11187, #8908).
- π Bug fix:
st.data_editor
returns the correct result when some rows are deleted and others are added (#11183, #11180).
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.