Hello there πŸ‘‹

Thanks for stopping by! We use cookies to help us understand how you interact with our website.

By clicking β€œAccept all”, you consent to our use of cookies. For more information, please see our privacy policy.

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.

star

Tip

To upgrade to the latest version of Streamlit, run:

pip install --upgrade streamlit

Release date: June 18, 2025

Highlights

  • 🧭 Introducing top navigation! Use st.navigation with position="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 its height.
  • πŸ› οΈ st.columns supports gap=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 in st.code, st.json, and st.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 and st.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 and LinkColumn can inherit coloring from pandas Styler (#11612, #8254).
  • πŸ’Ή NumberColumn and ProgressColumn support a Japanese yen number format (#11588). Thanks, alexmalins!
  • πŸ”— st.page_link can inherit an icon when passed a StreamlitPage (#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 the break-word CSS property to wrap long lines without whitespace (#10969, #10824). Thanks, matilde2004!
  • πŸͺ² Bug fix: Material icons display correctly in st.markdown when unsafe_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 above st.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 display Enum values (#11049, #10637). Thanks, BigBird404!
  • ☠️ Bug fix: st.context does not lose state when st.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 of st.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).
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.