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.65.0 (latest)
Release date: October 2, 2026
Highlights
- πΏ Announcing side drawers for
st.dialog: setposition="left"orposition="right"to open a dialog as a full-height drawer (#16863, #8186). - πΌ Introducing the
altparameter, so you can give images, media, charts, maps, and data elements an accessible name for screen readers:st.imageandst.pyplot(#17137).st.audio,st.video, andst.pdf(#16568, #17118).st.altair_chart,st.vega_lite_chart, and the built-inst.line_chart,st.bar_chart,st.area_chart, andst.scatter_chart(#17041, #17069).st.echarts_chart,st.plotly_chart,st.graphviz_chart, andst.mermaid_chart(#17080, #17081, #17085, #17096).st.mapandst.pydeck_chart(#17086).st.dataframe,st.data_editor, andst.table(#17125, #17095).st.iframe(#17040, #16607).
Notable Changes
- π The
on_change="ignore"mode reaches eight more widgets, so a new value updates the widget and any bound query parameter without a rerun:st.checkboxandst.toggle(#16960).st.radio(#16951).st.multiselect(#16908).st.text_area(#17002).st.date_input(#17064).st.time_input(#17159).st.file_uploader(#17172).
- π
st.text_inputandst.number_inputhave a newrequiredparameter that blocks empty values from being committed or submitted in a form (#16956, #17023, #13497). - π
st.expanderandst.tabssupportbind="query-params", so you can share a URL that keeps an expander open or a tab selected (#15462, #16988). - π You can paste a full date range into the start field of a range-mode
st.date_inputto set both dates at once (#17004). - π The new
theme.dataframeHeaderTextColorconfig option sets the header text color forst.dataframeandst.data_editor(#17181, #16478). - π§ͺ
AppTest.query_paramsreturns single values as strings instead of one-item lists, so assertions likeat.query_params["x"] == ["1"]need to become== "1"(#17191).
Other Changes
- π‘ Mistyped or removed
st.*commands raise anAttributeErrorthat suggests the correct name or replacement (#16912). - π¬ Session State mutation errors show the exact
st.session_state[key]expression and how to fix it (#17016). - π¦ Streamlit can be installed alongside
websockets17.x (#17113, #17097). - π Bug fix:
st.query_paramsfollows the URL when browser back/forward changes only the query string on the same page (#16989, #13963). - π¦ Bug fix: Widgets bound to query parameters restore their values from the URL on browser back/forward (#16998, #13853).
- πͺ² Bug fix: Ctrl+C and SIGTERM stop the server even when an app script is stuck in a loop (#17022, #2975).
- π Bug fix: Dialogs opened from a fragment stay responsive when that fragment reruns (#17039, #17011).
- π Bug fix: Keyed widgets that first appear after a Session State write show the stored value instead of their default (#17106, #17093).
- π Bug fix:
st.data_editorkeeps leading decimals, so typing.07commits0.07instead of7(#16920, #16909). - π·οΈ Bug fix: Clearing a dataframe selection through Session State a second time also unchecks the rows in the grid (#17224, #17195).
- πͺ³ Bug fix:
LinkColumnshows the:material/open_in_new:icon in narrow columns instead of truncated text (#17090, #14782). - πͺ° Bug fix:
st.chat_inputplaced inst.bottomno longer triggers scroll-to-bottom for the app (#16980, #16977). - π¦ Bug fix: Pressing Enter in a form submits with the correct button when the first submit button is disabled (#17171).
- π¦ Bug fix: Synchronous
st.cache_dataandst.cache_resourcefunctions that return an awaitable raise a clear error instead of a confusing serialization failure (#16921). - π¦ Bug fix:
st.imageaccepts the removeduse_column_widthparameter with a warning instead of raising aTypeError(#16999). - π¦ Bug fix:
st.imageandst.pyplotno longer use list indexes as alt text, andst.imagelinks with unsafe URL schemes render as plain images (#17136). - πΈοΈ Bug fix: Element toolbar buttons include the element's
alttext in their accessible names and have a 24px minimum target size (#17211, #17225, #16148, #17127). - π Bug fix: Range-mode
st.date_inputvalidation errors say the date is outside the allowed range instead of naming the wrong field (#16983). - π¦ Bug fix: Range-mode
st.date_inputcancels a half-finished calendar selection when the app changes its value (#16984). - π¦ Bug fix:
st.date_inputclears partly typed dates when aclear_on_submitform resets (#16985). - π½ Bug fix:
st.date_inputandst.datetime_inputkeep their clear and error icons visible in narrow layouts (#16986). - π» Bug fix: Unchecked
st.checkboxandst.radiooptions show a hover state again, matching secondary buttons (#17034, #17035). - π Bug fix: A custom
theme.borderColorno longer fills the off track ofst.toggleor the main menu's auto-rerun toggle (#17079, #17083). - π¦ Bug fix: The visible sidebar border gets stronger on hover when
theme.showSidebarBorderis enabled (#17071, #12803). - πͺ² Bug fix: Keyboard events without a key no longer throw errors in global hotkeys or non-dismissible dialogs (#17105, #17111, #17082, #17107).
- π Bug fix:
CacheReplayClosureErrornames the layout block instead of showing a$THINGplaceholder (#17065). - π Bug fix:
AppTestform widgets commit their values only when the form is submitted, matching the browser (#16972). - π Bug fix:
AppTest.get()accepts the same element names asAppTestattributes, such asdatetime_inputandpills(#17000). - π·οΈ Bug fix:
AppTestlistsst.expanderelements with an icon underat.expanderinstead ofat.status(#17162). - πͺ³ Bug fix:
AppTestsupportsst.spacethroughat.space(#17208).
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.