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: March 25, 2025

Highlights

  • 💈 Introducing advanced theming options! Use an assortment of configuration options to customize the appearance of your app. Change the fonts, colors, and roundness of your app without CSS.
  • 👮 Introducing st.badge to insert a colored badge element. You can also include badges in Markdown using a new directive.
  • 🏗️ Use streamlit init in your terminal to create all the local files you need for a new Streamlit app.

Notable Changes

  • 🤖 st.exception includes links to open Google or ChatGPT with the contents of the exception. This includes uncaught exceptions displayed in the app.
  • 🗺️ You can access the user's locale through st.context (#10563).

Other Changes

  • 📄 When using a pages/ directory to automatically generate a multipage app, no pages (including the entrypoint file) can have the same inferred URL pathname (#10276).
  • 🏎️ To improve performance, Streamlit uses the React 18 createRoot API for its frontend (#10453).
  • 📝 To improve compatibility with AI tools, script compilation errors are logged when logger.level="error" and not just when logger.level="debug" (#10826).
  • 🪵 Streamlit automatically enables more detailed logging if rich is installed (#10650).
  • 🔢 st.slider and st.number_input raise an error when assigned a value in excess of a declared minimum or maximum (#9964, #9342).
  • 🛠️ st.table support pandas Styler.set_tooltips() (#10561, #10553).
  • ℹ️ Material symbols have been updated to the latest icon set (#10813, #10717).
  • 🦋 Visual tweaks to headers (#10599).
  • 🦀 Bug fix: st.html displays correctly when used inside st.tabs (#10825, #10815).
  • 🦎 Bug fix: For backwards compatibility, theme.font="sans serfi" is internally converted to the new theme.font="sans-serif" (#10789, #10786).
  • 🐌 Bug fix: When using st.secrets, if Streamlit can't find the secrets.toml file, it will raise a FileNotFoundError (#10508, #8559).
  • 🕸️ Bug fix: st.secrets raises a clear TypeError if you try to assign a value to an attribute (#10698, #10107).
  • 🦗 Bug fix: In single-page apps, st.page_link does not highlight external links as if they are the current page (#10690, #10689).
  • 🦂 Bug fix: st.poppover displays at the correct width when using the help parameter (#10709, #10693).
  • 🦟 Bug fix: All components (and custom components) that read their width from the DOM initially load with a width of -1 px to prevent flickering (#10712, #10672, #10663, #10644).
  • 🦠 Bug fix: When st.number_input is configured to use integers, the default minimum and maximum values will prevent integer overflow (#10655, #6740).
  • 🪰 Bug fix: st.navigation uses immutable types to prevent mypy errors (#10670).
  • 🪳 Bug fix: Custom components correctly inherit font from theme configuration (#10661, #10660).
  • 🕷️ Bug fix: Dataframes correctly support Dask data objects (#10662).
  • 🐞 Bug fix: Button widths are correct when using the help parameter (#10658, #10648, #10656).
  • 🐝 Bug fix: Scrolling is disabled when hovering over st.number_input to prevent accidental value changes (#10642, #8867).
  • 🐜 Bug fix: st.chat_input gives a clear error in the UI when the file size limit is exceeded (#10530).
  • 🪲 Bug fix: The favicon and Markdown emojis use the same SVG emoji source for consistency (#10539, #6822).
  • 🐛 Bug fix: The dataframe search bar is more responsive to width (#10534, #10532).
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.