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:
Terminal
pip install --upgrade streamlit
Version 1.67.0 (latest)
Release date: November 5, 2026
Highlights
- π² Introducing
st.grid, a responsive grid container for repeated tiles like metric cards, galleries, and dashboard cards that reflow with the available width (#17800, #11101). - π€ Announcing agent-accessible apps! When you turn on the experimental
server.enableAgentApioption, AI agents and other programs can use your app over HTTP or through an MCP endpoint that you can add to clients like Claude, ChatGPT, Cursor, and VS Code (#17731, #17510). - π¨ Introducing a refreshed default theme! The built-in light and dark themes have a warmer palette, updated colors, and widget and sidebar borders shown by default, and
st.mapmarkers use your theme's primary color (#17450, #17467, #17495, #17493).
Notable Changes
- πΎ You can limit the memory used by
st.cache_datawith its newmax_sizeparameter for each function, or across all functions with the newserver.maxCacheDataSizeconfiguration option (#17552, #17553, #2911). - π© The following widgets have a new
requiredparameter to prevent users from committing or submitting an empty value:st.date_input(#17165).st.time_input(#17420).st.datetime_input(#17565).st.text_area(#17590, #17737).st.selectbox(#17676).
- π
st.dialogaccepts a pixel width, so you can size a dialog to fit fixed-width content. Invalidwidthvalues now raise an error instead of falling back to the small dialog (#17412). - π§
st.Pagehas ahelpparameter to describe each page in a navigation tooltip, whichst.page_linkalso uses by default (#17807). - πͺ
st.selectboxhas aniconparameter to show an emoji or Material icon at the start of the field, likest.text_input(#17850, #17840). - π
st.echarts_charthas new selection and data features:- Set
on_selectto return the point and brush selections that you enable in the chart's spec (#16786). - Dataframes in
dataset.sourceare sent as Arrow, which makes large charts faster and displays values the same way asst.dataframe(#17678). - Dataframe-backed charts have a "Show data" toolbar action that displays the chart's data as a table (#17708).
- Set
- β‘
st.altair_chartandst.vega_lite_chartsend selections as soon as a click or brush gesture ends, so selection reruns are faster and a form submitted right after includes the latest selection (#17666). - π§ You can set a server-wide default TTL for
st.connectionwith the newrunner.connectionDefaultTTLconfiguration option (#17248).
Other Changes
- π The bundled
developing-with-streamlitagent skill has improved guidance on theming and CSS, Session State, testing with AppTest, dynamic containers, and performance (#17473, #17483, #17496, #17605, #17674, #17675, #17724). - π The docstrings for
st.pyplot,st.plotly_chart, andst.echarts_chartand the bundled agent skill recommend Vega-based charts orst.echarts_chartwith a dataframe source for new charts.st.echarts_chartalso raises an error for unsupported ECharts GL map components instead of rendering a blank chart (#17769, #17810). - π’
st.echarts_charttooltips acceptst.metricnumber formats intooltip.valueFormatter, so you can format tooltip values without JavaScript (#17755). - π§ͺ
AppTestsupportsst.data_editor, file uploads inst.chat_input, and settingst.userandst.contextfor a test (#17476, #17464, #17611). - π£ Type checkers infer a fixed-length tuple from
st.columnswhen you pass an integer from 1 to 6 or a tuple of up to six widths, so a mismatched unpack is caught before the app runs (#17498, #17506). - π Charts,
st.metric, andst.dataframeload faster because the "Show data" grid and Vega are downloaded only when needed (#17846, #17853). - β© The Material Symbols icon font starts loading at app startup, so icons appear sooner on first load (#17849, #17839).
- π Corrected outdated docstrings and configuration help text, including for
client.toolbarMode(#17613). - π Bug fix:
st.echarts_charthas better default layouts for titles with top legends, treemaps, and horizontalmarkLinelabels (#17885). - π¦ Bug fix: Default tooltips in
st.echarts_chartlabel each field and format dates when the chart's data is a dataframe indataset.source(#17883). - πͺ² Bug fix: The page keeps scrolling when the mouse wheel passes over an
st.echarts_chartthat zooms or pans with the wheel, such as a default treemap, until the pointer rests on the chart (#17882, #17507). - π Bug fix: When an
st.echarts_chartspec can't be serialized, the error names the offending value and how to convert it (#17881). - π Bug fix: The agent API matches browser behavior more closely and has more accurate snapshots, clearer error messages, and better MCP tool descriptions (#17870, #17871, #17872, #17880).
- π Bug fix:
height="stretch"dataframes and data editors fall back to their default height when no parent sets one, and they stay inside their parent while you resize them (#17879, #17662). - π·οΈ Bug fix: Dataframes and chart "Show data" tables no longer have extra space below them (#17864).
- πͺ³ Bug fix:
st.echarts_charthides overlapping labels on time, value, and log axes by default (#17858). - πͺ° Bug fix:
snowflake-callers-rightsconnections use the container's protocol and port settings and no longer require a default database and schema (#17848, #17820). - π¦ Bug fix: The range calendar in
st.date_inputno longer loses or double-commits the first date you pick (#17833). - π¦ Bug fix: Element calls no longer rewrite shared method attributes, which serialized concurrent script threads on free-threaded Python (#17823, #17801).
- π¦ Bug fix: Widgets don't rerun the app when an interaction leaves their value unchanged, like closing
st.multiselectwithout changing it (#17822). - π¦ Bug fix: Keyed elements stay mounted when a rerun inserts content above them, so they keep their state, focus, and in-progress input (#17804).
- πΈοΈ Bug fix: The global Streamlit meta-skill reliably finds a project's bundled agent skill on Windows, macOS, and Linux without creating or syncing Python environments (#17803).
- π Bug fix: Installing the bundled agent skills from the in-app prompt no longer fails when the server's console can't print the install summary, which mostly affected Windows (#17802).
- π¦ Bug fix: Streamlit replaces pandas
inplace=calls that pandas 3.1 deprecates, sost.data_editorrow deletion and charts keep working on pandas 4 (#17795). - π¦ Bug fix:
st.vega_lite_chartredraws when new data has the same shape as the old data, and Altair and built-in charts update their data in place instead of rebuilding the view (#17793). - π½ Bug fix:
st.dataframeandst.data_editorwith a fixed height expand to show more rows in fullscreen (#17791, #17771). - π Bug fix:
st.echarts_chartand Vega-based charts use faster rendering defaults for very large datasets, so they no longer stall the browser (#17788). - π¦ Bug fix: Time axes in
st.echarts_chartshow midnight values as dates instead of with a00:00:00time (#17781). - πͺ² Bug fix:
st.echarts_chartlogs chart errors to the browser console and can render again after an option fails (#17780). - π Bug fix:
st.metricsparklines and the dataframe column statistics menu no longer log a Vega-Lite version warning in the browser console (#17778). - π Bug fix: Muted text, like placeholders and file uploader hints, meets WCAG AA contrast in the default light theme (#17766, #8289, #8249, #8276, #8288, #16149).
- π Bug fix: Dollar amounts in Markdown, like
$315K of $1.46M, render as plain text instead of being parsed as math (#17753). - π·οΈ Bug fix:
st.echarts_chartdefault colors are readable in dark mode. Candlestick charts also use green for rising and red for falling, matchingst.plotly_chart(#17750). - πͺ³ Bug fix: Altair and Vega-Lite charts restore their interval brush rectangle after remounting or switching to fullscreen (#17744).
- πͺ° Bug fix: Element toolbars, like the one on
st.dataframe, appear above an overlappingst.segmented_controloption and stay clickable (#17734). - π¦ Bug fix: Printed apps follow the on-screen layout without charts, cards, metrics, or the sidebar overlapping or getting clipped (#17727).
- π¦ Bug fix:
st.pydeck_chartresets its camera when a rerun changes the chart's views, such as from a map view to a globe view (#17701). - π¦ Bug fix: Errors and docs for
@st.fragment(parallel=True)no longer suggest writing to outside containers, which parallel fragments don't support (#17688, #17612). - π¦ Bug fix: When script runs overlap, the frontend applies each run's completion to the run that finished, so stale elements are cleaned up correctly and
st.chat_inputandst.text_inputre-enable at the right time (#17686). - πΈοΈ Bug fix:
st.dataframe,st.table, andst.data_editorcorrectly display decimals, periods, intervals, categoricals, and other Arrow types (#17684, #5864). - π Bug fix:
st.plotly_chart(theme=None)no longer applies the app's theme fonts and backgrounds, so light figures stay readable in dark mode (#17671, #17665). - π¦ Bug fix: Custom themes that don't set
textColorno longer log an invalid sidebar color warning in the browser console (#17669, #17638). - π¦ Bug fix: When two pages in
st.navigationresolve to the same URL pathname, the error names both pages (#17646). - π½ Bug fix:
st.feedbacksupports thepersist_stateandbindparameters like other input widgets (#17621). - π Bug fix: A
snowflake-callers-rightsconnection raises an error if it's used from a session other than the one that created it, so queries can't run with another user's identity (#17584). - π¦ Bug fix:
st.audio_inputin the sidebar no longer shows an error after a successful recording (#17583, #17585). - πͺ² Bug fix: Help tooltips no longer open and stick when their trigger gets focus from a mouse click, such as after closing an
st.dialog(#17581, #17562). - π Bug fix: Calling
.toast()on the object returned byst.toastupdates the toast in place again (#17580, #17522). - π Bug fix: The
st.chat_inputaudio waveform stays visible after the text area expands, and recording works with a customheight(#17579, #17528). - π Bug fix: The error for a fragment writing to an outside container without a reserved position explains how to reserve one (#17577, #17563).
- π·οΈ Bug fix: The "File change" prompt no longer goes missing when run on save is off (#17551).
- πͺ³ Bug fix: The default time slider can reach the end of the day, and other sliders can reach a maximum that falls just past their last full step (#17504, #17494).
- πͺ° Bug fix: Type hints for
st.componentsmatch their runtime behavior (#17501). - π¦ Bug fix: Top navigation section dropdowns support arrow-key navigation and follow the expected Tab order, and Tab skips links hidden in the overflow menu (#17423, #17482, #17339).
- π¦ Bug fix: Type checkers report unknown container methods, like
st.sidebar.echo(), as errors (#17475). - π¦ Bug fix: Custom Components v2 events,
st.menu_buttonselections, andButtonColumnclicks are no longer lost when another widget updates while their rerun is queued (#17471, #17215). - π¦ Bug fix: After
st.logout(), a reconnecting client can't resume the logged-out session or its Session State (#17310). - πΈοΈ Bug fix: Timedelta columns in
st.dataframeandst.data_editordisplay as readable durations, sort by value, and can be edited.NumberColumnalso has a new"duration"format (#16722, #8949, #9751).
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.