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.

star

Tip

To upgrade to the latest version of Streamlit, run:

Terminal
pip install --upgrade streamlit

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 with st.rerun("filters") or st.rerun(["alpha", "beta"]) from an on_change or on_click callback (#16161).
    • st.rerun() and st.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).
  • ✨ 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 on st.slider and st.text_input (#14828, #16605).
  • 🍿 Introducing type="step" for st.expander and st.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 wrap parameter introduced in 1.62.0 extends to more commands:
  • πŸ”’ st.multiselect has a new select_all parameter 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, and st.subheader have a new icon parameter that renders a leading emoji or Material Symbol scaled to the heading (#16418, #11752).
  • πŸ§ͺ AppTest is more robust: apps using unimplemented commands stay inspectable, interacting with a disabled widget raises, container keys are exposed through at.container(key=…) and at.get_by_key(), and switch_page() resolves pages registered by st.navigation (#16711, #9814, #12844, #13163, #16611).
  • βš™ The new runner.cacheBackgroundRefreshTTLMultiplier config option widens or narrows the stale-while-revalidate window for refresh_mode="background" caches (#16599).

Other Changes

  • 🚨 Invalid API usage raises specific StreamlitAPIException subclasses for missing, incompatible, out-of-range, and wrongly typed parameters instead of generic Streamlit, TypeError, or ValueError failures (#16508, #16637, #16656, #16668, #16690, #16701, #16707).
  • πŸ’“ st.spinner keeps animating at a slower rate under prefers-reduced-motion and exposes its label as an accessible status, so paused motion is not mistaken for a hung app (#16620, #16598).
  • πŸ”— st.context supports key notation so st.context["timezone"] matches st.context.timezone, st.user.is_logged_in is typed as bool, and the documented st.user.tokens names 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.code renders 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_input and st.datetime_input no longer crash for values near Python's minimum and maximum dates when no explicit bounds are given (#16582, #7427).
  • 🐜 Bug fix: st.menu_button dropdowns and JSON path tooltips stay interactive inside st.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, and st.selectbox when arguments are omitted or not literals (#16633, #16630).
  • πŸͺ³ Bug fix: Embedded apps forward the full guest-to-host postMessage stream to in-iframe hosts, which unblocks metrics events when metricsUrl is "postMessage" (#16647, #16644).
  • πŸͺ° Bug fix: Ctrl/Cmd+A selects the typed filter text in st.multiselect instead of being intercepted as a bulk-select shortcut (#16650).
  • 🦠 Bug fix: st.datetime_input keeps 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.write and st.help path on Windows as elsewhere (#16683, #16674, #16677).
  • πŸ¦‚ Bug fix: The calendar header shows the year matching the visible grid when min_value and max_value cross 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).
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.