2024 release notes
This page contains release notes for Streamlit versions released in 2024. For the latest version of Streamlit, see Release notes.
Version 1.41.0
Release date: December 10, 2024
Notable Changes
- π²
st.metricandst.columnshave a parameter to show an optional border (#9927, #9928). - π¨ Text and background color in Markdown can use the "primary" color from the
theme.primaryColorconfiguration option (#9676). - π₯Ά You can freeze columns with column configuration to make them always visible when scrolling horizontally (#9535, #7078).
- 3οΈβ£ The
typeparameter for buttons accepts a new option,"tertiary"(#9923). - πΆββοΈ Streamlit supports
pathlib.Pathobjects everywhere you can use a string path (#9711, #9783). - β±οΈ
st.date_inputandst.time_inputaccept ISO formatted strings for initial values (#9753). - π¬
st.write_streamaccepts async generators, which it converts internally to sync generators (#8724, #8161). - πͺ΅ The
client.showErrorDetailsconfiguration option has additional values to show or hide more information (#9909). - π When Streamlit shows stack traces in the app for uncaught exceptions, internal code is omitted or reduced for easier debugging (#9913).
- π
st.line_chartshows tooltips for the nearest point on hover (#9674). - π
st.htmlwill attempt to convert non-string objects with._repr_html_()before falling back tostr()(#9877). - π Streamlit supports Python 3.13 and no longer supports Python 3.8 (#9635).
Other Changes
- π£ Material Symbols have been updated with the latest icons (#9813, #9810).
- π½ Streamlit supports Watchdog version 6 (#9785). Thanks, RubenVanEldik.
- π Bug fix: Streamlit only shows cached function spinners on cache misses and doesn't show spinners for nested cached functions (#9956, #9951).
- π Bug fix: Streamlit's audio buffer handles channels better to correctly play audio recordings in Firefox (#9885, #9799).
- π¦ Bug fix: URL patterns are matched correctly to allow Community Cloud developer tools to display correctly in Firefox (#9849, #9848).
- β οΈ Bug fix: Corrected a performance and alignment problem with containers (#9901, #9456, #9560).
- π» Bug fix:
st.rerunwill raise an error if an invalidscopeis passed to it (#9911, #9908). - π¦ Bug fix: Dataframe toolbars show correctly in dialogs (#9897, #9461).
- π¦ Bug fix:
LinkColumnregex fordisplay_textuses the correct URI decoding (#9895, #9893). - π¦ Bug fix:
st.dataframehas correct type hinting whenon_selection="ignore"(#9898, #9669). - π Bug fix: Padding is applied consistently for wide and centered layout mode (#9882, #9707).
- πΈοΈ Bug fix:
st.graphviz_chartis displayed correctly whenuse_container_width=True(#9867, #9866). - π¦ Bug fix: The overloaded definitions of
st.pillsandst.segmented_controluse the correct selection-mode default (#9801). Thanks, RubenVanEldik! - π¦ Bug fix:
st.text_area(and other widgets) are correctly submitted in a form when usingCtrl+Enter(#9847, #9841). - π¦ Bug Fix:
st.writerendersDeltaGeneratorobjects withst.help(#9828, #9827). - π¦ Bug fix:
st.text_areacorrectly matches the value in Session State when used with a key (#9829, #9825). - πͺ° Bug fix:
st.text_inputdoes not trigger a rerun when a user submits an unchanged value (#9826). - πͺ³ Bug fix: Improved styling for
st.exceptionto fix overflow and incorrect padding (#9818, #9817, #9816). - π·οΈ Bug fix: Large dataframe don't overflow and cover the dataframe toolbar in fullscreen mode (#9803, #9798).
- π Bug fix:
st.audio_inputshows the correct time on recording in time zones with a half-hour offset (#9791, #9631). - π Bug fix: In iOS,
st.number_inputshows a number pad instead of a keyboard when in focus (#9766, #9763). - π Bug fix: Widget keys containing hyphens are correctly added to HTML classes in the DOM with an
st-key-prefix (#9793). - πͺ² Bug fix: Audio files created by
st.audio_inputinclude a timestamp to ensure unique file names (#9768). - π Bug fix: Double slash URL pathnames do not create a 301 redirect (#9754, #9690).
Version 1.40.0
Release date: November 6, 2024
Highlights
- π Introducing
st.pillsto create a single- or multi-select group of pill-buttons. - ποΈ Introducing
st.segmented_controlto create a segmented button or button group. - π€ Announcing the general availability of
st.audio_input, a widget to let users record sound with their microphones.
Notable Changes
- β‘οΈ Markdown renders a limited set of typographical symbols (arrows and comparators).
You can use
:streamlit:to render the Streamlit logo in Markdown.- π
st.textwraps text and no longer uses monospace font. - πͺ£ You can set
use_container_widthforst.image.use_column_widthis deprecated. - π
st.date_inputinfers the first day of the week from the userβs locale (#9706, #5215).
Other Changes
- πΆ Streamlitβs CLI tool accepts array values for configuration options (#9577).
- βοΈ Static file serving supports symlinks (#9147, #9146). Thanks, link89!
- π Streamlit provides helpful links for deployment when an app is running locally (#9681).
- βοΈ The fullscreen button for charts matches with the dataframe toolbar (#9721).
- π The running-man icon has a brief delay before rendering to avoid an unnecessary flicker for fast running apps (#9732).
- ποΈ The
ComponentRequestHandlerallows symlinks (#9588). - π Streamlit works with
pillowversion 11 (#9742). Thanks, hauntsaninja! - πΊοΈ Deck.gl was upgraded to version 9.0.33 (#9636).
- π¦ Bug fix:
st.latexstays center-aligned when using thehelpkeyword argument (#9698, #9682). Thanks, emmagarr! - πͺ° Bug fix: Apps correctly access local storage on Android (#9744, #9740).
- π·οΈ Bug fix: Cached class methods can be cleared (#9642, #9633).
- π Bug fix: Streamlit clears fragment auto-reruns when a user changes pages. This prevents an invalid index (#9617).
- π Bug fix:
st.page_linkmargins are correct (#9625). - π Bug fix: Form widgets show submission instructions when in focus (#9576, #7079).
- πͺ² Bug fix:
st.navigationcorrectly reconcilesclient.showSidebarNavigation(#9589, #9581). - π Bug fix:
st.text_arearequires a minimum height of 68px which fits two lines (#9561, #9217). - π Bug fix: Various styling fixes (#9529, #8131, #9555, #9496, #9554, #9349, #7739).
Version 1.39.0
Release date: October 1, 2024
Highlights
- π€ Introducing
st.experimental_audio_inputto let users record with their microphones! - π
st.pydeck_chartcan return selection events!
Notable Changes
- π
st.button,st.download_button,st.form_submit_button,st.link_button, andst.popovereach have a new parameter to add an icon. - π’
st.logohas a new parameter to adjust the size of your logo. - π§
st.navigationlets you display an always-expanded or collapsible menu using a newexpandedparameter. - βοΈ You can set
heightandwidthforst.mapandst.pydeck_chart. - β©οΈ Form submission behavior can be configured with a new
enter_to_submitparameter (#9480, #7538, #9406, #8042). - β±οΈ A new config option,
server.disconnectedSessionTTL, lets you set a minimum time before a disconnected session is cleaned up (#9179). - π€Ή Dataframes support multi-index headers (#9483, #6319).
Other Changes
- π Widget keys appear as HTML classes in the DOM with an
st-key-prefix (#9295, #5437, #3888). - π The
StreamlitAPIExceptionclass has been extended into more specific exceptions for some of the most common errors (#9318). - πΊοΈ
st.mapandst.pydeck_charthave a full-screen toggle that matches the dataframe toolbar. - β¬οΈ Frontend dependencies for Vega have been upgraded (#9443, #9438).
- π΅οΈ Streamlit is compatible with Watchdog version 5 (#9354). Thanks, RubenVanEldik!
- π Streamlit is compatible with Tenacity version 9 (#9348).
- π’ Bug fix: Column configuration will override any text or number format from
pandas.Styler(#9538, #7329, #7977). - π¦ Bug fix: Deck GL zoom button has the correct border radius (#9536).
- π¦ Bug fix: Embedded apps have the correct padding to avoid hiding elements (#9524, #9341).
- π¨ Bug fix: The
st.multiselectplaceholder text has the correct color (#9523, #9514). - π§Ή Bug fix:
st.jsonscrolls horizontally instead of overflowing its container (#9521, #9520). - π¬οΈ Bug fix: Bokeh charts (temporarily) don't have a fullscreen button to prevent horizontal scrolling (#9528, #2358).
- π‘ Bug fix: Users are correctly redirected if they add a trailing slash to a page URL (#9500, #9127).
- π Bug fix:
st.Pagewarns developers against using subdirectories inurl_path, which is not supported (#9499). - π© Bug fix: Streamlit correctly calculates dataframe widths to prevent Minified React error #185: Maximum update depth exceeded (#9490, #7949).
- β οΈ Bug fix: ScriptRunContext handles the active script hash to avoid a race condition where widgets lose state in a multipage app (#9441, #9100).
- πͺ± Bug fix: PDFs don't appear as plain text when hosted through static file serving in Streamlit (#9439, #9425).
- π» Bug fix: Fragment elements don't disappear when used with custom components and callbacks (#9381, #9389, #9372).
- π½ Bug fix: Streamlit watches the correct directory for file changes (#9453, #7467).
- π¦ Bug fix: The sidebar navigation uses page count to determine when to display a "show more" button for more consistent behavior (#9394).
- π¦ Bug fix: The internal script hash is updated at the beginning of a script run instead of the end for correct page routing when a script run is interrupted (#9408, #8975).
- π Bug fix: Bold formatting in headers is ignored (#9395, #4248).
- πΈοΈ Bug fix: Streamlit correctly identifies the MIME type of more files to prevent custom components from not rendering (#9390, #9365). Thanks, t0mdavid-m!
- π¦ Bug fix: The
client.showSidebarNavigationconfiguration option works correctly withst.navigation(#9379). - π¦ Bug fix: Streamlit uses
example.cominstead oftest.comin a health check to avoid unnecessary warnings (#9371). Thanks, wyattscarpenter! - π¦ Bug fix:
st.Pagewill raise an error if it tries to initialize a page with an empty path (#9374, #8892). - π¦ Bug fix: An unchanged
st.dialogcan be programmatically reopened after a user has dismissed it (#9333, #9323). - πͺ° Bug fix: Streamlit will not remove underscores from declared page titles in
st.Page(#9375, #8890). - πͺ³ Bug fix:
st.logodoes not flicker when switching pages (#9361, #8815). - π·οΈ Bug fix:
st.data_editorallows users to re-add a row with the same index after deleting it (#8864, #8854). - π Bug fix:
st.logomaintains its aspect ratio when resized to fit within the sidebar width (#9368). - π Bug fix: Streamlit correctly removes
st.logoif not called during a rerun (#9337, #9336). - π Bug fix:
st.logodoes not flicker when the sidebar changes its state (#9338). - πͺ² Bug fix: Streamlit renders
st.balloonsandst.snowin a React Portal for improved rendering and compatibility withst.dialog(#9335, #9236). - π Bug fix: Option labels are cleanly truncated when
st.multiselectis displayed in a narrow container (#9334, #8213).
Version 1.38.0
Release date: August 27, 2024
Highlights
- π Streamlit natively supports more dataframe formats! Use dataframe and series objects from popular libraries like Dask, Modin, Numpy, pandas, Polars, PyArrow, Snowpark, Xarray, and more. Use database cursors compliant with the Python Database API Specification 2.0. Use anything that supports the Python dataframe interchange protocol. See the docs.
Notable Changes
- βοΈ You can control the initial expansion state of
st.jsonelements. - π§βπ» You can choose to wrap lines in
st.code. - π΅οΈ Streamlit supports Kubernetes style secrets so you can use Snowflake Snowpark Container Services secret format (#9078).
- β€΄οΈ Breaking change: We removed a patch that allows custom validators in
pydantic<2.0(#9257). - π Breaking change: We removed the experimental cache replay feature from caching decorators (#9305).
Other Changes
- π For better app efficiency, a WebSocket reconnect will not trigger a rerun unless a script run was interrupted (#9083).
- π We updated our
streamlit helloapp to use Google Material icons. - β¨οΈ
st.number_input,st.selectbox,st.slider,st.select_slider, andst.radioprovide more precise type hinting for their return values (#9048, #9296, #8717). Thanks, Asaurus1! - β
st.feedbackprovides more precise type hinting for its return value (#9216). Thanks, wyattscarpenter! - π
We improved theme management for embedded apps via
postMessage(#9103). - π± Bug fix: Within the sidebar, the image for
st.logoresizes along with the sidebar width (#9298, #8707). - πͺΉ Bug fix: When a parent fragment updates, Streamlit cleans up child fragments correctly (#9246, #9233, #9267).
- π© Bug fix: Elements unstale within a fragment rerun as they are updated instead of all together at the end of the fragment rerun (#9285).
- πͺ± Bug fix: If a block type changes during a rerun, Streamlit discards the child elements of that block to prevent improper visual artifacts, like
st.tabscausing a blank page (#9276, #9259, #8676). - β οΈ Bug fix: Widget state is preserved when page reruns are interrupted with another rerun (#9187, #9163). Thanks, dannyopts!
- π½ Bug fix:
optionsinst.selectbox,st.multiselect,st.radio, andst.select_slidercorrectly usedict_items(#9241, #9237, #5377). - π» Bug fix: A
SelectboxColumnindex will show with the correct, grayed-out styling in a dataframe (#9231, #8772). - π¦ Bug fix:
st.write_streamwill not immediately fail when receiving an empty chunk (#9234, #9227). - π¦ Bug fix: Streamlit won't auto-scroll to an empty anchor, if present (#9206, #9203).
- π¦ Bug fix: We changed the handling of
scriptRunIdto preventst.tabsfrom showing extra, empty tabs in fragments (#9186, #9158, #9215). - π Bug fix: Automatically rerunning fragments don't raise
FragmentStorageKeyErrorto prevent a possible race condition (#9183, #9080). - πΈοΈ Bug fix: We improved
st.plotly_chart's handling of the pass-through keyword argumentconfig(#9190, #9134). - π¦ Bug fix: Markdown in all
labelparameters correctly ignores headers (#9189, #9141). - π¦ Bug fix: We reverted a change to fragments which caused some widgets to lose state in some circumstances (#9178, #9171).
- π¦ Bug fix: The deprecation warnings for
st.experimental_fragmentandst.experimental_dialogonly show when the commands are called. This prevents custom components which use them from raising premature warnings on import (#9170, #9143). - π¦ Bug fix:
st.codeshows syntax highlighting for diff code whenlanguage="diff"(#9172, #8687). - πͺ° Bug fix: Streamlit commands that raise
ScriptControlExceptionexecute as expected in try-except blocks (#9167, #9155, #9182). - πͺ³ Bug fix: The
valueforst.date_inputhas the correct type for linting (#9149). Thanks, wyattscarpenter! - π·οΈ Bug fix: We updated
plotly.jsto supporthoversubplots="axis"(#9144, #9118). - π Bug fix: We stabilized the identity of
st.mapinstances so the command doesn't create multiple maps when its parameters are updated (#9092, #8329). - π Bug fix: You can now clear the cache for cached class instance methods (#9101, #8638).
- π Bug fix: Copy buttons work correctly in dialogs (#9130, #9112).
- πͺ² Bug fix: Streamlit magic works consistently in for-else, while-else, try-else, try-except, and match blocks (#9110, #9109). Thanks, whitphx!
- π Bug fix: When printing an app, the bottom container will always print at the end without overlapping other content (#9129).
Version 1.37.0
Release date: July 25, 2024
Highlights
- πͺ Introducing
st.contextto read headers and cookies! - β Introducing
st.feedbackto collect ratings and sentiment from your users! - π Announcing the general availability of
st.fragment, a decorator that lets you rerun functions independently of the whole page. - πΏ Announcing the general availability of
st.dialog, a decorator that lets you create modal dialogs.
Notable Changes
- βΉοΈ You can use icons from the Material Symbols library in Markdown!
- π You can pass
graphviz.Sourceobjects tost.graphviz_chart. - π You can modify the stacking behavior for
st.bar_chartandst.area_chart. - π Within a fragment, you can scope
st.rerunto the fragment. - πͺΊ Streamlit supports nested fragments (#8931, #8635).
- π Fragments can be used in callback functions (#8916, #8591).
Other Changes
- β Material Symbols are rounded instead of outlined (#8998).
- π’ Streamlit supports Numpy version 2.0 (#8940).
- π We've updated emoji validation for new emojis (#8923).
- π» We've removed several experimental commands with new, generally available versions (#8943).
- β οΈ We've removed deprecated configuration options per their announced expiration date (#9005, #9013, #9018).
- π¦ Bug fix: Nested fragments rerun correctly when a child fragment precedes a widget in the parent fragment (#9114).
- π Bug fix: Streamlit validates file paths before performing additional checks when using static file serving for improved security (#8990).
- πΈοΈ Bug fix:
st.mapdisplays at the correct width insidest.expander(#9070, #8004). - π¦ Bug fix: Streamlit displays the correct (Windows) path for
secrets.tomlin an error message (#9061, #6147). - π¦ Bug fix:
st.switch_pagecorrectly clears non-embed query parameters when the user switches pages (#9059, #9050). - π¦ Bug fix: Custom themes display correctly for multipage elements like
st.page_link(#8994, #8978). - π¦ Bug fix:
st.snowandst.balloonsdon't show in prints (#9053, #7790). - πͺ° Bug fix: We've improved the default formatting for
st.number_input(#9035, #7163). - πͺ³ Bug fix: An
st.navigationexample was corrected (#9027, #9026). Thanks, mahotd! - π·οΈ Bug fix: Dialogs no longer have a brief delay when closing (#9023, #8747).
- π¦ Bug fix: Streamlit correctly raises a
KeyErrorwhen encountered in a fragment instead of a misleading, fragment-related error (#9011, #8494). - π Bug fix: Streamlit doesn't clear
MediaFileManageron fragment reruns to prevent invalid references (#9010, #8932). - π Bug fix: Custom themes are correctly removed when deleted (#8989, #8962).
- π Bug fix: Streamlit supports non-unix style paths for correct multipage routing in Windows (#8988, #8958).
- πͺ² Bug fix: Using
st.rerunin a fragment will not cause the app's main body content to render in the fragment in rare events (#8798). - π Bug fix: When an exception is raised within a fragment, Streamlit shows the error message within the fragment (#8868).
Version 1.36.0
Release date: June 20, 2024
Highlights
- π§ Introducing
st.navigationandst.Pagefor a new way to define multipage apps! Check out the docs to learn more.
Notable Changes
- π
st.bar_chartcan render charts horizontally. - βΉοΈ
st.expandersupports adding an icon next to its label. - ποΈ
st.columnslets you set vertical alignment. - π² Custom components support callback functions (#8633, #3977).
- π₯ Fragments no longer support rendering widgets outside of their main body (#8756).
- π·οΈ You can now customize axis labels for
st.area_chart,st.bar_chart,st.line_chart, andst.scatter_chart. - β The caching parameter
experimental_allow_widgetsis deprecated (#8817). - β Streamlit no longer supports legacy caching.
st.cacheis now an alias forst.cache_dataandst.cache_resource(#8737). - β¬οΈ Streamlit supports
protobufversion 5 (#8627).
Other Changes
- β¨ Streamlit Hello uses
st.navigationandst.Page, the new, preferred method for declaring multipage apps (#8806). - π§Ή Streamlit no longer appends "Β· Streamlit" to the page title of apps, unless running on Community Cloud (#8900).
- π¦ Streamlit magic and
st.writeusest.jsonto displayst.secrets(#8659, #2905). - π Streamlit doesn't automatically check for newer version on PyPi (#8841, #8453).
- π Bug fix: Custom component functions require importing
streamlit.components.v1(#8666, #8644). - πΈοΈ Bug fix: Reverted change to handle Altairs
resolve_scalemethod since it caused a regression (#8845, #8642). - π¦ Bug fix: Images in Markdown do not overflow the Markdown container (#8794).
- π¦ Bug fix: Clarified the error message for
st.selectboxwhenindexis larger than the size ofoptions(#8775, #8771). - π¦ Bug fix: Streamlit correctly handles non-widget elements with IDs (#8770, #8768).
- π¦ Bug fix: Docstrings correctly identify when
use_container_width=Trueis the default (#8809). - πͺ° Bug fix: Streamlit has a consistent minimum element height for better vertical alignment (#8797, #8835, #8027, #8706).
- πͺ³ Bug fix: Added check to ensure
SessionInfois initialized before performing actions (#8779, #8321, #7549). - π·οΈ Bug fix: Dataframe use raw numbers without formatting by default (#8708, #8695).
- π Bug fix: Updated the error message for disallowed writes to Session State (#8720, #8715).
- π Bug fix: Streamlit doesn't initialize
LocalSourcesWatcherif file watching is disabled (#8741, #8738). - π Bug fix:
st.experimental_dialogno longer has an invalid default value fortitle(#8729). - πͺ² Bug fix: Removed deprecated kwargs in
ast.Callto prevent type error (#8711). Thanks, JelleZijlstra! - π Bug fix:
st.experimental_dialogis explicitly exported to avoid a type checking error (#8728, #8712).
Version 1.35.0
Release date: May 23, 2024
Highlights
- π Announcing user selections for charts! Use
st.plotly_chart,st.altair_chart, andst.vega_lite_chartto make chart widgets for even more interactive apps. - π£ββοΈ Announcing user selections for dataframes. Get row and column selections from users with
st.dataframe. - πΌ Introducing
st.logoto add an image in the sidebar, above navigation.
Notable Changes
- π
st.page_linksupports Material icons (#8593). - β Anchor button for headers display inline at the end of headers for a more beautiful and consistent appearance (#8587).
- ποΈ
SQLConnectionacceptsqueryas asqlalchemy.URL.createparameter so you can specify character sets (#8581). Thanks, LucianLiu6!
Other Changes
- πΈοΈ Bug fix: A fallback method was added for CSV downloads to increase browser compatibility (#8452, #8210).
- π¦ Bug fix: Column config is deep-copied when cloned to prevent unintentional modifications (#8677).
- π¦ Bug fix:
st.data_editorrenders correctly when usingnum_rows=dynamicwith null values in added rows (#8640, #7458). - π¦ Bug fix:
streamlit runwill display thelocalhostaddress when initializing Streamlit withserver.headless=true(#8647, #8629). - π¦ Bug fix: Scroll margin matches the new toolbar (app chrome) height (#8641, #8554).
- πͺ° Bug fix: Enum coercion is compatible with StrEnum (#8622, #8500). Thanks, 97k!
- πͺ³ Bug fix: Focus is returned to chat input after clicking submit for a better mobile experience (#8637).
- π·οΈ Bug fix: Internal parameter and view names for Altair charts are stabilized for better performance (#8628).
- π Bug fix: Typing was improved for
st.query_params.update()andst.query_params.from_dict()(#8614, #8613). Thanks, Asaurus1! - π Bug fix: The fullscreen button no longer appears for
st.tableto prevent unwanted side scrolling (#8621, #2358). - π Bug fix: Streamlit correctly clears stale elements when using
st.rerun(#8599, #8360). - πͺ² Bug fix: Custom components can be executed standalone for testing and scripting (#8620, #8606).
- π» Bug fix: Plotly charts no longer render cached data when updated (#8191, #5902)
- π½ Plotly chart widths will not overflow its parent container when rendered in a bordered container (#8191, #8244).
- π¦ Plotly charts using
webglrender correctly on M1/M2 chipsets for macOS (#8191, #8169). - π¦ Plotly charts are sized correctly when rendered vertically adjacent (#8191, #7597).
- π¦ Bug fix: Plotly charts retain their state when the app window is resized (#8191, #6324).
- π Bug fix: Plotly charts in
st.tabsno longer flicker when changing tabs (#8191, #8575). - π Bug fix: Plotly charts respect
use_container_widthif this parameter is changed between reruns (#8191, #8576).
Version 1.34.0
Release date: May 2, 2024
Highlights
- πΏ Introducing
st.experimental_dialog! Create a modal overlay that can also rerun independently from the rest of your app. Check out the docs to learn how.
Notable Changes
- π£
st.toast,st.chat_message,st.set_page_config,st.info,st.success,st.error, andst.warningcan use Google Material Symbols for their icons. - π Markdown supports background colors for text. Check out the feature demo app.
- π₯
st.audioandst.videocan now be set to autoplay.st.videocan be muted. - ποΈ You can clear specific cached values for a cached function. Thanks, OscarSaharoy!
- β You can now set all query parameters with a single call to
st.query_params.from_dict. Thanks, Asaurus1!
Other Changes
- π² Streamlit supports Modin and Snowpark pandas DataFrames and Series (#8506).
- β±οΈ Improved support for
perioddata types inst.dataframeandst.data_editor(#7987). - πΊοΈ Streamlit supports using
pydeck-cartowithst.pydeck_chart(#8422). - βοΈ Additional
snowflakerequirements were updated to allow Python versions 3.8 to 3.11 (#8538). - π
st.toastreceived visual improvements and now appears in the top right (#8433). - π¦ Visual tweaks for dialogs and modals.
- π¦ Bug fix:
st.write_streamreturns an empty string when passed a generator with no yield (#8560). - π¦ Bug fix: Widgets that support
Nonevalues can be correctly set toNonethrough Session State (#8529, #7649). - π Bug fix: If the initial value for
st.date_inputis not set and today's date falls outside the declared minimum or maximum, then the minimum or maximum will be used instead, whichever is closer (#8519, #6167). - πΈοΈ Bug fix: Altair's
resolve_scalemethod is handled correctly (#8497, #1667). - π¦ Bug fix:
st.multiselectscorrectly handles sets when passed tooptionsordefault(#8471, #8466). - π¦ Bug fix:
st.statusdoes not show the expander toggle when empty (#8369). - π¦ Bug fix: The width of
vconcatcharts in Vega and Altair is set correctly (#8498, #2751). - π¦ Bug fix: Apps print beautifully and no longer show excessive whitespace (#8502, #7815).
- πͺ° Bug fix: Invalid escape sequences were removed to avoid warnings from
pytest(#8510, #8501). - πͺ³ Bug fix:
st.file_uploadercallback is correctly executed once per file selection after the first selection (#8493, #4877). - π·οΈ Bug fix: Streamlit is compatible down to
pillowversion 7.1.0 instead of 9.1.0 (#8492, #8486). - π Bug fix: Widget values are correctly dropped when a script run is interrupted by switching pages (#8425, #7338).
- π Bug fix: Apps in dark mode will return to dark mode after printing (#8469, #7879).
- π Bug fix: Component ready state is dynamic to avoid race conditions that caused blank apps in Safari (#8434, #8362).
- πͺ² Bug fix:
st.slideryields a Python error whenmin_valueis less than or equal tomax_value(#8413, #8342). - π Bug fix: Time is offset correctly for Vega and Altair (#8278, #4342).
Version 1.33.0
Release date: April 4, 2024
Highlights
- π Introducing
st.experimental_fragmentto decorate functions and rerun them independently of the whole page. Check out the docs and give your apps a speed boost! - π Introducing
st.htmlto insert custom HTML into your app! Check out the docs for how to use it.
Notable Changes
- πΊ
st.audioandst.videoallow looping and setting an end time (#8203, #8348). - π
AppTestallows switching pages withAppTest.switch_page(#8280). - π§ͺ
format_funcis accessible inAppTestfor widgets that use it (#8189, #8019, #7679). - π Column configuration now includes
AreaChartColumn.LineChartColumnno longer shows area (#8237). - π§ Breaking change:
st.writewill no longer setunsafe_allow_html=Truewhen passed an object containing a_repr_html_method. For more information, see PR #8238.
Other Changes
- π±οΈUsers can click on the widget label to focus on input for
st.number_input,st.text_input, andst.text_area(#8155). Thanks, filiptammergard! - β¬οΈ Streamlit supports
packagingversion 24.x (#8338, #8328). - πΈοΈ Bug fix: Streamlit now watches for changes to imported modules in addition to pages (#8372). Thanks, zyxue!
- π¦ Bug fix: Overflowing toast messages are correctly truncated (#8337, #8330).
- π¦ Bug fix:
st.statuscorrectly updates to complete when using LangChain'sStreamlitCallbackHandler(#8331). - π¦ Bug fix: Custom components no longer show white backgrounds in dark themes (#8242, #8156, #7813).
- π¦ Bug fix: Content area width is reduced when a fullscreen icon would otherwise cause horizontal overflow (#8279, #6990).
- πͺ° Bug fix: Custom components with undefined frame heights will render with a height of 0 (#8290, #8285).
- πͺ³ Bug fix: Restored a check for active sessions to prevent apps from needlessly running when no users are connected (#8294).
- π·οΈ Bug fix: Custom themes have precedence over embedding options (#8021, #7118).
- π Bug fix: Reverted the async timer to expire session storage cache to address computational efficiency (#8281).
- π Bug fix: When using
st.popoverwithuse_container_width=True, the popover container's minimum width will match the popover button (#8266, #8261). - π Bug fix: Using
st.rerunwith a triggering widget inAppTestno longer creates an infinite loop (#8264, #7768). - πͺ² Bug fix: URLs are correctly decoded in
LinkColumnif regex is used or if not using fully qualified URLs (#8258, #7064). - π Bug fix:
st.query_paramsonly sends oneForwardMsgwhen updating multiple parameters (#8205, #8199). Thanks, Asaurus1!
Version 1.32.0
Release date: March 7, 2024
Highlights
- πΏ Introducing
st.popoverto create popover elements in your Streamlit apps. Check out the docs to see how to use it!
Notable Changes
- πΊ You can now pass subtitles to
st.video! Check out our feature demo. - βοΈ
AppTestincludes support forst.expanderandst.status. - π§ͺ
AppTest.from_functionaccepts a function that takes arguments and/or returns a value. - π§© The timeout warning for custom components was replaced with an element skeleton to improve the UX for slow-loading components, especially in some cloud-hosted platforms (#8179, #7046).
- π
st.switch_pageandst.page_linkreceived significant improvements to path handling, performance, and visual appearance (see below for details). - π¦ Bug fix: Streamlit uses
glide-data-gridversion 6.0.4 to fix a variety of dataframe issues (#7779, #6900, #7032, #7727, #6810, #7930, #7949, #7831, #8168). - π¦ Bug fix: We've plugged a significant memory leak in the coroutine loop. Apps that generate a large number of small messages between client and server will benefit greatly (#8068, #7989, #6510).
Other Changes
- πͺ Multiple modules are now lazy-loaded to speed up Streamlit's import time (#8150, #8143, #8134, #8113, #8125, #8111, #8109, #6066).
- πΌοΈ
st.writesupportsPILimages (#8039). - π
st.radioallows markdown links within the items passed tooptions(#8028, #7992). - π The
deprecation.showPyplotGlobalUseconfig option is deprecated and will be removed in the subsequent release (#8133). - π€ Streamlit supports AzureOpenAI chat stream (#8107, #8084).
- π The
/healthzendpoint supports the HTTP HEAD method (#8145, #8144). Thanks, rahulmistri1997! - π The
cacheparameter forst.spinneris now private (_cache) since it's for internal use (#8118). - π Session storage is checked and expired asynchronously to improve performance and efficiency of apps with lower traffic (#8083).
- π
st.write_streamraises a descriptiveExceptionwhen the message cannot be parsed (#8036). - π Fixed a typo in the examples for
st.switch_pageandst.page_link(#8162). Thanks, t1emp0! - π» Bug fix:
st.helpcorrectly displays conditional members (#8228). - π¦ Bug fix: App State fully clears on page change to prevent lingering stale elements (#8208).
- π¦ Bug fix:
st.info,st.success,st.warning, andst.errordon't overflow with long markdown strings (#8194, #6394). - π Bug fix: Streamlit shows a warning that port 3000 is reserved for development when the server port is set to 3000 (#8152, #8149).
- πΈοΈ Bug fix:
st.page_linkandst.switch_pagehave improved path calculation for consistency (#8127). - π¦ Bug fix:
st.page_linkshows the correct path in browser on hover (#8086, #8080). - π¦ Bug fix:
st.page_linkandst.switch_pagenormalize paths for correct handling in Windows (#8103, #8070). - π¦ Bug fix: Script runner uses a while loop instead of recursion to avoid stack overflows (#8100).
- π¦ Bug fix:
st.page_linkandst.switch_pagecorrectly handle relative paths prefixed with"/"(#8085, #8081). - πͺ° Bug fix:
st.imageparses paths in Windows correctly (#8092, #7271, #6066). - πͺ³ Bug fix:
st.switch_pageno longer waits for the current page to finish running before switching pages (#8054, #7954). - π·οΈ Bug fix:
st.mapand other simple charts correctly handle color when data is not indexed starting from 0 (#8158, #8079, #8077). Thanks, awhazell! - π Bug fix:
st.selectbox,st.multiselect,st.select_slider, andst.radiouse shallow copies of their options to prevent unexpected mutations (#8064, #7534). - π Bug fix: The selected time in
st.time_inputdisplays correctly in dark mode (#8056, #7436). - πͺ² Bug fix: Dataframe scrollbars display correctly in the latest version of Chrome (#8034).
- π Bug fix: Casting
st.query_paramstostrwill print the content of the query parameters instead of the class description (#8030).
Version 1.31.0
Release date: February 1, 2024
Release videos
Highlights
- π Introducing
st.page_link! Now, you can build custom navigation menus for your multipage apps. Check out our docs to see how. - π¦ Announcing
st.write_streamto conveniently handle generators and streamed responses. Check out our docs to see how making chat apps just got easier.
Notable Changes
- π
st.chat_inputcan be used inline and placed anywhere in the app. You can also have multiplest.chat_inputwidgets on a page (#7896).
Other Changes
- π§Ή Internal refactoring and cleanup (#7980). Thanks, whitphx!
- βοΈ Bug fix: Snowpark is now an optional dependency for
SnowflakeConnection(#7919). - π·οΈ Bug fix: The watchdog suggestion is disabled when
server.fileWatcherTypeis set tononeorpoll(#8024, #7999). - π Bug fix: Required columns can be hidden when not using
st.data_editorwith dynamic rows (#7996, #7991). - π Bug fix: New period types are supported for pandas 2.2.0 (#7988).
- π Bug fix: Custom components receive only the app's origin and path to avoid reloading components when query parameters change (#7951, #7503). Thanks, eric-skydio!
- πͺ² Bug fix:
st.progresswon't raise an exception when given a value above 1.0 due to float precision (#7953, #5517). Thanks, notiona! - π Streamlit supports
importlib-metadataversion 7 (#7925). Thanks, elgalu! - π Bug fix:
AppTestcorrectly sees widgets inside containers (#7923, #7711). - πΏ Custom components no longer accumulate style elements when re-rendered for better performance (#7914). Thanks, Tom-Julux!
Version 1.30.0
Release date: January 11, 2024
Release videos
Highlights
- π Announcing
st.switch_pageto programmatically switch pages in multipage apps! Check out our docs to learn about this highly anticipated feature! - βIntroducing
st.query_paramsto handle variables passed through your app's URL. Check out our docs to understand this feature and how it's been upgraded and improved from our experimental version!
Notable Changes
- π
st.containercan be configured with a height to create grids or scrolling containers (#7697, #2169, #2447). - π For dataframes,
LinkColumnhas a simplified UI and can be configured with display text, including programmatically defined text through regular expressions (#7784, #7741, #6787). - π§ Sidebar navigation for multipage apps can be hidden via configuration (#7852).
- β© Plotly figures can load even faster when used in combination with
orjson(#7860). Thanks, eric-skydio! - β»οΈ Behavior change: Query parameters are removed when changing pages (#7817, #6725, #5505).
Other Changes
- π οΈ
showFooteris no longer an embed option since the footer no longer exists (#7902, #7785). - π΅οΈ All security concerns should be reported through HackerOne (#7783).
- π·οΈ Bug fix: Tabs are not disabled when stale to prevent flickering (#7905, #7820).
- π‘οΈ Bug fix: The full file path is used instead of a prefix to prevent custom components from reaching beyond their own folders (#7901).
- πͺ± Bug fix: Widgets raise an exception if its values aren't Python comparable (#7840, #3714).
- π Bug fix: The down-arrow icons on expanders maintain a consistent size (#7596). Thanks, matiboux!
- π Bug fix: Tabs no longer flicker when switching between them (#7904).
- π Bug fix: Enter-to-submit is automatically disabled when the associated
st.form_submit_buttonis disabled (#7827, #7822). - πͺ² Bug fix: Required columns cannot be hidden with column configuration (#7888, #7559).
- π Bug fix: Using
nanas a value inSelectboxColumnwill raise an error instead of silently failing (#7887, #7558). - π Bug fix: Custom component iframes allow dark mode (#7821, #7813).
- πͺ° Bug fix: The command to start Streamlit is not sent to the frontend (#7787).
- π
Bug fix: The background color of
st.toggleis enhanced for better visibility (#7788). - πͺ³ Bug fix: Built-in charts can handle ordered categorical columns (#7771, #7776).
Still have questions?
Our forums are full of helpful information and Streamlit experts.