Release notes
This page lists highlights, bug fixes, and known issues for the latest release of Streamlit. If you're looking for information about nightly releases or experimental features, see Pre-release features.
Upgrade Streamlit
Tip
To upgrade to the latest version of Streamlit, run:
Version 1.57.0 (latest)
Release date: April 29, 2026
Highlights
- π Introducing Starlette as the default web server! Streamlit now uses Starlette/Uvicorn instead of Tornado, bringing improved ASGI compatibility, better performance, and access to the modern Python async ecosystem. The underlying server is also exposed via
st.Appfor advanced configuration (#14553, #439, #861). - πΏ Introducing
st.bottomβ a pinned container at the bottom of your app, perfect for chat inputs, toolbars, and persistent controls (#14726, #8564, #8185).
Notable Changes
- β¨ Introducing the
:shimmer[]markdown directive β add animated loading text to your apps withst.markdown(":shimmer[Loading...]")for a polished streaming experience (#14055, #13247). - β‘ Direct Polars-to-Arrow conversion now bypasses pandas entirely, improving performance and type fidelity for Polars DataFrames (#14885, #12913).
- π» Removed deprecated
spec,use_container_width, andsharingkeyword arguments fromst.plotly_chartandst.vega_lite_chart(#14800). - π» Removed the deprecated
_get_websocket_headersfunction. Usest.context.headersinstead (#14801). - π§ͺ
st.testing.v1.AppTestnow supportsst.pills,st.segmented_control, andst.dataframekey lookups (#14518, #11361, #11338). - π Alert elements (
st.info,st.warning,st.error,st.success) have a newtitleparameter for adding a bold header to alert messages (#14665, #12417). - π¨
st.menu_buttonandst.popovernow hide the chevron when using menu-style icon-only labels (#14697). - π―
st.Appis now available in thestnamespace for programmatic app configuration (#14722). - π
st.Apphas a newsecretsparameter to programmatically pass secrets instead of relying onsecrets.tomlfiles (#14861, #10543). - π€ Streamlit now bundles developing-with-streamlit AI agent skills in the pip package:
- π
st.videoandst.mapnow have rounded corners matching other Streamlit elements (#14781, #12806).
Other Changes
- π Bug fix:
st.dataframeno longer crashes with pandas 3ArrowStringArraycolumns (#14611, #14609). - π¦ Bug fix: Custom component v1 serialization now correctly downcasts large Arrow types instead of failing (#14617, #14608).
- πͺ² Bug fix:
@st.cache_dataand@st.cache_resourcenow chain the original exception inUnserializableReturnValueErrorfor better debugging (#14655, #14654). Thanks, mango766! - π Bug fix: CSS Color Level 4 color functions (
oklch,lab, etc.) are now supported in color parameters (#14674, #14573). - π Bug fix: Query parameter space encoding is now consistent across all operations (#14691, #14671).
- π Bug fix:
st.data_editorcorrectly preservesNonevalues with pandas 3.0+ (#14694, #14693). - π·οΈ Bug fix: Namespace package children are now correctly evicted when watched source files reload (#14708, #14704).
- πͺ³ Bug fix:
st.radionow retains selections when usingformat_funcwith custom option objects (#14815, #14814). - πͺ° Bug fix:
st.bar_chartaxis labels now correctly swap whenhorizontal=True(#14866, #14830). - π¦ Bug fix:
st.text_areawithheight="content"now sizes correctly on initial load (#14884, #14876). - π¦ Bug fix:
st.file_uploaderno longer shows duplicate equivalent file extensions in the accepted types display (#14552, #11991).
Version 1.56.0
Release date: March 31, 2026
Highlights
- πΏ Introducing
st.menu_buttonβ a new widget that renders a dropdown button with a customizable popover container for building menus, toolbars, and action lists (#13981, #11409). - π Introducing
st.iframeβ embed external URLs or raw HTML content directly in your app using an iframe (#14433, #12977). - π
st.selectboxandst.multiselectnow support afilter_modeparameter that lets users search and filter options by typing (#14537, #6160, #7238).
Notable Changes
- π
st.dataframesupports programmatically setting selections via theselectionparameter (#13594, #10128). - π―
st.dataframehas a new"single-row-required"selection mode that always keeps exactly one row selected (#14288, #9253). - π
st.dataframecolumn configuration now supports analignmentparameter for controlling text alignment in columns (#14333, #12106). - π The column visibility menu in
st.dataframeis now always visible, making it easier to show and hide columns (#14336, #10649). - πΉ
AudioColumnandVideoColumnare now available inst.column_configfor displaying audio and video players directly in dataframes (#14032, #8345). - π Streamlit now supports pandas 3.x (#13812, #13211).
- π§
st.navigationhas a newexpandedparameter to control how many sidebar items are visible before collapsing (#14051, #9646). - π
st.Pagenow accepts external URLs, allowing you to add links to external sites in the navigation sidebar (#13691, #9025). Thanks, t0k0shi! - πΌ
st.tablehas newhide_indexandhide_headerparameters for cleaner table presentation (#14113, #8235, #9251). - β‘
st.link_buttonnow supports anon_clickcallback that triggers a rerun before navigating (#14116, #7453). - π
st.file_uploaderandst.chat_inputnow accept file type shortcuts like"image","audio","video", and"document"(#14140). - π
st.chat_inputhas a newheightparameter to control the initial height of the text area (#14165, #10724). - β¨ Alert elements (
st.info,st.warning,st.error,st.success) now automatically extract a leading Material icon from the message body and display it as the alert icon (#14173, #10892). - πͺ Streaming markdown now auto-completes incomplete syntax (e.g., unclosed bold, links, or code blocks) during streaming for a cleaner reading experience (#13939).
- π·
st.pillsandst.segmented_controlnow have arequiredparameter to enforce that at least one option is always selected (#14414, #9870). - π
st.containerhas a newautoscrollparameter that automatically scrolls to the bottom as new content is added (#14502, #8836). - π§©
st.tabs,st.expander, andst.popovernow preserve their open/closed state across reruns (#14332, #14356). - π Static files served via
st.static/now use native content types instead of a generic fallback (#14090). - π₯ Media elements now support relative static file serving URLs (e.g.,
/app/static/video.mp4) (#14317, #12104). - π§ͺ
st.file_uploaderis now supported in AppTest for programmatic testing of file upload flows (#14341, #8093). - π§ Widget state duplication warnings are now logged to the console instead of displayed in the app UI (#14141).
- π¦
BidiComponentResulthas been renamed toComponentResultin the custom components v2 API (#14253). - β The
_stcore/metricsendpoint is now fully OpenMetrics-compliant (#14538).
Other Changes
- π Bug fix: Streamlit can now run with Python optimization flags (
-O/-OO) (#14171, #14155). - π¦ Bug fix: Reduced false-positive file change detections on Windows by adding a stability check to the file watcher (#14174, #13954).
- πͺ² Bug fix:
st.text_areawithheight="content"now correctly auto-sizes to fit content (#14228, #14222). - π Bug fix: Stale anchor links are no longer preserved when clearing transient nodes (#14251, #14249).
- π Bug fix:
BidiComponentManageris now properly initialized in AppTest mock runtime (#14301, #14274). Thanks, tysoncung! - π Bug fix: Streamlit is now compatible with Python 3.14's PEP 649 deferred annotation evaluation (#14327, #14324).
- π·οΈ Bug fix: Tooltips on selected
st.multiselectoptions are now restored (#14353, #14351). - πͺ³ Bug fix:
server.portis now correctly updated after binding to port 0 (#14372, #11308). Thanks, joanaarnauth! - πͺ° Bug fix: Bound query params are now correctly restored in the URL when navigating in multi-page apps (#14374, #14350).
- π¦ Bug fix: Restored the
reactJsonViewCompatshim for the local dev server (#14391). - π¦ Bug fix:
st.exceptionlinks no longer overflow their container at small viewport widths (#14417, #12870). - π¦ Bug fix: Headings inside horizontal containers (
st.columns) no longer have extra top padding (#14419, #12434). - π¦ Bug fix: Programmatic dataframe selections now return
AttributeDictionaryfor consistent dot-notation access (#14455, #14454). - πΈοΈ Bug fix: Streaming markdown with color directives no longer shows rendering artifacts (#14468, #14460).
- π Bug fix: The
session_durationmetric is now OpenMetrics-compliant (#14476, #14432). - π¦ Bug fix: The main menu now has a visible border in dark mode (#14529).
Older versions of Streamlit
- 2026 release notes
- 2025 release notes
- 2024 release notes
- 2023 release notes
- 2022 release notes
- 2021 release notes
- 2020 release notes
- 2019 release notes
Still have questions?
Our forums are full of helpful information and Streamlit experts.
