2026 release notes
This page contains release notes for Streamlit versions released in 2026. For the latest version of Streamlit, see Release notes.
Version 1.59.0
Release date: July 6, 2026
Highlights
- โจ Introducing
ButtonColumnโ a new column type forst.dataframeandst.data_editorthat renders clickable buttons inside table cells, letting users trigger actions directly from a row (#14544, #7015). - ๐
st.dataframehas a new column statistics submenu โ click the dropdown icon in any column header to see per-column summary stats (#14307, #13148). - ๐ฟ Introducing
st.skeletonโ a new element that renders animated loading placeholders, making it easy to give users visual feedback while content is loading (#15169, #8032). - ๐จ Introducing
st.mermaid_chartโ render Mermaid diagrams directly in your app, letting you embed flowcharts, sequence diagrams, and more. Mermaid also works fromst.markdown(#14022, #10721).
Notable Changes
- ๐
st.chat_inputhas a newsubmit_modeparameter that controls widget behavior after the user submits a message, e.g. showing a stop button or disabling the chat input (#14344, #8323, #11854). - ๐
st.dataframeandst.data_editorsupport a newMarkdownColumntype inst.column_configthat renders Markdown text inside table cells (#13931, #10211). - ๐
st.markdownhas a newanchorsparameter for adding linkable heading anchors to Markdown content (#15722, #13913). - ๐ป You can now launch Streamlit apps directly with
python app.pyoruv run app.pyusing the newApp.run()entry point โ no morestreamlit runrequired (#15563, #9450, #11420). - ๐งฉ
st.fragmentcan now write to containers defined outside the fragment. Fragments can update any part of your app โ including elements created before the fragment โ without triggering a full rerun (#15623, #15620, #10481). - ๐
st.chat_inputnow supports pasting files directly into the input field (#15558, #10307). - ๐ค
st.write_streamnow supports OpenAI Responses API streams in addition to the existing Chat Completions streams (#15559, #11061). - ๐
st.set_page_configsupports a new"locked"option forinitial_sidebar_statethat prevents users from toggling the sidebar open or closed (#15459, #15411). - ๐
Widgets have a new
persist_stateparameter for finer control over how widget state is preserved across reruns (#15645). - ๐ท
st.camera_inputhas a newresolutionparameter to control the captured image resolution (#15766, #4320). - ๐งช
AppTestnow supports testingst.download_buttonandst.image(#15528, #9003). - ๐พ Programmatic secrets now support list values (#15491).
- โจ You can now look up Streamlit API documentation from the CLI with
streamlit docs <command>(#15547). - ๐ A new
server.xsrfCookieSameSiteconfig option lets you customize theSameSiteattribute of the XSRF cookie for deployments with specific cross-site requirements (#15634, #5793, #9397). - ๐ก Streamlit now recommends installing AI coding skills on app startup to improve your development workflow with AI coding assistants (#15437, #15473).
- โ The
/_stcore/metricsendpoint now reports memory stats in a less detailed (cheaper) form by default (#15472). - ๐ป The deprecated Snowpark connection type has been removed. Migrate to a supported connection type (#15784).
- ๐ป The deprecated
st.bokeh_chartcommand has been removed. Use thestreamlit-bokehcomponent instead (#15636).
Other Changes
- โก VegaLite charts now use Vega's native resize API for faster rendering when the container size changes (#15302).
- ๐จ The pagination widget's selected-state styling has been redesigned (#15550).
- ๐ง Various fixes related to the Baseweb library removal (#15737).
- ๐ Bug fix: The metrics endpoint no longer errors when SQLAlchemy connections are present (#15334).
- ๐ฆ Bug fix:
@st.fragment(run_every=...)no longer raises aTypeErrorin_run_with_thread_state(#15376). - ๐ชฒ Bug fix: Named Snowflake connections defined in config files are now correctly discovered and used (#15382).
- ๐ Bug fix: P-mode PIL palette images are now hashed correctly to prevent hash collisions (#15397).
- ๐ Bug fix: The server now correctly binds to IPv6 dual-stack wildcards for the default address (#15400).
- ๐ Bug fix: Stale and invalid auth cookies are now cleared on login (#15420).
- ๐ท๏ธ Bug fix:
widgetMgris synced correctly to fix lazy loading intab.open(#15460). - ๐ชณ Bug fix: Installed Custom Component v2 components are now correctly discovered in
AppTest(#15488). - ๐ชฐ Bug fix:
st.pillsandst.segmented_controlcallbacks now fire correctly after selection (#15522). - ๐ฆ Bug fix: The page title is no longer reset to the default on rerun (#15527).
- ๐ฆ Bug fix: The "Missing Submit Button" warning no longer flashes briefly on app load (#15561).
- ๐ฆ Bug fix: Streamlit now defaults to the polling file watcher in WSL environments, avoiding inotify issues (#15562).
- ๐ฆ Bug fix:
AppTestnow correctly handles formatted labels informat_funcwidgets (#15564). - ๐ธ๏ธ Bug fix: The invalid session upload error message now explains multi-replica deployment as a possible cause (#15635).
- ๐ Bug fix:
st.selectboxno longer loses its selection whenformat_funcdepends on object identity (#15639). - ๐ฆ Bug fix: Pressing Escape no longer clears the current selection in
st.multiselect(#15646). - ๐ฆ Bug fix:
StreamlitPagenow validates that itssourcematches the registered page, catching misconfiguration earlier (#15721, #10572). - ๐ฝ Bug fix:
st.dataframeno longer intercepts the Ctrl+F keyboard shortcut when the search bar is disabled (#15764). - ๐ Bug fix: Column headers in
st.dataframeno longer wrap text in the column header menu (#15772).
Version 1.58.0
Release date: May 28, 2026
Highlights
- ๐ Introducing
parallel=Truefor@st.fragment, which lets fragments run concurrently for more responsive apps and background-style workflows (#15214). - ๐ฟ Introducing
st.paginationto help you build paged interfaces, e.g. for dataframes (#14975, #10785). - ๐ Announcing
streamlit skills, a new CLI command for installing AI agent skills (#15116).
Notable Changes
- ๐
st.Appnow supports custom script error handling, letting you attach a custom exception handler to your app (#14972, #3426, #8713). - ๐
st.expanderandst.statushave a newtypeparameter for a more compact visual style (#14054, #13246). - ๐ป The deprecated
element.add_rowsfeature has been removed (#15034, #299, #13063, #7994, #5860). - ๐ป LangChain callback handler integration has been removed (#15051).
Other Changes
- ๐ Query-parameter-bound widgets now keep the URL in sync when their values change through Session State (#14744).
- ๐ Widget and icon sizing is more consistent across the app (#15056, #15098, #13945).
- โฑ Streamlit reduces the timeout for external IP lookups to avoid startup freezes when the lookup is slow or unavailable (#14984).
- ๐ก
st.markdownnow blocksjavascript:andvbscript:URLs in Markdown links (#15161). - ๐ Bug fix: Streamlit now supports symlinks in Starlette static file serving (#15112, #13600).
- ๐ฆ Bug fix: Fragment apps no longer crash because of stale auto-reruns (#15130, #15084).
- ๐ชฒ Bug fix:
blake2bhashing now usesusedforsecurity=Falsefor FIPS-compatible environments (#15149, #15148). Thanks, andriykislitsyn! - ๐ Bug fix:
st.logincookies now restore 30-day persistence with aMax-Agevalue (#15194, #15193). Thanks, GiovanniPaoloGibilisco! - ๐ Bug fix: OAuth PKCE behavior has been restored in the Starlette-based auth flow (#15282, #15115).
- ๐ Bug fix: OAuth no longer regresses with
MismatchingStateErrorafter upgrading to 1.57.0 (#15048, #14991). - ๐ท๏ธ Bug fix: Provider tokens now use
joserfc, improving auth compatibility and token handling (#15178, #15170). - ๐ชณ Bug fix:
st.vega_lite_charttooltips work again inside dialogs (#15191, #12390). Thanks, marawanokasha! - ๐ชฐ Bug fix:
st.buttonwarns when a keyboard shortcut is reserved by the browser (#15217, #15216). - ๐ฆ Bug fix:
st.markdownshows its help icon again whenunsafe_allow_html=True(#15232, #15211). - ๐ฆ Bug fix: Browser Back/Forward navigation now works for pages with Unicode URL paths (#15281, #15267).
- ๐ฆ Bug fix: Programmatically closed popovers and expanders no longer reopen when you interact with another container (#14945, #14943).
- ๐ฆ Bug fix:
st.selectboxno longer hides its first option when exactly seven options are selected (#14997, #14989). - ๐ธ๏ธ Bug fix:
st.multiselectdisables "Select all" for very large option lists to avoid performance problems (#15301, #14918, #15299). - ๐ Bug fix: Tables, dataframes, and data editors no longer accidentally overscroll during interaction (#15309). Thanks, kantuni!
Version 1.57.0
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).
Version 1.55.0
Release date: March 3, 2026
Highlights
- ๐ฟย Introducing dynamic containers:
st.tabs,st.popover, andst.expandercan rerun the app when they are opened or closed by setting theon_changeparameter. If a key is also provided, you can programmatically open and close them, too. - ๐๏ธย Announcing widget binding! Most non-trigger widgets have a
bindparameter to simplify syncing widget state with query parameters.
Notable Changes
- ๐ย
st.imagehas alinkparameter to make images clickable with HTTP/HTTPS URLs (#14139, #9836). - ๐ฅทย
st.Pagehas avisibilityparameter 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.metrichas adelta_descriptionparameter to display descriptive text next to delta values (#13848, #13690). - ๐ย You can configure the font weight and size for
st.metricwith the newmetricValueFontWeightandmetricValueFontSizeconfiguration options (#13550, #12300). Thanks, kagawa0710! - ๐ย
st.tablehasheightandwidthparameters (#13850, #10775, #10820). - ๐ย
st.altair_chartandst.vega_lite_chartsupport 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.markdownacceptswidth="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-originpostMessage(#13829, #6389).
Other Changes
- ๐๏ธย Page titles in
st.Pageand section labels inst.navigationsupport Markdown (#14053, #14010, #11771). - ๐งนย Common block elements in widget labels are auto-escaped for convenience (#13887, #7359).
- ๐โโ๏ธย
st.multiselectlets users select all options or all currently filtered options with a single click (#13795, #4714). - ๐
ย Improved the design of
st.multiselectandst.selectbox(#13004). Thanks, rishi-kumar0612! - โผ๏ธย All widget drop-downs were restyled for consistency (#13796, #13797, #13798).
- โ๏ธย For better accessibility,
st.tabsdisplays navigation arrows when the tabs overflow their container horizontally (#13987, #5552). - ๐ย The app menu was redesigned (#14101):
- ๐ย Improved
streamlit config showoutput to better distinguish theme value sources (#13761). - โฅ๏ธย To improve behavior in hosted environments, the Streamlit server acknowledges client heartbeats (#13810).
- ๐ฃย Extended
sprintfto support,as a thousands separator inNumberColumn,ProgressColumn,st.number_input,st.slider, andst.metric(#13284, #1301). - โฌ๏ธย Added support for cachetools 7.x (#13839, #13801).
- โ ๏ธย Added a deprecation notice to
SnowparkConnectionfor better visibility (#14125). - ๐ฆย Bug fix:
st.spinneravoids a race condition when used right before a cache miss (#13849, #13634). - ๐ฆย Bug fix:
st.date_inputvalues are normalized in Session State to prevent a type error (#14123, #14109). - ๐ย Bug fix:
st.metricwith 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_controlhas consistent border styling on hover (#14067, #12802). - ๐ฆย Bug fix:
st.date_inputandst.datetime_inputremove validation marks when they are cleared (#14066, #14052). - ๐ฆย Bug fix: Fixed a rendering regression for
vconcatcharts in Altair with faceted children (#14065, #14050). - ๐ฆ ย Bug fix:
st.Pageraised 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.tabsretain their state when rendered after a transitional element likest.spinner(#14023, #14018). - ๐ท๏ธย Bug fix: Treemap and sunburst Plotly charts support selections (#13935, #9001).
- ๐ย Bug fix: Fixed a width regression for layered
vconcatcharts in Altair (#13980, #13974). - ๐ย Bug fix:
st.multiselectraises an exception whenmax_selectionsisn'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_sliderdoesn't apply its format function twice inAppTest(#13837, #13832). - ๐ย Bug fix: Content in collapsed expanders is not included in page search (#13818).
Version 1.54.0
Release date: February 4, 2026
Notable Changes
- ๐จย The
colorparameter ofst.area_chart,st.bar_chart,st.line_chart, andst.scatter_chartsupports the basic color palette which can be configured with theming (#13739, #12694). - โฏ๏ธย You can use the new
theme.chartDivergingColorsto 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.logosupports 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_chartst.bar_chartst.line_chartst.scatter_chartst.altair_chartst.vegalite_chartst.pydeck_chartst.date_inputst.datetime_inputst.radiost.select_slider
- ๐ย
ListColumnandMultiselectColumnlet users select the text of their pills for copying (#13663). - ๐ปย
st.experimental_get_query_paramsandst.experimental_set_query_paramshave been removed. Usest.query_paramsinstead. - โ ๏ธย
st.experimental_userhas been removed. Usest.userinstead.
Other Changes
- ๐ฝย The warning about the proposed removal of
.add_rows()shows in the browser. Please leave feedback (#13063). - ๐ฆย When a
.streamlit/config.tomlfile 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
localhostin 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_chartdoesn't raise aKeyErrorwhen sorting melted data (#13695). - ๐ฆย Bug fix:
st.multiselectandst.selectboxdon'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 indexerror (#13659, #13658). - ๐ท๏ธย Bug fix:
SnowflakeConnection.query()correctly passes theparamsargument 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_inputwas increased to reduce filename truncation (#13589). - ๐ย Bug fix:
st.bar_chartdoesn't raise an error about y-axis minimum and maximum when the bars have all the same value (#13590, #13584).
Version 1.53.0
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.useStarletteconfiguration 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
- ๐ช
st.logoutlogs users out of your identity provider, if supported by your OIDC setup (#12693). Thanks, velochy! - ๐ To prevent unwanted stale elements, especially in chat layouts, Streamlit treats spinners as transient elements and doesn't include them in the element refresh that happens with reruns (#12826, #9239, #10199, #13166).
- ๐งฉ For custom components v2, style isolation is set in
st.components.v2.componentinstead of when an instance is mounted (#13518). - ๐จ To access heading font size and weights in custom components without using JavaScript to parse an array, CSS custom properties in an app include individual properties for each heading font size and weight (#13268).
- โ๏ธ For custom components v2,
html,js, andcssare all fully optional (#13511). - ๐
BaseConnectionhas a new class method to scope connections globally or by session (#13506). - ๐พ
st.cache_dataandst.cache_resourcecan be scoped to a session (#13482, #6703). - ๐งน
st.cache_resourcehas a new parameteron_releaseto use to clean up resources, like closing connections (#13439, #8674). - ๐ท๏ธ
st.multiselectdoesn't includeoptionsin widget identity when akeyis provided (#13448, #7855). - ๐ข
st.number_inputdoesn't includeminandmaxin widget identity when akeyis provided (#13512, #11277). - ๐
st.selectboxdoesn't includeoptionsin widget identity when akeyis provided (#13383, #6352, #8496, #4854). - ๐๏ธ You can format values for
st.sliderwith a newformatparameter (#13392, #13243). - ๐ผ๏ธ
st.dialoghas a newiconparameter to add an icon next to the dialog title (#13244, #13202). Thanks, KaranPradhan266! - โ๏ธ You can configure
st.data_editorto allow only adding or only deleting rows (#13228, #7091). - โก๏ธ You can display a button icon on the right instead of the left with a new
icon_positionparameter (#13150, #13069). Thanks, SiddhantSadangi! - โ๏ธ
st.columns,st.container, andst.spacesupport larger and smallergapandsizevalues (#13345). - ๐ฆ You can configure the maximum file size for
st.file_uploaderandst.chat_inputwith a new parameter that overrides theserver.maxUploadSizeconfiguration option (#12816, #12692, #12579). Thanks, rishabhjain1712! - ๐ You can configure the default width of the sidebar with
st.set_page_config(#12154, #11980). Thanks, jose-mindwayai! - ๐ The
optionsparameter inst.select_slidersupports Markdown (#12960, #11774). Thanks, jensonjohnathon! - ๐ The
deltaandvalueparameters inst.metricsupport Markdown (#13094, #11773). Thanks, jensonjohnathon! - ๐ฃ You can configure number format in
st.metric(#13193, #12229, #6951). - ๐ You can set the color of
st.metricdelta indicators from the basic color palette (#13153, #4052, #6665).
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.logolinks 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.jsondisplays a tooltip on hover for each element to show its full path (#13113, #13057). - ๐ฌ
st.chat_inputwas 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.authis 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_inputaccounts for floating point precision when incrementing and decrementing its value (#13484). - ๐ฆ Bug fix:
st.altair_chartcorrectly displays HConcat and VConcat charts (#13423, #13410). - ๐ฆ Bug fix:
st.selectboxis initialized correctly when its value is set from Session State (#13438, #13435). - ๐ฆ Bug fix:
st.htmlindents list items correctly (#13437, #13426). - ๐ Bug fix: A logger message for
SnowflakeConnectionreferences 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.spinnerare 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.dialogdoesn't show stale elements from a previous dialog (#13297, #10907). - ๐ชณ Bug fix:
st.data_editorbehaves correctly when starting with a column ofNonevalues (#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
Rfor 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.logodisplays 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).
Still have questions?
Our forums are full of helpful information and Streamlit experts.