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.

2025 release notes

This page contains release notes for Streamlit versions released in 2025. For the latest version of Streamlit, see Release notes.

Release date: February 4, 2025

Highlights

  • πŸ‘©β€πŸ’» Introducing st.login() and st.logout() to authenticate users with any OpenID Connect provider.

Notable Changes

  • ❣️ st.table supports Markdown (#8785, #10088).
  • ⏲️ st.spinner can show elapsed time with show_time=True (#6805, #10072).
  • πŸ’ˆ st.image supports Markdown in the caption parameter (#6808, #10075).
  • ↕️ st.code has a height parameter (#7418, #10080).
  • ↔️ Most charts default to using use_container_width=True (#10064).
  • ❄️ SnowflakeConnection was updated to match the current Snowflake API, which changes its handling of keyword arguments in some cases (#10122).
  • 🐁 Users can drag and drop dataframe columns to rearrange them (#8796, #10099).

Other Changes

  • πŸ“Œ Dataframes have column menus for users to sort and pin columns (#10206).
  • 🚦 Dataframes support categorical indices (#9647, #10195).
  • πŸ›Έ Dataframes show a hover highlight on rows (#8096, #10104).
  • ⚠️ When dataframes have cell values that are inconsistent with their configured type, Streamlit shows a tooltip describing the error (#8253, #9899).
  • ➰ If there is an existing asyncio event loop when a Streamlit app starts, the app will reuse it instead of creating a new one (#10164). Thanks, DeltaGa!
  • πŸ–ΌοΈ Streamlit recognizes pyspark.sql.connect.dataframe.DataFrame objects as dataframes (#9953, #9954). Thanks, OSalama!
  • πŸ˜ƒ We've updated emoji validation for new emojis (#10149).
  • πŸ”£ Material Symbols have been updated with the latest icons (#10247).
  • πŸ’… Visual tweaks and improvements (#8705, #9823, #10047, #10048, #10083, #10087, #10225).
  • β­• st.image displays rounded corners for consistent design (#9999).
  • 🎩 Bug fix: Top margin is applied correctly in st.columns (#10265, #10268).
  • πŸ’© Bug fix: react-syntax-highlighter is aliased to prevent rendering errors in st.code (#10231, #10244).
  • 🧹 Bug fix: We improved error messages for st.query_params (#10111, #10237).
  • πŸͺ± Bug fix: Linting for st.altair_chart recognizes all Altair chart types (#10202).
  • ↗️ Bug fix: st.dataframe supports raw Arrow data (#5606, #10191).
  • 🐍 Bug fix: st.navigation and st.page_link work when running in pure Python tests (#10163).
  • ☠️ Bug fix: Retries were added to prevent a possible race condition when files are removed while Streamlit is running (#10148).
  • πŸ‘½ Bug fix: When printing an app, st.logo will only print once (#10165, #10171).
  • 🌍 Bug fix: Material icons are marked to prevent translation (#10168, #10174).
  • πŸ‘» Bug fix: st.vega_lite_chart correctly caches and updates its data (#6689, #10125).
  • πŸ¦€ Bug fix: When a fragment ID is not found, Streamlit logs a warning but doesn't raise an error (#9921, #10130).
  • πŸ¦‹ Bug fix: The label on st.expander correctly fades when stale (#10085).
  • 🦎 Bug fix: st.date_input provides better type hinting for its return value (#9477, #9620). Thanks, pranaybattu!
  • 🐌 Bug fix: In dataframes, small float values display their first significant figure instead of displaying as 0 (#10060).
  • πŸ•ΈοΈ Bug fix: When rich is installed, errors are only logged once. (#10097).
  • πŸ¦— Bug fix: st.text preserves whitespace (#10055, #10062).
  • πŸ¦‚ Bug fix: Dataframe width is not ignored when height is changed (#9762, #10036).
  • 🦟 Bug fix: Multi index columns correctly handle empty labels (#9749, #10035).
  • 🦠 Bug fix: Pinned columns respect column_order in when configured in st.dataframe (#9997, #10034).
  • πŸͺ° Bug fix: Tooltips don't overflow to the left or right (#9288, #9452, #9983).
  • πŸͺ³ Bug fix: Disabled feedback widgets correctly show their value (#10030).
  • πŸ•·οΈ Bug fix: Widgets correctly submit values if a user edits the value and immediately clicks a button (#10007, #10018).
  • 🐞 Bug fix: Some MIME types have been hardcoded to protect against browser misconfiguration (#10004, #10010).
  • 🐝 Bug fix: Files that unnecessarily inflated Streamlit's installation size were removed (#10008, #10011).
  • 🐜 Bug fix: st.date_input gives the correct type hint for the value parameter (#10005, #10006).
  • πŸͺ² Bug fix: st.write passes to st.html when ._repr_html() is present for an object (#9910).
  • πŸ› Bug fix: st.html preserves target=_blank if set in an HTML string (#9972, #9994).
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.