2026 release notes

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

Release date: March 3, 2026

Highlights

  • 🍿 Introducing dynamic containers: st.tabs, st.popover, and st.expander can rerun the app when they are opened or closed by setting the on_change parameter. If a key is also provided, you can programmatically open and close them, too.
  • πŸ–‡οΈ Announcing widget binding! Most non-trigger widgets have a bind parameter to simplify syncing widget state with query parameters.

Notable Changes

  • πŸ”— st.image has a link parameter to make images clickable with HTTP/HTTPS URLs (#14139, #9836).
  • πŸ₯· st.Page has a visibility parameter that lets you hide pages in the navigation menu while keeping them routable (#13905, #10738).
  • 🎨 Markdown supports arbitrary CSS colors for text foreground and background (#14041, #7808).
  • πŸ“ st.metric has a delta_description parameter to display descriptive text next to delta values (#13848, #13690).
  • πŸ“ You can configure the font weight and size for st.metric with the new metricValueFontWeight and metricValueFontSize configuration options (#13550, #12300). Thanks, kagawa0710!
  • πŸ“ st.table has height and width parameters (#13850, #10775, #10820).
  • πŸ“ˆ st.altair_chart and st.vega_lite_chart support selections on multi-view charts (#13591, #8643).
  • πŸ”‘ To prevent widgets from resetting when you change a parameter, widgets are transitioning to an identity based only on their keys (if provided). The following widgets use only their key for their identity:
  • πŸ“‚ st.markdown accepts width="auto" to adapt its default behavior depending on the flex layout of its container (#13841).
  • 🌐 Added a new client.allowedOrigins config option to let you customize which origins can send cross-origin postMessage (#13829, #6389).

Other Changes

  • πŸ–‹οΈ Page titles in st.Page and section labels in st.navigation support Markdown (#14053, #14010, #11771).
  • 🧹 Common block elements in widget labels are auto-escaped for convenience (#13887, #7359).
  • πŸ„β€β™‚οΈ st.multiselect lets users select all options or all currently filtered options with a single click (#13795, #4714).
  • πŸ’… Improved the design of st.multiselect and st.selectbox (#13004). Thanks, rishi-kumar0612!
  • ‼️ All widget drop-downs were restyled for consistency (#13796, #13797, #13798).
  • ↔️ For better accessibility, st.tabs displays navigation arrows when the tabs overflow their container horizontally (#13987, #5552).
  • πŸ“ The app menu was redesigned (#14101):
    • Improved accessibility (#13878, #14131).
    • Added a copy button for the Streamlit version (#13791).
    • Removed the settings menu, surfacing the theme selector and rerun settings in the main menu (#13937, #13988, #14048).
  • πŸ” Improved streamlit config show output to better distinguish theme value sources (#13761).
  • β™₯️ To improve behavior in hosted environments, the Streamlit server acknowledges client heartbeats (#13810).
  • πŸ”£ Extended sprintf to support , as a thousands separator in NumberColumn, ProgressColumn, st.number_input, st.slider, and st.metric (#13284, #1301).
  • ⬆️ Added support for cachetools 7.x (#13839, #13801).
  • ☠️ Added a deprecation notice to SnowparkConnection for better visibility (#14125).
  • πŸ¦€ Bug fix: st.spinner avoids a race condition when used right before a cache miss (#13849, #13634).
  • 🦎 Bug fix: st.date_input values are normalized in Session State to prevent a type error (#14123, #14109).
  • 🐌 Bug fix: st.metric with sparklines display correctly in horizontal flex containers (#14110, #13785).
  • πŸ•ΈοΈ Bug fix: SQLConnection.query() caches results at the instance level instead of the class level (#14094, #14077).
  • πŸ¦— Bug fix: st.segmented_control has consistent border styling on hover (#14067, #12802).
  • πŸ¦‚ Bug fix: st.date_input and st.datetime_input remove validation marks when they are cleared (#14066, #14052).
  • 🦟 Bug fix: Fixed a rendering regression for vconcat charts in Altair with faceted children (#14065, #14050).
  • 🦠 Bug fix: st.Page raised an exception if it's passed a URL path of only slashes (#14005, #13952). Thanks, nileshhadalgi016!
  • πŸͺ° Bug fix: The code block copy button was moved into a toolbar to prevent text overlap (#14024, #12958).
  • πŸͺ³ Bug fix: st.tabs retain their state when rendered after a transitional element like st.spinner (#14023, #14018).
  • πŸ•·οΈ Bug fix: Treemap and sunburst Plotly charts support selections (#13935, #9001).
  • 🐞 Bug fix: Fixed a width regression for layered vconcat charts in Altair (#13980, #13974).
  • 🐝 Bug fix: st.multiselect raises an exception when max_selections isn't positive (#13966, #13965).
  • 🐜 Bug fix: When a user adds a row to st.data_editor, all columns, including hidden ones, are initialized (#13916, #13915).
  • πŸͺ² Bug fix: st.select_slider doesn't apply its format function twice in AppTest (#13837, #13832).
  • πŸ› Bug fix: Content in collapsed expanders is not included in page search (#13818).

Release date: February 4, 2026

Notable Changes

  • 🎨 The color parameter of st.area_chart, st.bar_chart, st.line_chart, and st.scatter_chart supports the basic color palette which can be configured with theming (#13739, #12694).
  • ☯️ You can use the new theme.chartDivergingColors to set default diverging colors for Plotly, Altair, and Vega-Lite charts.
  • πŸ”— You can configure the display of error help links with a new configuration option, client.showErrorLinks (#13472, #11238). Thanks, karubian!
  • πŸ˜ƒ st.logo supports Material icons and emojis (#13416). Thanks, rahuld109!
  • πŸ₯· To prevent widgets from resetting when you change a parameter, widgets are transitioning to an identity based only on their keys (if provided). The following widgets use only their key for their identity:
    • st.dataframe (with selections)
    • st.area_chart
    • st.bar_chart
    • st.line_chart
    • st.scatter_chart
    • st.altair_chart
    • st.vegalite_chart
    • st.pydeck_chart
    • st.date_input
    • st.datetime_input
    • st.radio
    • st.select_slider
  • πŸ‘† ListColumn and MultiselectColumn let users select the text of their pills for copying (#13663).
  • πŸ‘» st.experimental_get_query_params and st.experimental_set_query_params have been removed. Use st.query_params instead.
  • ☠️ st.experimental_user has been removed. Use st.user instead.

Other Changes

  • πŸ‘½ The warning about the proposed removal of .add_rows() shows in the browser. Please leave feedback (#13063).
  • 🦎 When a .streamlit/config.toml file is created after a Streamlit app is running, the file watcher will recognize it without restarting the Streamlit server (#13625, #11296).
  • πŸ” Bug fix: Path security validation improves protection against Server-Side Request Forgery (SSRF) and path traversal vulnerabilities (#13733).
  • πŸ•ΈοΈ Bug fix: Wildcard URLs display as localhost in the browser URL and console output (#13720, #13712).
  • πŸ¦— Bug fix: Modals and drop-down menus don't collapse the sidebar (#13653).
  • πŸ¦‚ Bug fix: st.bar_chart doesn't raise a KeyError when sorting melted data (#13695).
  • 🦟 Bug fix: st.multiselect and st.selectbox don't clear state when a custom class object is selected (#13648, #13646).
  • 🦠 Bug fix: Transient nodes used for spinners will correctly anchor themselves in the Streamlit DOM to avoid an empty delta path (#13674).
  • πŸͺ° Bug fix: Snowflake connections will re-initialize if closed (#13665).
  • πŸͺ³ Bug fix: Nested containers under a spinner don't raise a Bad delta path index error (#13659, #13658).
  • πŸ•·οΈ Bug fix: SnowflakeConnection.query() correctly passes the params argument to caching (#13652, #13644).
  • 🐞 Bug fix: client.toolbarMode="viewer" correctly hides developer options from the settings menu (#13623).
  • 🐝 Bug fix: When using the experimental Starlette configuration, Streamlit auth can log users out of your identity provider and surface user tokens, consistent with recent updates (#13571).
  • 🐜 Bug fix: Streamlit will defensively not load packaged components with missing or invalid component names in their manifests (#13612).
  • πŸͺ² Bug fix: The width of file chips in st.chat_input was increased to reduce filename truncation (#13589).
  • πŸ› Bug fix: st.bar_chart doesn't raise an error about y-axis minimum and maximum when the bars have all the same value (#13590, #13584).

Release date: January 14, 2026

Highlights

  • ❄️ You can create session-scoped caller's rights connections in Streamlit in Snowflake and other Snowpark Container Services environments.
  • ⭐ Announcing experimental support for running Streamlit with Starlette with the new server.useStarlette configuration option.
  • 🌐 Introducing st.App, an experimental ASGI-compatible entry point that enables custom HTTP routes, middleware, lifecycle hooks, and integration with Python web frameworks like FastAPI and Starlette (#13537).
  • πŸ”‘ You can expose OIDC ID and access tokens in st.user.tokens (#12044). Thanks, velochy!

Notable Changes

Other Changes

  • πŸ”Œ You can exclude the port from your Streamlit auth redirect URI to use the current port (#12251, #12249). Thanks, velochy!
  • πŸ“› Various custom components v2 types were semantically renamed (#13515).
  • πŸ“œ When an item is removed from st.multiselect, the scroll position of the drop down is preserved (#13384, #13317). Thanks, kagawa0710!
  • 🐍 Pydantic sequences are treated as dataframe-like by Streamlit commands (#13348, #13344).
  • 🏠 The logo displayed by st.logo links to the app's homepage (#13222, #13155).
  • ⌨️ For improved accessibility, tooltips are keyboard focusable (#13379, #13330).
  • βš“ For improved accessibility, anchor links are keyboard focusable (#13378, #13329).
  • πŸ—ΊοΈ st.json displays a tooltip on hover for each element to show its full path (#13113, #13057).
  • πŸ’¬ st.chat_input was redesigned for improved style and accessibility (#13088, #13223, #13364, #13532, #13556, #13546, #13542, #13535, #13554, #13553, #13555, #13547).
  • πŸ’… Various style updates for consistency (#13536, #13557).
  • πŸ” st.auth is compatible with Authlib version 1.6.6 (#13333, #13335, #13424).
  • πŸ‘½ Bug fix: Embedded apps respect the theme embedding option when they are configured with a custom theme (#13498, #13496). Thanks, ranmocy!
  • πŸ‘» Bug fix: st.number_input accounts for floating point precision when incrementing and decrementing its value (#13484).
  • πŸ¦€ Bug fix: st.altair_chart correctly displays HConcat and VConcat charts (#13423, #13410).
  • πŸ¦‹ Bug fix: st.selectbox is initialized correctly when its value is set from Session State (#13438, #13435).
  • 🦎 Bug fix: st.html indents list items correctly (#13437, #13426).
  • 🐌 Bug fix: A logger message for SnowflakeConnection references the correct URL to the Snowflake docs (#13363, #13361).
  • πŸ•ΈοΈ Bug fix: Tooltip text with newlines renders correctly (#13365, #13339).
  • πŸ¦— Bug fix: The DOM elements within st.spinner are properly aligned when showing elapsed time (#13388, #13387).
  • πŸ¦‚ Bug fix: Custom components v2 have the same cross-origin behavior as other elements in the app (#13376).
  • 🦟 Bug fix: CSS custom properties in custom components handle null or unset values correctly (#13240).
  • 🦠 Bug fix: Theme preference is persisted into new app sessions (#13306, #13280).
  • πŸͺ° Bug fix: st.dialog doesn't show stale elements from a previous dialog (#13297, #10907).
  • πŸͺ³ Bug fix: st.data_editor behaves correctly when starting with a column of None values (#13309, #13305).
  • πŸ•·οΈ Bug fix: To correctly reflect edits to the theme configuration during development, theme settings are properly hashed (#13173).
  • 🐞 Bug fix: In v2 custom components, app-level keyboard shortcuts (like R for rerun) are disabled in typing contexts to prevent unintentional usage (#13264).
  • 🐝 Bug fix: Custom component v2 includes default values in component identity, unless a key is provided (#13266).
  • 🐜 Bug fix: The sidebar navigation is correctly hidden when topbar navigation is used (#13227, #13224).
  • πŸͺ² Bug fix: st.logo displays the logo correctly when an app uses top navigation (#13226, #13225).
  • πŸ› Bug fix: Error messages are clearer when width or height are invalidly set to 0 (#13206, #12868).
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.