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: April 29, 2025

Highlights

  • Announcing the general availability of st.user, a dict-like object to access information about the current user.

Notable Changes

Other Changes

  • Per the scheduled deprecation, st.experimental_audio_input has been removed. Use st.audio_input instead.
  • Various elements received styling tweaks for consistency and compatibility with advanced theming (#10916, #10930, #10915, #10944, #10990, #11033, #11034).
  • The element toolbar sizing and spacing was adjusted for improved UX (#11135, #11155).
  • Bug fix: Streamlit does not display a frontend error when displaying an empty dataframe (#11100, #11064).
  • Bug fix: st.context retains its information when calling st.rerun (#11113, #11111).
  • Bug fix: st.camera_input has the correct color and hover effect when disabled (#11116).
  • Bug fix: st.audio_input has consistent color and hover effects with other widgets (#11118).
  • Bug fix: st.logo displays correctly when the sidebar is resized (#11063, #11062).
  • Bug fix: st.file_uploader can handle multi-part file extensions in its type parameter (#11043, #11041). Thanks, moutayam!
  • Bug fix: theme.fontFaces correctly supports font style (#11098, #11097).
  • Bug fix: streamlit init specifies file encoding to avoid errors in systems where UTF-8 is not the default (#11090, #11086). Thanks, ashm-dev!
  • Bug fix: In the sidebar, space is reserved for the scrollbar to prevent flickering from resizing (#10733, #10310).
  • Bug fix: st.logo supports SVGs defined with a viewBox (#11038, #10904).
  • Bug fix: st.date_input raises an error in the UI if a user enters a date outside of the specified allowed range (#10764, #8475).
  • Bug fix: st.snow and st.balloons don't incorrectly rerun during a fragment rerun (#11015, #10961).
  • Bug fix: When updating config.tomlduring development, Streamlit will elegantly handle invalid TOML formatting and reload the configuration file on the next save (#10857, #1256, #8320).
  • Bug fix: Streamlit applies the correct hover effect when colored text is used in button labels (#10996, #8767).
  • Bug fix: Streamlit ignores __init__.py and dotfiles in the /pages directory when automatically declaring pages in a multipage app (#11009, #11006).
  • st.write received an optimization tweak for rendering strings (#10985).
  • Bug fix: st.html renders at 100% width for correct sizing (#10976, #10964).
  • Bug fix: Page links become disabled if a client disconnects from the Streamlit server (#10946, #9198).
  • Bug fix: Streamlit supports newer emojis in page icons (#10912, #11154).
  • Bug fix: st.exception only shows links to Google and ChatGPT when the app is being accessed through localhost (#10971, #10924).
  • Bug fix: st.chat_input will expand to show multi-line placeholder text in most browsers. Firefox does not support this fix (#10931, #10611).
  • Bug fix: Streamlit elegantly catches a TypeError when concurrent changes to rows and columns cause a failure in serialization (#10954, #10937).
  • Bug fix: Streamlit cleanly handles non-ASCII characters in anchor links, which may change some anchors in existing apps (#10929, #8114).
  • Bug fix: To prevent a race condition, session information is not immediately cleared unless a new session message is received (#9886, #9767).
  • Bug fix: streamlit config show correctly displays client.showErrorDetails as a string instead of a list (#10921, #10913).
  • Bug fix: st.selectbox does not lose its value if a partial edit is abandoned (#10891).
  • Bug fix: st.badge doesn't falsely show rainbow as a color option (#10896).
  • Bug fix: To avoid a file lock conflict the occurs with some IDEs, Streamlit's file watcher utilities retries reading files when blocked (#10868, #4486). Thanks, Morridin!
  • Bug fix: st.selectbox and st.multiselect have consistent color and spacing for placeholder text (#10865).
  • Bug fix: Context managers correctly handle form elements (#10752, #8761). Thanks, SrGesus!
  • Bug fix: st.link_button and st.tabs remain active when a client disconnects from a Streamlit server (#10861).

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).

Release date: March 4, 2025

Highlights

  • ๐Ÿ“ Announcing the option to accept files with st.chat_input!
  • ๐Ÿ“’ Introducing a new column type for column configuration! Use JsonColumn to show JSON-compatible objects.

Notable Changes

Other Changes

  • ๐Ÿฅท Users can hide dataframe columns (#10264, #6870).
  • ๐Ÿ“… Users can change the format of numbers, dates, and times in dataframes (#10420).
  • โ†”๏ธ Users can auto-size column widths (#10476).
  • ๐Ÿปโ€โ„๏ธ Streamlit supports Polars dataframe and series hashing (#10408, #10347).
  • โ˜ ๏ธ rich is no longer a required dependency for Streamlit (#10320).
  • ๐Ÿฆ‹ st.file_uploader has a better display format in narrow containers (#10272).
  • ๐ŸฆŽ Bug fix: Tabs are prevented from having a width of zero to prevent flickering (#10533).
  • ๐ŸŒ Bug fix: Column order is correctly displayed when set in column configuration (#10445, #10442).
  • ๐Ÿ•ธ๏ธ Bug fix: We updated dataframe null handling to prevent deprecation warnings (#10484).
  • ๐Ÿฆ— Bug fix: Elapsed time doesn't overflow for st.audio_input (#10410, #10373). Thanks, ashm-dev!
  • ๐Ÿฆ‚ Bug fix: st.altair_chart does not show an incorrect "true" tooltip when the user makes a selection (#10456, #10448).
  • ๐ŸฆŸ Bug fix: Streamlit does not raise a RuntimeError when an asyncio event loop is not already running (#10455, #10452).
  • ๐Ÿฆ  Bug fix: The key for an internal MIME type is set correctly to avoid a browser warning (#10404).
  • ๐Ÿชฐ Bug fix: st.data_editor automatically scrolls to the bottom when a user adds a row (#10405, #10351).
  • ๐Ÿชณ Bug fix: Tooltips are suppressed on user-added rows in st.data_editor to prevent erroneous warnings (#10398).
  • ๐Ÿ•ท๏ธ Bug fix: st.logo displays consistently when used with fragments and dialogs (#10377, #10350, #10382).
  • ๐Ÿž Bug fix: st.graphviz_chart has rounded corners for consistent style (#10224).
  • ๐Ÿ Bug fix: Streamlit raises a clear exception when an underscore is used in provider for st.login (#10360, #10356).
  • ๐Ÿœ Bug fix: The dataframe column menu displays correctly inside dialogs (#10359, #10357).
  • ๐Ÿชฒ Bug fix: Exception handling was adjusted for improved compatibility with Cython (#10354, #10353). Thanks, tutu-sol!
  • ๐Ÿ› Bug fix: st.pills and st.segmented_control have consistent font sizes across browsers (#10349).

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.