Release date: September 1, 2026
Highlights
Introducing event-scoped fragment reruns, which let a widget callback rerun just one named fragment:
- Name a fragment with
@st.fragment(key=…)and target it withst.rerun("filters")orst.rerun(["alpha", "beta"])from anon_changeoron_clickcallback (#16161). st.rerun()andst.switch_page()now take effect inside widget callbacks instead of being discarded with a warning; apps that relied on the previous no-op will now rerun (#16158).
- Name a fragment with
Introducing on_change="ignore", a new mode that updates a widget in the browser without rerunning your app. Your script receives the buffered value on the next rerun, such as a button click, and the mode is available onst.sliderandst.text_input(#14828, #16605).
Introducing type="step"forst.expanderandst.status, which renders containers as a connected timeline — well suited to showing an agent’s or a pipeline’s progress (#16558, #13248).
Notable Changes
The wrapparameter introduced in 1.62.0 extends to more commands:st.pillsandst.segmented_controlacceptwrapto keep options on one horizontally scrollable row (#16369, #13516).st.markdown,st.title,st.header,st.subheader,st.caption, andst.textacceptwrap=Falseto keep long copy on one ellipsized line (#16617, #12583).- Controls placed directly in
st.columnsnow default to no wrapping so neighboring controls keep the same height; passwrap=Trueto restore wrapping (#16578).
st.multiselecthas a newselect_allparameter to always show, never show, or threshold the “Select all” bulk action, and pressing Enter now selects the first row (#16673, #16537).
st.title,st.header, andst.subheaderhave a newiconparameter that renders a leading emoji or Material Symbol scaled to the heading (#16418, #11752).
AppTestis more robust: apps using unimplemented commands stay inspectable, interacting with a disabled widget raises, container keys are exposed throughat.container(key=…)andat.get_by_key(), andswitch_page()resolves pages registered byst.navigation(#16711, #9814, #12844, #13163, #16611).
The new runner.cacheBackgroundRefreshTTLMultiplierconfig option widens or narrows the stale-while-revalidate window forrefresh_mode="background"caches (#16599).
Other Changes
Invalid API usage raises specific StreamlitAPIExceptionsubclasses for missing, incompatible, out-of-range, and wrongly typed parameters instead of generic Streamlit,TypeError, orValueErrorfailures (#16508, #16637, #16656, #16668, #16690, #16701, #16707).
st.spinnerkeeps animating at a slower rate underprefers-reduced-motionand exposes its label as an accessible status, so paused motion is not mistaken for a hung app (#16620, #16598).
st.contextsupports key notation sost.context["timezone"]matchesst.context.timezone,st.user.is_logged_inis typed asbool, and the documentedst.user.tokensnames surface in autocompletion (#16710).
Bug fix: The install-skills prompt shown with local error messages sizes its action labels to match the card’s text (#16482).
Bug fix: st.coderenders very long inputs instead of failing with a call-stack error, by skipping syntax highlighting past a line-count threshold (#16567, #11996).
Bug fix: st.date_inputandst.datetime_inputno longer crash for values near Python’s minimum and maximum dates when no explicit bounds are given (#16582, #7427).
Bug fix: st.menu_buttondropdowns and JSON path tooltips stay interactive insidest.dialog(#16583).
Bug fix: Pressing Cmd/Ctrl+C no longer opens the clear-cache dialog when the modifier is released before the C key (#16615).
Bug fix: Markdown list items holding a long unbreakable token wrap inside narrow containers instead of overflowing them (#16632, #16618).
Bug fix: Type checkers infer the documented return types for st.plotly_chart,st.pydeck_chart,st.file_uploader,st.chat_input, andst.selectboxwhen arguments are omitted or not literals (#16633, #16630).
Bug fix: Embedded apps forward the full guest-to-host postMessagestream to in-iframe hosts, which unblocks metrics events whenmetricsUrlis"postMessage"(#16647, #16644).
Bug fix: Ctrl/Cmd+A selects the typed filter text in st.multiselectinstead of being intercepted as a bulk-select shortcut (#16650).
Bug fix: st.datetime_inputkeeps a time entered before a date, so completing the date commits the time on screen instead of midnight (#16664).
Bug fix: Invalid-color errors render their valid formats as a list, and object reprs with uppercase hexadecimal addresses take the same st.writeandst.helppath on Windows as elsewhere (#16683, #16674, #16677).
Bug fix: The calendar header shows the year matching the visible grid when min_valueandmax_valuecross a year boundary (#16706, #16686).
Bug fix: File uploads no longer hang when in-process ASGI middleware such as Sentry has already read the request body (#16709, #16697).
Bug fix: Library warnings that previously appeared only as in-app alerts also log to the server console with a stack trace, so CLI users and coding agents can see them (#16717).