Version 1.55.0

Release date: March 3, 2026

Highlights

  • :popcorn: 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.

  • :linked_paperclips: Announcing widget binding! Most non-trigger widgets have a bind parameter to simplify syncing widget state with query parameters.

Notable Changes

  • :link: st.image has a link parameter to make images clickable with HTTP/HTTPS URLs (#14139, #9836).

  • :ninja: st.Page has a visibility parameter that lets you hide pages in the navigation menu while keeping them routable (#13905, #10738).

  • :artist_palette: Markdown supports arbitrary CSS colors for text foreground and background (#14041, #7808).

  • :triangular_ruler: st.metric has a delta_description parameter to display descriptive text next to delta values (#13848, #13690).

  • :straight_ruler: You can configure the font weight and size for st.metric with the new metricValueFontWeight and metricValueFontSize configuration options (#13550, #12300). Thanks, kagawa0710!

  • :ping_pong: st.table has height and width parameters (#13850, #10775, #10820).

  • :chart_increasing: st.altair_chart and st.vega_lite_chart support selections on multi-view charts (#13591, #8643).

  • :key: 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:

  • :open_file_folder: st.markdown accepts width="auto" to adapt its default behavior depending on the flex layout of its container (#13841).

  • :globe_with_meridians: Added a new client.allowedOrigins config option to let you customize which origins can send cross-origin postMessage (#13829, #6389).

Other Changes

  • :fountain_pen: Page titles in st.Page and section labels in st.navigation support Markdown (#14053, #14010, #11771).

  • :broom: Common block elements in widget labels are auto-escaped for convenience (#13887, #7359).

  • :man_surfing: st.multiselect lets users select all options or all currently filtered options with a single click (#13795, #4714).

  • :nail_polish: Improved the design of st.multiselect and st.selectbox (#13004). Thanks, rishi-kumar0612!

  • :double_exclamation_mark: 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).

  • :memo: 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).

  • :magnifying_glass_tilted_left: Improved streamlit config show output to better distinguish theme value sources (#13761).

  • :heart: To improve behavior in hosted environments, the Streamlit server acknowledges client heartbeats (#13810).

  • :input_symbols: Extended sprintf to support , as a thousands separator in NumberColumn, ProgressColumn, st.number_input, st.slider, and st.metric (#13284, #1301).

  • :up_arrow: Added support for cachetools 7.x (#13839, #13801).

  • :skull_and_crossbones: Added a deprecation notice to SnowparkConnection for better visibility (#14125).

  • :crab: Bug fix: st.spinner avoids a race condition when used right before a cache miss (#13849, #13634).

  • :lizard: Bug fix: st.date_input values are normalized in Session State to prevent a type error (#14123, #14109).

  • :snail: Bug fix: st.metric with sparklines display correctly in horizontal flex containers (#14110, #13785).

  • :spider_web: Bug fix: SQLConnection.query() caches results at the instance level instead of the class level (#14094, #14077).

  • :cricket: Bug fix: st.segmented_control has consistent border styling on hover (#14067, #12802).

  • :scorpion: Bug fix: st.date_input and st.datetime_input remove validation marks when they are cleared (#14066, #14052).

  • :mosquito: Bug fix: Fixed a rendering regression for vconcat charts in Altair with faceted children (#14065, #14050).

  • :microbe: Bug fix: st.Page raised an exception if it’s passed a URL path of only slashes (#14005, #13952). Thanks, nileshhadalgi016!

  • :fly: Bug fix: The code block copy button was moved into a toolbar to prevent text overlap (#14024, #12958).

  • :cockroach: Bug fix: st.tabs retain their state when rendered after a transitional element like st.spinner (#14023, #14018).

  • :spider: Bug fix: Treemap and sunburst Plotly charts support selections (#13935, #9001).

  • :lady_beetle: Bug fix: Fixed a width regression for layered vconcat charts in Altair (#13980, #13974).

  • :honeybee: Bug fix: st.multiselect raises an exception when max_selections isn’t positive (#13966, #13965).

  • :ant: Bug fix: When a user adds a row to st.data_editor, all columns, including hidden ones, are initialized (#13916, #13915).

  • :beetle: Bug fix: st.select_slider doesn’t apply its format function twice in AppTest (#13837, #13832).

  • :bug: Bug fix: Content in collapsed expanders is not included in page search (#13818).

3 Likes

Many great improvements in this version! In particular, I’m glad to see that the st.multiselect finally has a “Select All/Matched” option! Thanks!

1 Like