Release date: August 19, 2026
Highlights
Introducing client-side validation (validate) and specialized email, URL, phone, and search types (type) forst.text_input, with smart defaults for validation, autofill, mobile keyboards, icons, and placeholders (#15752, #15714, #8790, #7348, #16385, #6704, #10744).
Introducing the new wrapparameter, which lets you choose whether horizontal layouts, widgets, and labels wrap or remain on one scrollable or truncated row:st.columnsand horizontalst.containerlayouts can remain on one horizontally scrollable row withwrap=False(#16131, #16367, #5003, #2313, #16484, #9544, #12582).st.buttonand other button-like controls,st.checkbox, andst.togglecan keep labels on one line when desired (#16325, #16470).st.multiselectcan keep selected chips on one horizontally scrollable row (#16509, #12644).
Announcing the public streamlit.typingnamespace for stable imports of Streamlit-owned types, including fully typed selection and data editor state values (#16094, #16275, #16295, #7801, #16351, #16471).
Notable Changes
Date and datetime inputs have a more accessible, keyboard-friendly editing experience:
st.date_inputnow uses segmented fields and an accessible calendar for single dates and ranges (#16460, #7865, #8556, #12699, #9667, #7100, #4941, #9946).st.datetime_inputnow offers segmented date and time fields with an integrated calendar and time editor (#16501, #16502).- Bug fix: Date and datetime values stay within their input borders in narrow containers, and calendars indicate today’s date (#16565).
You can configure chart categorical, sequential, and diverging colors separately for light, dark, and sidebar themes (#16357, #16355).
Theme font-weight settings support increments of 50 for finer typography control (#16396, #16354).
The long-deprecated st.cachecommand has been removed; usest.cache_dataorst.cache_resourceinstead (#15787).
Passing Matplotlib savefigkeyword arguments tost.pyplotis deprecated; save the figure directly and display it withst.imageinstead (#16450).
Calling st.pyplotwithout an explicit figure is no longer supported (#16464).
Other Changes
When Streamlit raises an uncaught error during local development, the error display can offer to install Streamlit’s agent skills for supported coding agents (#15693).
st.tableuses a 14-pixel font size consistent with other Streamlit widgets (#16397, #16389).
Invalid enum-like parameter values consistently raise StreamlitValueErrorwhile preserving compatibility with existing specialized exception classes (#16422).
Streamlit no longer requires the tenacitydependency for SQL and Snowflake connection retries (#16497).
Bug fix: st.popoverkeeps its contents visible and scrollable in narrow or embedded viewports (#16173, #9340).
Bug fix: st.pyplotsupports SVG output throughformat="svg"(#16283, #11489).
Bug fix: runner.cacheHashSeedlets apps change the sample used to hash large pandas, Polars, and NumPy objects without invalidating existing caches by default (#16284, #14622).
Bug fix: Heading anchors update when heading text changes during a rerun (#16286, #8793).
Bug fix: Altair charts reconstructed with alt.Chart.from_jsonpreserve their inline datasets (#16288, #6269).
Bug fix: Nested st.fragmentfunctions with queued periodic reruns no longer execute twice and create duplicate element IDs (#16314, #10719).
Bug fix: Multiple Streamlit servers correctly advance to the next available port on Windows (#16315, #16296).
Bug fix: Updating st.statusthrough a container created outside a fragment no longer corrupts the app’s element tree (#16316, #16281).
Bug fix: Streamlit falls back to MD5 for element IDs, cache keys, and file watching on FIPS-enabled systems whose BLAKE2b implementation rejects custom digest sizes (#16324, #15148).
Bug fix: Embedded Streamlit-in-Snowflake apps can receive same-window authentication messages while retaining host-message spoofing protections (#16327).
Bug fix: Streamlit remains compatible with newer Starlette gzip middleware while preserving correct media, download, and range-response handling (#16342, #16344, #16341, #16462).
Bug fix: Malformed WebSocket messages are rejected without exposing tracebacks or absolute server paths to the browser (#16392, #16391).
Bug fix: The startup warning for server.enableCORS=falseaccurately describes CORS and XSRF behavior instead of claiming the setting is overridden (#16393, #16390).
Bug fix: Derived code and dataframe-header background colors respect custom theme background settings (#16401, #16398).
Bug fix: Timelike st.slidervalues are validated against the frontend’s safe numeric range instead of silently changing (#16475, #16474).
Bug fix: st.toastnotifications remain visible when immediately followed byst.rerun()(#16498, #7740).
Bug fix: st.color_pickerremains interactive inside dialogs (#16541, #16538).
Bug fix: st.metricrestores its sparkline after chart data becomes empty and is populated again (#16543, #16539).