# Streamlit changelog > Turn data scripts into shareable web apps. - Vendor: Snowflake - Category: AI - Official site: https://streamlit.io - Tracked by: What's New (https://whatsnew.fyi/product/streamlit) - Harvested from: GitHub (streamlit/streamlit) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### 1.61.1 - Date: 2026-08-05 - Version: 1.61.1 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.61.1 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.61.1 **Full Changelog**: https://github.com/streamlit/streamlit/compare/1.61.0...1.61.1 ### 1.61.0 - Date: 2026-08-04 - Version: 1.61.0 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.61.0 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.61.0 - **removed** — Remove deprecated use_column_width parameter from st.image - **deprecated** — Deprecate string file paths in st.html and st.iframe in favour of pathlib.Path - **added** — Add lazy loading for st.dataframe - **added** — Add icon parameter to st.metric - **added** — Add background refresh for st.cache_data and st.cache_resource - **added** — Add WebSocket Host allow-list - **added** — Add seconds granularity and format for hour cycle to st.time_input - **changed** — Improve form support and enter to submit to st.time_input - **added** — Infer download_button file_name and mime from file object name - **added** — Enforce disabled widget parameter server-side - **changed** — Improve tag accessibility in st.multiselect - **fixed** — Fix popover in sidebar rendered off-screen - **fixed** — Fix escape key now clears typed search query in st.selectbox - **fixed** — Fix AppTest sys.path handling for script paths - **fixed** — Clear stale AppTest elements on rerun - **fixed** — Fix st.selectbox fuzzy search only matches contiguous substrings since 1.59.0 - **fixed** — Fix commit open data_editor cell edit on outside click - **fixed** — Fix TypeError in run_every fragments with Sentry threading - **fixed** — Fix st.data_editor row additions overwriting rows - **fixed** — Fix st.bar_chart fails on column names containing dot - **fixed** — Accept io.StringIO data in st.download_button ##### What's Changed ###### Breaking Changes 🛠 * [chore] Remove deprecated `use_column_width` parameter from `st.image` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15786 * [fix] Deprecate string file paths in st.html/st.iframe in favour of pathlib.Path by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16150 ###### New Features 🎉 * [feat] Add lazy loading for st.dataframe by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15756 * [feature] Add `icon` parameter to `st.metric` (#12298) by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/15805 * [feature] Add background refresh for st.cache_data and st.cache_resource by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16057 * [feature] Add WebSocket Host allow-list by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16147 * Add seconds granularity and `format` for hour cycle to `st.time_input` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/16126 * Improve form support and enter to submit to `st.time_input` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/16128 * Infer download_button file_name and mime from file object name by @SoMika00 in https://github.com/streamlit/streamlit/pull/16061 * [feature] Enforce disabled widget parameter server-side by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16209 * Improve tag accessibility in `st.multiselect` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/16200 ###### Bug Fixes 🐛 * [fix] Popover in sidebar rendered off-screen by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/16087 * [fix] Escape now clears typed search query in st.selectbox by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/16088 * Fix AppTest sys.path handling for script paths by @ishaanlabs-gg in https://github.com/streamlit/streamlit/pull/15775 * [fix] Clear stale AppTest elements on rerun by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16123 * [fix] Clarify AppTest multipage path handling by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16122 * Fix st.selectbox fuzzy search only matches contiguous substrings since 1.59.0 by @LuC-9 in https://github.com/streamlit/streamlit/pull/16009 * [fix] Commit open data_editor cell edit on outside click by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16132 * [fix] TypeError in run_every fragments with Sentry threading by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/16140 * [fix] Prevent st.data_editor row additions overwriting rows by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16144 * [fix] Reject network paths and null bytes in st.Page by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16146 * [fix] st.expander clipped after interrupted animation by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/16090 * [fix] Lock Mermaid init config overrides by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16151 * [bugfix] Honor Plotly layout fonts in Sankey charts (#11031) by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/16164 * [bugfix] Multiselect dropdown background matches sidebar theme (#11348) by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/16163 * fix(selectbox): flip sidebar dropdown up instead of clipping by @sfc-gh-bnisco in https://github.com/streamlit/streamlit/pull/16199 * [bugfix] Preserve IME composition in data_editor NumberColumn (#16129) by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/16165 * [fix] Right-side padding preserved when code block is scrolled by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/16091 * [bugfix] Higher-DPI Altair PNG export (#8177) by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/16170 * [fix] st.bar_chart fails on column names containing "." by _[Truncated at 4000 characters — full notes: https://github.com/streamlit/streamlit/releases/tag/1.61.0]_ ### 1.60.0 - Date: 2026-07-21 - Version: 1.60.0 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.60.0 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.60.0 - **added** — Add server.maxWidgetStateSize config option - **security** — Limit client-supplied query string size and field count - **security** — Reject spoofed host messages from child frames and scripts - **added** — Move vega-lite chart actions to native toolbar - **added** — Support integer pixel values for gap parameter - **changed** — Use key as main identity for st.data_editor if num_rows is fixed - **added** — Add height parameter to st.tabs - **added** — Disable dataframe data export - **changed** — Apply neutral treatment for zero delta in st.metric - **changed** — Preserve st.dataframe row selections on sort - **security** — Reject non-finite float values from URL params - **security** — Sanitize dangerous Graphviz link URLs - **fixed** — Virtualize selectbox dropdown option list - **fixed** — Keep viewport gutter around dialog on narrow screens - **fixed** — Surface missing httpx error for auth extra - **fixed** — Honor expose_tokens with st.App programmatic secrets - **fixed** — Fix React Aria dialog overlay stacking - **fixed** — Fix st.tabs panels stacking after widget rerun - **fixed** — Remove flaky Missing Submit Button warning - **fixed** — Escape HTML in pydeck chart tooltip interpolation - **fixed** — Dedupe run_every auto-rerun timers per fragment - **fixed** — Remove redundant keyboard tab stop from file uploader dropzone - **fixed** — Avoid PyArrow 25 thread initialization crash - **fixed** — Fix RuntimeError: reentrant call inside _io.BufferedWriter on Ctrl+C - **fixed** — Fix IndexError in simplify_number for values >= 1 quadrillion - **security** — Sanitize dangerous st.link_button and st.image URLs - **fixed** — Cap server dependency major versions - **fixed** — Stop auto rerun on fragment evict - **fixed** — Style selectbox 'No results' empty state - **fixed** — Fix overlays inside popover: stacking and dismissal - **fixed** — Restore type-to-search in st.selectbox - **fixed** — Fix st.metric area chart fill baseline - **fixed** — Prevent file watcher crash on Windows drive paths - **fixed** — Ignore skill symlinks in generated gitignore snippet - **fixed** — Suppress mobile keyboard for selectbox filter_mode=None - **fixed** — Submit typed number_input value on first Enter in form - **fixed** — Improve hashing fallback warning messages - **fixed** — Bundle the skills meta-skill in the wheel; install it locally without GitHub download - **fixed** — Include decorators in st.echo output - **fixed** — Fix inconsistent checkbox margin in horizontal container within column - **fixed** — Fix widgets inside popover-in-dialog being unclickable ##### What's Changed ###### Breaking Changes 🛠 * [feature] Add server.maxWidgetStateSize config option by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15804 * [fix] Limit client-supplied query string size and field count by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15803 * [fix] Reject spoofed host messages from child frames and scripts by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15800 ###### New Features 🎉 * [feature] Move vega-lite chart actions to native toolbar by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15806 * [feature] Support integer pixel values for `gap` parameter (#13005) by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/15850 * [feature] Use `key` as main identity for `st.data_editor` if `num_rows="fixed"` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15884 * [feature] Add `height` parameter to `st.tabs` (#12217) by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/15847 * [feature] Disable dataframe data export by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15910 * [feature] Neutral treatment for zero delta in st.metric by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15790 * [feature] Preserve st.dataframe row selections on sort by @lukasmasuch in https://github.com/streamlit/streamlit/pull/16020 ###### Bug Fixes 🐛 * [fix] Reject non-finite float values from URL params by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15799 * [fix] Sanitize dangerous Graphviz link URLs by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15819 * [fix] Virtualize selectbox dropdown option list by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15870 * [fix] Keep viewport gutter around dialog on narrow screens by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15875 * [fix] Surface missing httpx error for auth extra by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15864 * [fix] Honor expose_tokens with st.App programmatic secrets by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15865 * [fix] Fix React Aria dialog overlay stacking by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15876 * [fix] st.tabs panels stacking after widget rerun by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15894 * [fix] Remove flaky Missing Submit Button warning by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15889 * [fix] Escape HTML in pydeck chart tooltip interpolation by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15820 * [fix] Dedupe run_every auto-rerun timers per fragment by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15912 * [fix] Remove redundant keyboard tab stop from file uploader dropzone by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15928 * [fix] Avoid PyArrow 25 thread initialization crash by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15947 * Fix RuntimeError: reentrant call inside _io.BufferedWriter on Ctrl+C by @chang-pro in https://github.com/streamlit/streamlit/pull/15949 * Fix IndexError in simplify_number for values >= 1 quadrillion by @eeshsaxena in https://github.com/streamlit/streamlit/pull/15971 * [fix] Sanitize dangerous st.link_button and st.image URLs by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15851 * [fix] Cap server dependency major versions by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15948 * [fix] stop auto rerun on fragment evict by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15932 * [fix] Style selectbox 'No results' empty state by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15967 * [fix] Overlays inside popover: stacking and dismissal by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15961 * [fix] Restore type-to _[Truncated at 4000 characters — full notes: https://github.com/streamlit/streamlit/releases/tag/1.60.0]_ ### 1.59.2 - Date: 2026-07-13 - Version: 1.59.2 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.59.2 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.59.2 **Full Changelog**: https://github.com/streamlit/streamlit/compare/1.59.1...1.59.2 ### 1.59.1 - Date: 2026-07-08 - Version: 1.59.1 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.59.1 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.59.1 **Full Changelog**: https://github.com/streamlit/streamlit/compare/1.59.0...1.59.1 ### 1.59.0 - Date: 2026-07-06 - Version: 1.59.0 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.59.0 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.59.0 - **removed** — Remove deprecated Snowpark connection - **added** — Add ButtonColumn to st.column_config - **added** — Add "locked" option for initial_sidebar_state in st.set_page_config - **added** — Add list support to programmatic secrets - **added** — Add AppTest support for download_button and image - **added** — Add column statistics submenu to st.dataframe - **added** — Add streamlit docs lookup - **added** — Add MarkdownColumn for st.dataframe and st.data_editor - **added** — Add App.run() to launch via python app.py or uv run app.py - **added** — Support pasting files into st.chat_input - **added** — Add server.xsrfCookieSameSite config option - **added** — Add mermaid diagram support in st.markdown - **added** — Support OpenAI Responses API streams in st.write_stream - **added** — Allow fragments to write into outside containers - **added** — Add skeleton element for loading placeholder UI - **added** — Add anchors parameter to st.markdown - **added** — Add resolution parameter to st.camera_input - **added** — Add submit_mode parameter to st.chat_input - **added** — Add persist_state widget parameter - **fixed** — Fix metrics endpoint error with SQLAlchemy connections - **fixed** — Fix TypeError in _run_with_thread_state when using @st.fragment(run_every=...) ##### What's Changed ###### Breaking Changes 🛠 * [chore] Make /_stcore/metrics memory stats cheap by default by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15472 * [chore] Remove deprecated Snowpark connection by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15784 ###### New Features 🎉 * [feature] Add `ButtonColumn` to `st.column_config` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14544 * `st.set_page_config` - Add `"locked"` option for `initial_sidebar_state` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/15459 * [feature] Add list support to programmatic secrets by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15491 * [feature] Recommend installing skills on app startup by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15437 * [feature] Add AppTest support for download_button and image by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15528 * [feature] Add column statistics submenu to `st.dataframe` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14307 * [feature] Add `streamlit docs ` lookup by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15547 * [feat] Add MarkdownColumn for st.dataframe and st.data_editor by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13931 * [feature] Add `App.run()` to launch via `python app.py` or `uv run app.py` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15563 * [feature] Support pasting files into st.chat_input by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15558 * [feature] Add `server.xsrfCookieSameSite` config option by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15634 * [feat] Add mermaid diagram support in st.markdown by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14022 * [feature] Support OpenAI Responses API streams in st.write_stream by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15559 * [fragmentOutsideWrites][feature] Reset outside wrappers across fragment reruns by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15620 * [fragmentOutsideWrites][feature] Allow fragments to write into outside containers by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15623 * [feature] Add per-user analytics on metrics endpoint by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15557 * [feature] Add skeleton element for loading placeholder UI by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15169 * [feat] Add `anchors` parameter to `st.markdown` by @sfc-gh-dbyttow in https://github.com/streamlit/streamlit/pull/15722 * [feature] Add resolution parameter to st.camera_input by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15766 * [feature] Add in-app install-skills nudge toast by @sfc-gh-nbellante in https://github.com/streamlit/streamlit/pull/15473 * [feature] Add `submit_mode` parameter to `st.chat_input` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14344 * [feature] Add persist_state widget parameter by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15645 ###### Bug Fixes 🐛 * [fix] Metrics endpoint error with SQLAlchemy connections by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15334 * [fix] TypeError in _run_with_thread_state when using @st.fragment(run_every=...) by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15376 * [fix] P-mode PIL palette hashing to prevent hash collisions by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15397 * [fix] Use named Snowflake connection from config file by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15382 * [fix] Bind IPv6 dual-stack wildcard for default server address by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15400 * [fix] Clear stale and invalid _[Truncated at 4000 characters — full notes: https://github.com/streamlit/streamlit/releases/tag/1.59.0]_ ### 1.58.0 - Date: 2026-05-28 - Version: 1.58.0 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.58.0 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.58.0 - **removed** — Remove deprecated add_rows feature - **removed** — Remove langchain callback handler integration - **added** — Add custom script error handling via st.App - **added** — Add st.pagination widget - **added** — Add type parameter to st.expander and st.status for compact style - **added** — Add parallel=True dispatch to @st.fragment - **added** — Add API restrictions for parallel fragments - **added** — Add streamlit skills CLI command - **fixed** — Fix selectbox first item hidden when 7 options selected - **fixed** — Defer sys.modules eviction to script-run boundary - **fixed** — Fix OAuth MismatchingStateError regression in 1.57.0 - **fixed** — Fix programmatically closed popovers and expanders reopening on interaction with another - **fixed** — Support symlinks in Starlette static file serving - **changed** — Sync URL when session_state updates query-param-bound widgets - **fixed** — Add usedforsecurity=False to blake2b for FIPS compatibility - **fixed** — Prevent stale auto-reruns from crashing apps in fragments - **fixed** — Block javascript: and vbscript: URLs in markdown links - **fixed** — Set Max-Age on st.login() cookies to restore 30-day persistence - **fixed** — Fix Vega-Lite chart tooltips in dialogs - **fixed** — Fix help icon for unsafe_allow_html=True in st.markdown ##### What's Changed ###### Breaking Changes 🛠 * [chore] Remove deprecated `add_rows` feature by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15034 * [chore] Remove langchain callback handler integration by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15051 ###### New Features 🎉 * [feature] Add custom script error handling via `st.App` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14972 * [feature] Add `st.pagination` widget by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14975 * [feat] Add `type` parameter to st.expander and st.status for compact style by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14054 * [feature][ParallelFragments] Add parallel=True dispatch to @st.fragment by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15214 * [feature] Add API restrictions for parallel fragments by @sfc-gh-lwilby-1 in https://github.com/streamlit/streamlit/pull/15251 * [feature] Add `streamlit skills` CLI command by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15116 ###### Bug Fixes 🐛 * [fix] Selectbox first item hidden when 7 options selected by @kmcgrady in https://github.com/streamlit/streamlit/pull/14997 * [fix] Defer sys.modules eviction to script-run boundary (#14593) by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/14826 * [fix] OAuth MismatchingStateError regression in 1.57.0 by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15048 * [fix] Programmatically closed popovers/expanders reopening on interaction with another by @kmcgrady in https://github.com/streamlit/streamlit/pull/14945 * [fix] Support symlinks in Starlette static file serving by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15112 * [feature] Sync URL when session_state updates query-param-bound widgets by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/14744 * fix: add usedforsecurity=False to blake2b for FIPS compatibility by @andriykislitsyn in https://github.com/streamlit/streamlit/pull/15149 * fix(fragment): prevent stale auto-reruns from crashing apps by @sfc-gh-bnisco in https://github.com/streamlit/streamlit/pull/15130 * [fix] Block javascript: and vbscript: URLs in markdown links by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15161 * Set Max-Age on st.login() cookies to restore 30-day persistence by @GiovanniPaoloGibilisco in https://github.com/streamlit/streamlit/pull/15194 * [fix] Fix Vega-Lite chart tooltips in dialogs by @marawanokasha in https://github.com/streamlit/streamlit/pull/15191 * [fix] Help icon for unsafe_allow_html=True in st.markdown by @sfc-gh-bnisco in https://github.com/streamlit/streamlit/pull/15232 * [fix] Discover script-level .streamlit/config.toml when st.App runs under uvicorn by @sfc-gh-bnisco in https://github.com/streamlit/streamlit/pull/15218 * [fix] Warn when st.button shortcut is browser-reserved by @sfc-gh-bnisco in https://github.com/streamlit/streamlit/pull/15217 * fix(auth): migrate provider tokens to joserfc by @sfc-gh-bnisco in https://github.com/streamlit/streamlit/pull/15178 * Fix browser Back/Forward navigation for pages with Unicode URL paths by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15281 * [fix] Restore Starlette OAuth PKCE behavior by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15282 * [fix] Disable Select all in multiselect for >=1000 options by @lukasmasuch in https://github.com/streamlit/streamlit/pull/15301 * Fix accidental overscrolling in table, dataframe, and data_editor by @kantuni in https://github.com/streamlit/streamlit/pull/15309 ###### Other Changes * [chore] Update emojis/material icons by @github-actions[bot] in https://github.com/streamlit/streamlit/pull/14948 * [chore] Release v1.57.0 by @github-actions[bot] in https://github.com/streamlit/streamlit/pull/14962 * [fix] Reduce external IP fet _[Truncated at 4000 characters — full notes: https://github.com/streamlit/streamlit/releases/tag/1.58.0]_ ### 1.57.0 - Date: 2026-04-28 - Version: 1.57.0 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.57.0 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.57.0 - **removed** — Make Starlette the default server and remove Tornado - **removed** — Remove deprecated kwargs from plotly_chart and vega_lite_chart - **removed** — Remove deprecated _get_websocket_headers function - **changed** — Direct polars to arrow conversion bypassing pandas - **added** — Hide chevron for menu-style icon labels for st.menu_button and st.popover - **added** — Add pills, segmented_control properties and dataframe key to AppTest - **added** — Add title parameter to alert elements - **added** — Add :shimmer[] markdown directive for animated loading text - **added** — Expose App in the st namespace - **added** — Bundle OSS developing-with-streamlit core skills in pip package - **fixed** — Add border radius to video and map elements - **added** — Add secrets parameter to st.App - **added** — Add app and theme templates to bundled skills - **added** — Expose st.bottom container - **fixed** — Deduplicate equivalent file extensions in file uploader display - **fixed** — st.dataframe crash with pandas 3 ArrowStringArray - **fixed** — Chain original exception in UnserializableReturnValueError - **fixed** — Inconsistent space encoding in query params - **fixed** — Preserve None values in st.data_editor with pandas 3.0+ - **fixed** — Add CSS Color Level 4 support ##### What's Changed ###### Breaking Changes 🛠 * [feature] Make Starlette the default server and remove Tornado by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14553 * [chore] Remove deprecated kwargs from `plotly_chart` and `vega_lite_chart` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14800 * [chore] Remove deprecated `_get_websocket_headers` function by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14801 * [feature] Direct polars to arrow conversion bypassing pandas by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14885 ###### New Features 🎉 * [feature] Hide chevron for menu-style icon labels for `st.menu_button` and `st.popover` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14697 * [feature] Add pills, segmented_control properties and dataframe key to AppTest by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14518 * [feature] Add `title` parameter to alert elements by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14665 * [feat] Add `:shimmer[]` markdown directive for animated loading text by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14055 * [feature] Expose `App` in the `st` namespace by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14722 * Bundle OSS developing-with-streamlit core skills in pip package by @sfc-gh-nbellante in https://github.com/streamlit/streamlit/pull/14745 * [fix] Add border radius to video and map elements by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14781 * [feature] Add `secrets` parameter to `st.App` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14861 * Add app and theme templates to bundled skills by @sfc-gh-nbellante in https://github.com/streamlit/streamlit/pull/14746 * [feature] Expose `st.bottom` container by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14726 ###### Bug Fixes 🐛 * [feature] Deduplicate equivalent file extensions in file uploader display by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14552 * [fix] `st.dataframe` crash with pandas 3 ArrowStringArray by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14611 * fix(caching): chain original exception in UnserializableReturnValueError by @mango766 in https://github.com/streamlit/streamlit/pull/14655 * [fix] inconsistent space encoding in query params by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/14691 * [fix] Preserve `None` values in `st.data_editor` with pandas 3.0+ by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14694 * [Fix] Add CSS Color Level 4 support by @mayagbarnes in https://github.com/streamlit/streamlit/pull/14674 * [fix] Evict namespace children when watched sources reload by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/14708 * [fix] Downcast large Arrow types in custom component v1 serialization by @sfc-gh-nbellante in https://github.com/streamlit/streamlit/pull/14617 * [fix] Retain st.radio selection for format_func and custom options by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/14815 * Fix bar_chart axis labels not swapping when horizontal=True by @kmcgrady in https://github.com/streamlit/streamlit/pull/14866 * [fix] st.text_area height='content' sizing on initial load by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14884 ###### Other Changes * [chore] Update emojis/material icons by @github-actions[bot] in https://github.com/streamlit/streamlit/pull/14576 * [chore] Release v1.56.0 by @github-actions[bot] in https://github.com/streamlit/streamlit/pull/14598 * Docs for dataframe programmatic selections by @MathCatsAnd in https://github.com/streamlit/streamlit/pull/14616 * [chore] Update emojis/material icons by @github-actions[bot] in https://github.com/streamlit/streamlit/pull/14649 * [chore] Update emojis/material icons by @github-actio _[Truncated at 4000 characters — full notes: https://github.com/streamlit/streamlit/releases/tag/1.57.0]_ ### 1.56.0 - Date: 2026-03-31 - Version: 1.56.0 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.56.0 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.56.0 - **added** — Allow specifying number of visible items via `expanded` in `st.navigation` - **added** — Add `on_click` rerun support to `st.link_button` - **added** — Add file type shortcuts for `st.file_uploader` and `st.chat_input` - **added** — Allow programmatically setting `st.dataframe` selections - **added** — Extract leading icon from alert body - **added** — Serve static files with native content types - **added** — Allow external URLs in st.Page for navigation sidebar - **added** — Add `AudioColumn` and `VideoColumn` to `st.column_config` - **added** — Add `st.menu_button` widget - **added** — Add `hide_index` and `hide_header` to `st.table` - **added** — Add `height` parameter to `st.chat_input` - **added** — Add `st.file_uploader` support to AppTest - **added** — Always show the dataframe column visibility menu - **added** — Add support for relative static file serving URLs in media elements - **added** — Add `alignment` parameter to `column_config` columns - **added** — Complete incomplete markdown syntax during streaming - **added** — Stable Block.id for passive keyed layout containers - **added** — Add `st.tabs` state persistence and CSS key class - **added** — Add `st.expander` & `st.popover` state persistence and CSS key class - **added** — Add `required` parameter to `st.pills` and `st.segmented_control` ##### What's Changed ###### New Features 🎉 * [feat] Allow specifying number of visible items via `expanded` in `st.navigation` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14051 * [feat] Add `on_click` rerun support to `st.link_button` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14116 * [feature] Add file type shortcuts for `st.file_uploader` and `st.chat_input` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14140 * Allow programmatically setting `st.dataframe` selections by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13594 * [feat] Extract leading icon from alert body by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14173 * [feat] Serve static files with native content types by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14090 * feat: allow external URLs in st.Page for navigation sidebar by @t0k0shi in https://github.com/streamlit/streamlit/pull/13691 * [feat] Add `AudioColumn` and `VideoColumn` to `st.column_config` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14032 * [feat] Add `st.menu_button` widget by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13981 * [feature] Add `hide_index` and `hide_header` to `st.table` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14113 * [feature] Add `height` parameter to `st.chat_input` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14165 * [feature] Add `st.file_uploader` support to AppTest by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14341 * [feature] Always show the dataframe column visibility menu by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14336 * [feature] Add support for relative static file serving URLs in media elements by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14317 * [feature] Add `alignment` parameter to `column_config` columns by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14333 * [feat] Complete incomplete markdown syntax during streaming by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13939 * [feature] Stable Block.id for passive keyed layout containers by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/14330 * [feature] `st.tabs` state persistence and CSS key class by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/14332 * [feature] `st.expander` & `st.popover` state persistence and CSS key class by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/14356 * [feature] Add `required` parameter to `st.pills` and `st.segmented_control` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14414 * Add support for pandas 3.x by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13812 * [feature] Add `single-row-required` selection mode to `st.dataframe` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14288 * [feature] Add `autoscroll` parameter to `st.container` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14502 * [feature] Add filter mode to select widgets by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14537 * [feature] Add `st.iframe` command by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14433 ###### Bug Fixes 🐛 * [fix] Allow running streamlit with python optimization by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14171 * [Fix] Fix `st.text_area` `height="content"` not working by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14228 * Fix stale anchor preserved when clearing transient nodes by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14251 * fix(testing): initialize BidiComponentManager in AppTest mock runtime by @tysoncung in https://github.com/streamlit/streamlit/pull/14301 * [fix] Python 3.14 PEP 649 annotation compatibility across `inspect.signature()` calls by @lukasmasuc _[Truncated at 4000 characters — full notes: https://github.com/streamlit/streamlit/releases/tag/1.56.0]_ ### 1.55.0 - Date: 2026-03-03 - Version: 1.55.0 - Original notes: https://github.com/streamlit/streamlit/releases/tag/1.55.0 - Permalink: https://whatsnew.fyi/product/streamlit/releases/1.55.0 - **deprecated** — Add deprecation warning to SnowparkConnection - **added** — Extend sprintf to support thousand separator - **added** — Refactor SettingsDialog and add copyable version - **added** — Exclude collapsed expander content from browser find-in-page - **added** — Allow dynamic changes to st.pills and st.segmented_control options when key is provided - **added** — Add support for cachetools 7.x - **added** — Add support for selections on multi-view vega charts - **added** — Add client.allowedOrigins config option - **added** — Have server ack app_heartbeat messages received from client - **added** — Add metricValueFontSize and metricValueFontWeight theme options - **added** — Add width auto parameter to st.markdown - **added** — Bind widgets to query params with color_picker support - **added** — Bind st.checkbox and st.toggle to query params - **added** — Auto-escape some markdown syntax in markdown labels - **added** — Bind st.text_input and st.text_area to query params - **added** — Add page visibility parameter to st.Page - **added** — Add width and height configuration to st.table - **added** — Bind st.radio and st.selectbox to query params - **added** — Bind st.number_input to query params - **security** — Prevent SSRF attacks via path traversal in component file handling ##### What's Changed ###### Breaking Changes 🛠 * Add deprecation warning to SnowparkConnection by @lukasmasuch in https://github.com/streamlit/streamlit/pull/14125 ###### New Features 🎉 * Extend sprintf to support thousand separator by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13284 * Refactor `SettingsDialog` & add copyable version by @mayagbarnes in https://github.com/streamlit/streamlit/pull/13791 * Exclude collapsed expander content from browser find-in-page (Cmd+F) by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13818 * Allow dynamic changes to `st.pills` and `st.segmented_control` options when key is provided by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13684 * Add support for cachetools 7.x by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13839 * Add support for selections on multi-view vega charts by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13591 * Add `client.allowedOrigins` config option by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13829 * Have server ack app_heartbeat messages received from client by @vdonato in https://github.com/streamlit/streamlit/pull/13810 * feat: add metricValueFontSize and metricValueFontWeight theme options by @kagawa0710 in https://github.com/streamlit/streamlit/pull/13550 * [feature] add width auto parameter to st.markdown by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/13841 * Bind widgets to query params - FE hooks & `color_picker` support by @mayagbarnes in https://github.com/streamlit/streamlit/pull/13845 * Bind widgets to query params - `st.checkbox` & `st.toggle` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/13900 * Auto-escape some markdown syntax in markdown labels by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13887 * Bind widgets to query params - `st.text_input` & `st.text_area` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/13901 * Add page visibility parameter to `st.Page` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13905 * Add `width` and `height` configuration to `st.table` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13850 * Bind widgets to query params - `st.radio` & `st.selectbox` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/13922 * Bind widgets to query params - `st.number_input` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/13917 * Bind widgets to query params - `st.multiselect` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/13951 * [DynamicContainers] Dynamic Popovers by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/13914 * Add select all and select x matches (select all 2) by @sfc-gh-dmatthews in https://github.com/streamlit/streamlit/pull/13795 * New styling for selectbox and multiselect (select all 3) by @sfc-gh-dmatthews in https://github.com/streamlit/streamlit/pull/13796 * New styling for date and time widgets (select all 4) by @sfc-gh-dmatthews in https://github.com/streamlit/streamlit/pull/13797 * New styling for remaining dropdowns (select all 5) by @sfc-gh-dmatthews in https://github.com/streamlit/streamlit/pull/13798 * Add `delta_description` to `st.metric` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13848 * [DynamicContainers] Dynamic Tabs by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/13910 * [feat] Add scroll arrows for overflowing tabs in `st.tabs` by @lukasmasuch in https://github.com/streamlit/streamlit/pull/13987 * [DynamicContainers] Dynamic Expanders by @sfc-gh-lwilby in https://github.com/streamlit/streamlit/pull/13888 * Bind widgets to query params - `st.slider` & `st.select_slider` by @mayagbarnes in https://github.com/streamlit/streamlit/pull/13979 * [feat] Add custom hex color support for markdown rendering by @lukasmasuch in https://github.com/streamlit _[Truncated at 4000 characters — full notes: https://github.com/streamlit/streamlit/releases/tag/1.55.0]_