2025 release notes
This page contains release notes for Streamlit versions released in 2025. For the latest version of Streamlit, see Release notes.
Version 1.51.0
Release date: October 29, 2025
Highlights
- ๐งฉ Announcing custom components, version 2! Easily create frameless custom UI with bidirectional data flow.
- ๐ Introducing custom light and dark theme configuration! You can simultaneously define custom light and dark themes in your app.
- ๐จ Announcing reusable themes! You can define a theme in a sharable file and use it as a base in other themes.
- ๐ซ Introducing
st.spacefor adding vertical and horizontal spaces in your app.
Notable Changes
- ๐ New configuration options,
theme.codeTextColorandtheme.linkColor, let you configure the color of code and link text. - ๐
ProgressColumnhas a newcolorparameter. - ๐ You can set
color="auto"inMultiselectColumnto inherit colors fromtheme.chartCategoricalColors. - ๐
MultiselectColumnhas apinnedparameter to match other column types. - โญ You can set a
defaultvalue forst.feedback(#12578, #9469). Thanks, andreasntr! - ๐
st.write_streamhas acursorparameter to set a custom cursor for the typewriter effect. - ๐ฟ
st.popoverhas atypeparameter to matchst.buttonstyling options. - ๐ To prevent widgets from resetting when you change a parameter, widgets are transitioning to an identity based only on their keys (if provided). The following widgets use only their key for their identity:
st.color_pickerst.segmented_controlst.radiost.audio_inputst.sliderst.select_sliderst.chat_inputst.feedbackst.pills
- โ๏ธ
st.dataframe,st.data_editor,st.altair_chart,st.pydeck_chart, and all simple charts have height parameters to use with flex containers. - โ๏ธ
st.plotly_chart,st.vega_lite_chart,st.altair_chart,st.pydeck_chart, and all simple charts have width parameters to use with flex containers. - ๐ Due to end of life, Python 3.9 is no longer supported.
Other Changes
- โก If you don't pass a file to
streamlit run, it will trystreamlit_app.pyby default (#12599). - ๐ฅท
st.dataframehides its index column by default when row selections are enabled (#12448, #12237). Thanks, plumol! - ๐ฉโ๐จ For compatibility with new theming options, the app settings menu no longer supports theme editing (#12648).
- ๐ The Streamlit hello app preloads its Python packages on its home page for a faster user experience (#12617).
- ๐ Slider thumbs don't extend beyond the edge of their track (#12549, #4284).
- โน๏ธ Material icons and emojis were updated (#12669).
- ๐ฆ Bug fix: Pyplot charts render correctly in fragments, containers, and expanders (#12807, #12678, #12763).
- ๐ชฐ Bug fix: Dataframes correctly resize and align when using
width="content"(#12682). - ๐ชณ Bug fix: Fuzzy search in select boxes is case insensitive (#12849, #11724).
- ๐ท๏ธ Bug fix: 500 errors display correctly (#12845).
- ๐ Bug fix: Deprecation warnings respect
client.showErrorDetails(#12794, #12743). - ๐ Bug fix: Path handling in the file watcher was improved to prevent a
ValueErrorin Windows environments (#12741, #12731). - ๐ Bug fix:
st.pillsshows its value when disabled (#12555, #12388). Thanks, davidsjoberg1! - ๐ชฒ Bug fix: Plotly charts hide overflow to prevent flickering behavior from scrollbars (#12594).
- ๐ Bug fix: Streamlit's handling of Altair charts was improved for thread safety and prevention of an "Unrecognized data set" race condition (#12673, #11911, #11342, #11906).
Version 1.50.0
Release date: September 23, 2025
Highlights
- ๐คน Introducing
MultiselectColumnto configure colorful, editable lists in your dataframes. - ๐จ Announcing color palette configuration options to set the exact shade of red, orange, yellow, green, blue, violet, and grey to use in Markdown, status elements, sparklines,
st.metric, andst.badge. - ๐
st.bar_charthas a newsortparameter for conveniently sorting your bars.
Notable Changes
- ๐ To prevent widgets from resetting when you change a parameter, widgets are transitioning to an identity based only on their keys (if provided). The following widgets use only their key for their identity:
st.buttonst.download_buttonst.checkboxst.togglest.text_areast.text_inputst.number_inputst.time_inputst.date_inputst.selectboxst.multiselect- Custom components
- ๐๏ธ You can configure the color of chart columns.
- ๐ข
st.metricsupportsdecimal.Decimaltypes (#12377, #12308). Thanks, aebrahim! - ๐ค You can specify the sample rate for
st.audio_input, and the default sample rate has been reduced to 16000 Hz. - โ๏ธ For clarity, in
st.plotly_chart,**kwargsis deprecated and replaced byconfig(#12291, #12280). Thanks, zyfy29! - ๐
st.line_chartandst.graphviz_charthavewidthparameters to use with flex containers. - ๐ฒ You can configure
st.tableborders to show all, only horizontal, or no lines. - ๐ You can specify a default tab in
st.tabs. - ๐ To use hosted fonts from providers like Google and Adobe, you can declare externally hosted fonts with a URL to their CSS file in
theme.font,theme.headingFont, andtheme.codeFont.
Other Changes
- ๐งน
**kwargshas been removed fromst.write(#12375, #12374). - โฑ๏ธ To prevent browser defaults from invalidating caches too soon, cache headers include the
max-ageandimmutabledirectives (#12420). - ๐ฝ Material icons were updated (#12473, #12535).
- ๐ฆ Visual tweaks (#12348, #12367).
- ๐ป Bug fix: To correct a sequential navigation regression for
st.number_input, some internal refactoring was reverted (#12547, #12526). - ๐ฆ Bug fix: Custom components respect zero-size dimensions (#12479, #12454).
- ๐ฆ Bug fix: Images respect center alignment in containers (#12495, #12435).
- ๐ Bug fix: If you use an empty string as a section label in top navigation, those pages will display individually before the collapsible sections (#12247, #12243).
- ๐ธ๏ธ Bug fix: To fix a performance regression, dataframes use
.iat[]instead of.iloc[]internally (#12422, #10952). - ๐ฆ Bug fix:
st.data_editoraccepts Shift+Enter for multiline entry in a cell (#12401, #12386). - ๐ฆ Bug fix: To make
st.pdfmore compatible on Windows, MIME types were updated (#12399, #12387). Thanks, geoextra! - ๐ฆ Bug fix: To prevent long-word overflow, words are forced to break if they exceed their container's width (#12370, #12366).
- ๐ฆ Bug fix: Hiding all dataframe columns won't raise a TypeError (#12361, #12227).
- ๐ชฐ Bug fix:
st.logodoesn't dislocate the sidebar collapse button (#12329, #12326). - ๐ชณ Bug fix: When using
accept_new_options=Truewithst.multiselect, mobile users can access their keyboards (#12330). - ๐ท๏ธ Bug fix:
st.components.v1.htmlignores fractional pixels inwidth(#12354, #12340). - ๐ Bug fix:
st.number_inputcorrectly accepts keyed entries (#12351, #12349). - ๐ Bug fix: Markdown images maintain their aspect ratio when constrained (#12343).
- ๐ Bug fix:
st.date_inputis inclusive of min and max values (#12295, #12293). - ๐ชฒ Bug fix: Maintain image proportions in fullscreen mode for all width settings (#12235).
- ๐ Bug fix: Markdown code blocks don't overflow when used in labels (#12175, #12149).
Version 1.49.0
Release date: August 26, 2025
Highlights
- ๐ Introducing
st.pdfto beautifully render PDF documents in your app! - โ๏ธ Dataframes support cell selections!
- โจ You can add sparklines to
st.metric! - โ๏ธ
ListColumnis now editable! - ๐ Users can upload a directory of files with
st.file_uploaderorst.chat_input.
Notable Changes
- ๐ท๏ธ You can configure the labels of options in
SelectboxColumnwith a newformat_funcparameter (#12232, #6795). - ๐ You can configure the duration of
st.toastmessages (#11872, #7047). - ๐
st.form_submit_buttonhas akeyparameter (#12190, #12121). - ๐ป Markdown and heading dividers can be yellow (#12201).
- ๐ฌ
st.dialogwidths have a larger option (#12040, #8904). - ๐ป
st.dataframeandst.data_editorhavewidthandheightto use with flex layouts (#11930). - ๐ผ๏ธ
st.image,st.pyplot, andst.graphviz_charthave awidthparameter to use them with flex layouts (#11952, #12212). - ๐ Users can access the underlying data of a Vega chart through the toolbar. This includes all data passed to the chart, even if it's not displayed (#10311).
- โ ๏ธ
st.bokeh_chartis deprecated. Use thestreamlit-bokehcustom component instead. - ๐งน We removed deprecated commands and parameters:
st.experimental_dialog,st.experimental_fragment, and caching'sexperimental_allow_widgets(#12167).
Other Changes
- ๐โโ๏ธ For better performance,
st.sliderwill not rerun the app until the user releases the slider thumb (#11879, #4541). - ๐ For improved custom theming, single mark charts use the first categorical chart color (#12162).
- ๐ For
st.logo, thecrossoriginproperty can be configured by hosts (#12226). - ๐จ The colored decoration line at the top of Streamlit apps was removed (#12155).
- ๐ป The copy-to-clipboard function of multiple elements gives a checkmark feedback to users when they copy something (#12141, #12172).
- ๐ซฅ Users can quickly hide or unhide all columns in a dataframe (#12164, #12082). Thanks, plumol!
- โน๏ธ Material icons were updated (#12264).
- ๐ฝ Bug fix:
CheckboxColumnuses the radii from the theming configuration options (#12263). - ๐ฆ Bug fix: A column's menu is not accessible when the column is hidden (#12233, #12230). Thanks, plumol!
- ๐ฆ Bug fix: Streamlit correctly caches Pydantic models (#12137, #10348).
- ๐ฆ Bug fix:
st.plotly_chartcorrectly handles null selections (#12222, #12191). - ๐ Bug fix: When using
accept_new_options=Truewithst.selectbox, mobile users can access their keyboards (#12219, #12205). - ๐ธ๏ธ Bug fix: Streamlit does not raise an error when the user's email is empty and
server.showEmailPromptis false (#12202, #12166). Thanks, wyattscarpenter! - ๐ฆ Bug fix: The drop area of
st.file_uploadercorrectly truncates a long list of file types (#12192, #12189). - ๐ฆ Bug fix: The corner radius of
st.page_linkmatches the navigation widget instead of the border radius configured for buttons (#12181). - ๐ฆ Bug fix: Cached replay correctly handles element height and width for flex layouts (#12183).
- ๐ฆ Bug fix: When a client disconnects from a Streamlit server and the user dismisses the warning, the client will re-raise the warning while the app remains disconnected (#12178, #12113).
- ๐ชฐ Bug fix: Identity provider logout was reverted to prevent redirect failures in
st.logout()(#12179). - ๐ชณ Bug fix: Currency symbols in column configuration are narrowly formatted (#11895).
- ๐ท๏ธ Bug fix: Users can't remove files from
st.file_uploaderwhile the widget is disabled (#12180, #12146). - ๐ Bug fix:
pip installworks correctly in Windows (#8952). Thanks, Dev-iL! - ๐ Bug fix: The drop-down menu for
st.time_inputuses theme colors consistently with other elements (#12157). - ๐ Bug fix:
st.toastuses custom theme colors (#12160, #11951). - ๐ชฒ Bug fix: The width handling of custom components was updated to work with horizontal containers (#12148).
- ๐ Bug fix:
st.chat_inputcorrectly resizes itself after the user submits a long message (#12132, #12079).
Version 1.48.0
Release date: August 5, 2025
Highlights
- ๐ช Announcing horizontal flex containers! Configure the alignment, direction, and gap of containers to create dynamic layouts.
Notable Changes
- ๐ชต
st.logoutwill log the user out of their identity provider if the server metadata includesend_session_endpoint(#11901, #11900). Thanks, velochy! - ๐ฌ You can configure the dismissibility of
st.dialogand set callback functions (#9504, #12034). Thanks, souvikmaji! - โ๏ธ You can set a
widthparameter for buttons and popovers. - ๐งโ๐ป
codeFontWeightcan be configured separately in the sidebar. - ๐ถ You can configure the WebSocket ping interval with the
server.websocketPingIntervalconfiguration option (#12117, #12108).
Other Changes
- ๐ The spinner design was unified across Streamlit commands (#12031).
- ๐ Design and style tweaks (#12032, #11989, #11986, #11999, #12015, #11995, #11981, #11964).
- ๐ Error logic and logging was improved to reduce confusion from
asyncioruntime errors when unrelated errors are raised (#12008). - ๐ชง Dataframe column menus include an icon to show the column type and a button to copy the column name (#11303).
- ๐ฝ For convenience, there are additional "extras" installation options (#11760, #8233).
- ๐ Additional checks are performed to validate the extension of uploaded files, but app developers are still responsible for checking and handling the security of uploaded files (#11884, #11883).
- ๐ Button group widgets are identified by their command name in error messages (#11769, #11753). Thanks, bajajku!
- โ๏ธ For
st.snow,st.balloons, chat avatars, and media elements, thecrossoriginproperty can be configured by hosts (#12087, #11948). - ๐ฆ Bug fix: Ctrl+C will stop a Streamlit server in Windows, even if there is no active session (#12049, #6855).
- ๐ฆ Bug fix:
st.line_chartuses the column order in the chart data instead of reordering them alphabetically (#12092, #12071). - ๐ฆ Bug fix: Menu items set in
st.set_page_configare not hidden whenclient.toolbarModeis set to"minimal"(#12091, #12083). - ๐ฆ Bug fix:
theme.codeFontWeightdoes not interfere with bold inline code (#12074, #11976). - ๐ชฐ Bug fix: To allow fractional pixel values, heading font sizes in theming configuration aren't rounded (#12077, #11963).
- ๐ชณ Bug fix: Altair 5.4.0 and 5.4.1 have been excluded to prevent an upstream bug with reading dataframes (#12066, #12064).
- ๐ท๏ธ Bug fix: Dataframe scrollbars have been tweaked to avoid sizing problems (#11936, #11921, #12053, #11985).
- ๐ Bug fix: Linting accepts lists in addition to tuples for callback arguments in widgets (#12039).
- ๐ Bug fix: To fix a deprecation warning, Altair theme syntax was updated (#12050).
- ๐ Bug fix:
st.navigationdoes not hide the menu when a single section is used withposition="top"(#12025, #12029). - ๐ชฒ Bug fix: The sidebar state does not reset when the window is resized (#12024, #12016).
- ๐ Bug fix:
st.pillsandst.segmented_controldon't raise unintendedStreamlitDuplicateElementIderrors (#11982, #11975).
Version 1.47.0
Release date: July 16, 2025
Highlights
- ๐จ Streamlit has additional theming configuration options!
theme.baseFontWeight: Set the root font weight of text in the app.theme.chartCategoricalColors: Configure default categorical colors for Plotly, Altair, and Vega-Lite charts.theme.chartSequentialColors: Configure default sequential colors for Plotly, Altair, and Vega-Lite charts.theme.codeFontWeight: Set the font weight of code text.theme.dataframeHeaderBackgroundColor: Set the background color of dataframe headers.theme.headingFontSizes: Set the font sizes of headings.theme.headingFontWeights: Set the font weights of headings.theme.linkUnderline: Configure whether to underline links.
Notable Changes
- ๐ฌ You can set the unsubmitted value of
st.chat_inputthrough Session State (#10175, #7166). - โ๏ธ You can set a
widthparameter forst.html,st.feedback,st.pills,st.segmented_control, andst.multiselect. - โ๏ธ You can set a
heightparameter forst.metricandst.text_area. - ๐ฉโ๐ป
st.codeandst.formcan haveheight="stretch". - ๐งโ๐ป
st.codecan havewidth="content". - โฑ๏ธ You can show the elapsed time with the spinner for cached functions using the
show_timeparameter (#11469, #10647). Thanks, Darkace01! server.showEmailPromptlets you configure whether to show the email prompt (for locally running apps).- ๐พ
NumberColumnandProgressColumnsupport"bytes"as a predefined format (#11288, #11287). Thanks, cgivre! - โ๏ธ Column configuration accepts pixel widths for columns (#11838).
- โน๏ธ The
display_textparameter ofLinkColumnaccepts a Material icon (#11690, #7004). - ๐๏ธ The
titleparameter ofst.dialogaccepts Markdown (#11763, #11755). - ๐งฉ To support proxying requests for custom components, in
declare_component, you can set bothurlandpath(#11698).
Other Changes
- ๐งญ Section labels in the sidebar navigation widget are collapsible (#11863).
- ๐ The "Deploy" button is hidden when the "File change" notification is visible in the app chrome (#11834).
- ๐ When using top navigation in an app, the header has more padding (#11836).
- ๐ช In
NumberColumn, the precision fromstepwill override the display precision fromformat, unlessformatis a printf string (#11835). - ๐
When
st.date_inputaccepts a date range, the widget displays a quick-select option below the calendar for common date ranges (#10166, #11108). - ๐๏ธ Dataframes support font weight defined in
pandasStylerobjects (#11705, #6461). - ๐ซฅ The about dialog does not show by default in the app menu. The current Streamlit version is displayed in the settings dialog (#10091).
- ๐
st.metricuses a background color for the delta value, likest.badge(#11678). - ๐ป IDEs can give type hints for
.clear()on cached functions (#11793, #11821). Thanks, whitphx! - ๐ Bug swap: To prevent a multipage app regression,
st.context.themedoes not automatically rerun the app on first load. In some cases,st.context.thememay not be correct until the first rerun (#11870, #11797). - ๐งน Bug fix:
st.chat_inputdisplays correctly at the bottom of the screen in mobile view (#11896, #11722, #11891). - โณ Bug fix: When a WebSocket reconnects, the app will fully rerun to prevent missing fragments (#11890, #11660).
- ๐ชฑ Bug fix: To reduce
No such file or directoryerrors, the file watcher has more robust exception handling and clearer logging (#11871, #11841, #11809, #11728). - ๐ฉ Bug fix: Vega-Lite facet charts do not flicker (#11833).
- โ ๏ธ Bug fix: When the initial sidebar state is set to
"collapsed", the sidebar correctly loads in a collapsed state without flickering open (#11861, #11848). - ๐ฝ Bug fix: To prevent apps from being out of sync with their current code at a later time, Streamlit clears the script cache when all file watchers disconnect (#11876, #11739). Thanks, diwu-sf!
- ๐ป Bug fix: Inline code in tooltips has the same relative size as inline code in other Markdown text (#11877).
- ๐ฆ Bug fix:
st.multiselectandst.selectboxdisplay the correct placeholder text whenaccept_new_options=True(#11623, #11609). - ๐ฆ Bug fix: The column visibility menu can be closed by toggling the toolbar icon (#11857, #11801).
- ๐ฆ Bug fix: Progress bar columns in dataframes have the correct padding between the bar and its label (#11685).
- ๐ Bug fix: The warning indicator in a dataframe cell adapts to theme configuration (#11682).
- ๐ธ๏ธ Bug fix: To fix multiple visual and UX bugs in dataframe,
glide-data-gridwas updated (#11677, #8310, #9498, #9471). - ๐ฆ Bug fix: In the sidebar navigation widget, font spacing and weight were adjust for visual clarity (#11814).
- ๐ฆ Bug fix: Altair charts correctly resize in width to match their container (#11807, #11802).
- ๐ฆ Bug fix: The running-man icon matches the theme configuration (#11461, #11371). Thanks, TreavVasu!
- ๐ฆ Bug fix: The top header background is correctly opaque when it contains elements (#11787, #11785).
- ๐ชฐ Bug fix: Extra top padding is removed when printing (#11798).
- ๐ชณ Bug fix: Markdown inline code displays correctly when
unsafe_allow_html=True(#11817, #11800). Thanks, bajajku! - ๐ท๏ธ Bug fix: The WebSocket ping interval does not exceed the timeout interval (#11693, #11670).
- ๐ Bug fix: The sidebar state initialized correctly on Community Cloud and page content slides and resizes correctly in response to the sidebar (#11732, #11702, #11710).
- ๐ Bug fix: The timer in
st.spinneruses system time to prevent pausing when the user focuses on another browser tab (#11756, #11720). - ๐ Bug fix: Empty containers with borders and empty expanders are visible before elements are added to them (#11669).
- ๐ชฒ Bug fix:
st.audio_inputandst.camera_inputhave consistent appearances (#11699, #11700). - ๐ Bug fix: To prevent a race condition, the file watcher correctly applies a lock to watched paths (#11692, #11691).
Version 1.46.0
Release date: June 18, 2025
Highlights
- ๐งญ Introducing top navigation! Use
st.navigationwithposition="top"to create a navigation menu across the top of your app. - ๐ You can detect if the viewer is in light mode or dark mode at runtime with
st.context.theme.
Notable Changes
- ๐ชบ Streamlit no longer restricts the nesting of columns, expanders, popovers, and chat message containers, but beware of bad design! Always be mindful of different screen sizes and orientations, and don't overuse nested layouts.
- โ๏ธ You can set the width of most Streamlit elements.
- โฌ๏ธ
st.formhas a new parameter to configure itsheight. - ๐ ๏ธ
st.columnssupportsgap=Nonefor no gap between columns. - ๐๏ธ Font face declarations in
config.tomlsupport weight and unicode ranges (#11248, #11163, #11247). - ๐ Font face declarations are supported in the window variable (#11628, #11568).
- ๐ Streamlit searches for secrets and configuration options relative to the entrypoint file in addition to the working directory and user root (#10173, #8195).
- ๐จ A new configuration option,
theme.dataframeBorderColor, lets you set the border color for dataframes and tables separately from other border colors (#11475). - ๐ฏ A new configuration option,
theme.buttonRadius, lets you set the radius of buttons separately from other elements (#11464). - ๐ฅ๏ธ A new configuration option,
theme.codeFontSize, lets you set the size of code inst.code,st.json, andst.help(#11508). - ๐ You can configure a list of allowed origins when CORS protection is enabled (#11377).
- ๐
st.set_page_configcan be called multiple times in a single script run (#11286, #4483, #2216, #9797, #9038). - ๐บ๏ธ
st.pydeck_chartandst.mapnow use Carto by default to provide map tiles (#11231). - ๐ You can configure Streamlit to watch additional directories for changes with the new configuration option,
server.folderWatchList(#9656, #9655). Thanks, akramsystems!
Other Changes
- ๐ Exception messages include a copy button to conveniently copy the message to your clipboard (#11250, #11083). Thanks, snakeM!
- โ Streamlit apps can be served from port 3000 (#11525, #8149).
- ๐ Markdown dependencies were upgraded for improved performance (#11553, #11550).
- โ๏ธ The sidebar is narrower by default and consistently handles the scrollbar spacing (#11412).
- ๐ We gave Streamlit hello a couple small tweaks (#11442).
- ๐งโ๐ป Base URL window variables are consistently namespaced in
__streamlit(#11481). - ๐ Streamlit apps now serve a
manifest.jsonfile (#11462). - ๐๏ธ
st.dataframeshows row selection boxes always instead of just on hover (#11411, #11410). - ๐ฆ
ListColumnandLinkColumncan inherit coloring frompandasStyler(#11612, #8254). - ๐น
NumberColumnandProgressColumnsupport a Japanese yen number format (#11588). Thanks, alexmalins! - ๐
st.page_linkcan inherit an icon when passed aStreamlitPage(#10694, #9743). Thanks, abokey1! - ๐ซ A button's placement in the sidebar or main body of an app is included in its widget identity (#10881, #10598). Thanks, joaooliveira-11!
- ๐ท๏ธ Built-in Streamlit fonts now use variable font files (#11646, #11600, #11534).
- ๐คน Bug fix: Streamlit Markdown correctly formats task lists and block quotes (#11237).
- ๐ Bug fix: Horizontal scroll bars are sized correctly in Safari (#11625).
- ๐ Bug fix: Unnecessary media caching was reduced to improve efficiency and avoid video player crashes (#11635, #9688).
- ๐ Bug fix:
st.textuses thebreak-wordCSS property to wrap long lines without whitespace (#10969, #10824). Thanks, matilde2004! - ๐ชฒ Bug fix: Material icons display correctly in
st.markdownwhenunsafe_allow_html=True(#11633, #9945). - ๐ Bug fix: Multi-index column names preserve brackets (#11617, #10415).
- ๐ Bug fix: Various CSS tweaks (#11631, #11632, #11630, #11611, #11577, #9085, #8671, #11576, #11569).
- โ๏ธ Bug fix:
st.dataframeclears filter options when applying sort to prevent incorrect highlights (#11587, #11575). - ๐ Bug fix: Altair charts have the correct width and don't overflow with long titles (#11585, #9984).
- ๐ Bug fix:
st.toastmessages appear abovest.dialogcontainers (#11578, #10383). - ๐ชฑ Bug fix: Streamlit apps correctly scroll to anchor links (#11552, #11551).
- โ๏ธ Bug fix:
st.contextdoes not lose state in an app being edited (#11506, #11330). - โฌ Bug fix:
st.codepreserves leading white space (#10065, #6302). Thanks, XuehaiPan! - ๐
Bug fix:
st.date_inputshows the correct hover effect when using date ranges (#11223, #10929). Thanks, Bernardo1008! - ๐ฉ Bug fix: Dataframes using
pandasStylercorrectly displayEnumvalues (#11049, #10637). Thanks, BigBird404! - โ ๏ธ Bug fix:
st.contextdoes not lose state whenst.switch_pageis called (#11521, #11507). - ๐ฝ Bug fix: File watcher correctly handles custom metaclasses (#10388, #10992). Thanks, HomenShum!
- ๐ป Bug fix:
st.mapuses a private Mapbox token when configured (#11511, #11399). - ๐ฆ Bug fix:
vega-interpreterwas updated to prevent unintentional blank axes (#11514, #5733). - ๐ฆ Bug fix: Truncated values in
NumberColumnare rounded correctly (#11520, #11519). - ๐ Bug fix: Highlighted in text in Markdown has the correct padding on wrapped lines (#11530).
- ๐ธ๏ธ Bug fix: For a Plotly chart, reset axes works correctly after using fullscreen (#11498, #11327).
- ๐ฆ Bug fix: Altair chart are not cropped on the left on first load (#10939, #9339). Thanks, goncalossmartins!
- ๐ Bug fix: Chart columns correctly show negative values (#11048, #10411). Thanks, tiagorb1!
- ๐ฆ Bug fix: Streamlit doesn't crash when editing indices in
st.data_editor(#11448, #11434). - ๐ฆ Bug fix: Color and style is preserved in charts when using
.add_rows()(#11414, #11312). - ๐ช๏ธ Bug fix: Tornado 6.5.0 is excluded to prevent file uploading errors related to unicode filenames (#11440, #11396, #11436).
- ๐ฆ Bug fix: Selected rows are cleared when a column in
st.dataframeis sorted (#11363, #11345). - ๐ถ Bug fix: Streamlit shows a clearer message when it can't connect to the server and automatically dismisses the message if a connection is successful (#11366).
- ๐ชฐ Bug fix: Localized number and date formats correctly interpret locales with commas (#11297, #11291).
- ๐งน Bug fix: Streamlit cleans up the forward message cache to prevent WebSocket message errors (#11302, #11299, #11300).
- ๐ Bug fix:
st.latexscrolls horizontally when its content is wider than the app (#10071, #4304). - ๐ชณ Bug fix:
st.multiselecthas a more stable sort when filtering options (#11309, #11218). - ๐ท๏ธ Bug fix:
st.multiselectoptions are case sensitive and don't overlap in the drop down menu (#11307, #11217, #11306, #11215). - ๐ช Bug fix: Streamlit logs an error if the cookie returned by
st.loginis too large (#11290, #11168). - ๐ชฒ Bug fix: Displaying elements within a fragment's callback logs a clear warning that it's not supported (#10942, #10475). Thanks, Zane-dev16!
- ๐ Bug fix:
st.file_uploaderis case insensitive when validating allowed file extensions (#11261, #11259). - ๐ Bug fix: Page runs end correctly to prevent invalid widget states (#11258, #11202).
- ๐ค Bug fix: Error messages correctly refer to
st.userinstead ofst.experimental_user(#11198). - ๐ท๏ธ Bug fix: The missing label warning for widgets includes a stack trace (#11187, #8908).
- ๐ Bug fix:
st.data_editorreturns the correct result when some rows are deleted and others are added (#11183, #11180).
Version 1.45.0
Release date: April 29, 2025
Highlights
- ๐ง Announcing the general availability of
st.user, a dict-like object to access information about the current user.
Notable Changes
- โ
st.multiselectandst.selectboxhave a new parameter to let users add new options. - ๐ฅธ
st.contexthas new attributes:url,ip_address, andis_embedded. - โ ๏ธ Text alerts and exceptions have a new
widthparameter (#11142). - โจ๏ธ You can set the tab index for
st.components.v1.htmlandst.components.v1.iframe(#11065, #7969). - ๐ When you pass a CSS file's path to
st.html, Streamlit will automatically insert<style>tags and avoid creating extra space in the app (#10979, #9388, #10027). - ๐ You can add an icon to the left of the value in
st.text_inputandst.number_input.
Other Changes
- ๐๏ธ Per the scheduled deprecation,
st.experimental_audio_inputhas been removed. Usest.audio_inputinstead. - ๐ Various elements received styling tweaks for consistency and compatibility with advanced theming (#10916, #10930, #10915, #10944, #10990, #11033, #11034).
- โ๏ธ The element toolbar sizing and spacing was adjusted for improved UX (#11135, #11155).
- ๐ซฅ Bug fix: Streamlit does not display a frontend error when displaying an empty dataframe (#11100, #11064).
- ๐ Bug fix:
st.contextretains its information when callingst.rerun(#11113, #11111). - ๐ฉ Bug fix:
st.camera_inputhas the correct color and hover effect when disabled (#11116). - ๐ค Bug fix:
st.audio_inputhas consistent color and hover effects with other widgets (#11118). - โ๏ธ Bug fix:
st.logodisplays correctly when the sidebar is resized (#11063, #11062). - ๐ Bug fix:
st.file_uploadercan handle multi-part file extensions in itstypeparameter (#11043, #11041). Thanks, moutayam! - ๐ Bug fix:
theme.fontFacescorrectly supports font style (#11098, #11097). - ๐งน Bug fix:
streamlit initspecifies file encoding to avoid errors in systems where UTF-8 is not the default (#11090, #11086). Thanks, ashm-dev! - ๐ Bug fix: In the sidebar, space is reserved for the scrollbar to prevent flickering from resizing (#10733, #10310).
- ๐ชฑ Bug fix:
st.logosupports SVGs defined with aviewBox(#11038, #10904). - โ ๏ธ Bug fix:
st.date_inputraises an error in the UI if a user enters a date outside of the specified allowed range (#10764, #8475). - ๐ฝ Bug fix:
st.snowandst.balloonsdon't incorrectly rerun during a fragment rerun (#11015, #10961). - ๐ป Bug fix: When updating
config.tomlduring development, Streamlit will elegantly handle invalid TOML formatting and reload the configuration file on the next save (#10857, #1256, #8320). - ๐ฆ Bug fix: Streamlit applies the correct hover effect when colored text is used in button labels (#10996, #8767).
- ๐ฆ Bug fix: Streamlit ignores
__init__.pyand dotfiles in the/pagesdirectory when automatically declaring pages in a multipage app (#11009, #11006). - โฉ
st.writereceived an optimization tweak for rendering strings (#10985). - ๐ฆ Bug fix:
st.htmlrenders at 100% width for correct sizing (#10976, #10964). - ๐ Bug fix: Page links become disabled if a client disconnects from the Streamlit server (#10946, #9198).
- ๐ธ๏ธ Bug fix: Streamlit supports newer emojis in page icons (#10912, #11154).
- ๐ฆ Bug fix:
st.exceptiononly shows links to Google and ChatGPT when the app is being accessed throughlocalhost(#10971, #10924). - ๐ฆ Bug fix:
st.chat_inputwill expand to show multi-line placeholder text in most browsers. Firefox does not support this fix (#10931, #10611). - ๐ฆ Bug fix: Streamlit elegantly catches a
TypeErrorwhen concurrent changes to rows and columns cause a failure in serialization (#10954, #10937). - ๐ฆ Bug fix: Streamlit cleanly handles non-ASCII characters in anchor links, which may change some anchors in existing apps (#10929, #8114).
- ๐ชฐ Bug fix: To prevent a race condition, session information is not immediately cleared unless a new session message is received (#9886, #9767).
- ๐ชณ Bug fix:
streamlit config showcorrectly displaysclient.showErrorDetailsas a string instead of a list (#10921, #10913). - ๐ท๏ธ Bug fix:
st.selectboxdoes not lose its value if a partial edit is abandoned (#10891). - ๐ Bug fix:
st.badgedoesn't falsely showrainbowas a color option (#10896). - ๐ Bug fix: To avoid a file lock conflict the occurs with some IDEs, Streamlit's file watcher utilities retries reading files when blocked (#10868, #4486). Thanks, Morridin!
- ๐ Bug fix:
st.selectboxandst.multiselecthave consistent color and spacing for placeholder text (#10865). - ๐ชฒ Bug fix: Context managers correctly handle form elements (#10752, #8761). Thanks, SrGesus!
- ๐ Bug fix:
st.link_buttonandst.tabsremain active when a client disconnects from a Streamlit server (#10861).
Version 1.44.0
Release date: March 25, 2025
Highlights
- ๐ Introducing advanced theming options! Use an assortment of configuration options to customize the appearance of your app. Change the fonts, colors, and roundness of your app without CSS.
- ๐ฎ Introducing
st.badgeto insert a colored badge element. You can also include badges in Markdown using a new directive. - ๐๏ธ Use
streamlit initin your terminal to create all the local files you need for a new Streamlit app.
Notable Changes
- ๐ค
st.exceptionincludes links to open Google or ChatGPT with the contents of the exception. This includes uncaught exceptions displayed in the app. - ๐บ๏ธ You can access the user's locale through
st.context(#10563).
Other Changes
- ๐ When using a
pages/directory to automatically generate a multipage app, no pages (including the entrypoint file) can have the same inferred URL pathname (#10276). - ๐๏ธ To improve performance, Streamlit uses the React 18
createRootAPI for its frontend (#10453). - ๐ To improve compatibility with AI tools, script compilation errors are logged when
logger.level="error"and not just whenlogger.level="debug"(#10826). - ๐ชต Streamlit automatically enables more detailed logging if
richis installed (#10650). - ๐ข
st.sliderandst.number_inputraise an error when assigned a value in excess of a declared minimum or maximum (#9964, #9342). - ๐ ๏ธ
st.tablesupport pandasStyler.set_tooltips()(#10561, #10553). - โน๏ธ Material symbols have been updated to the latest icon set (#10813, #10717).
- ๐ฆ Visual tweaks to headers (#10599).
- ๐ฆ Bug fix:
st.htmldisplays correctly when used insidest.tabs(#10825, #10815). - ๐ฆ Bug fix: For backwards compatibility,
theme.font="sans serfi"is internally converted to the newtheme.font="sans-serif"(#10789, #10786). - ๐ Bug fix: When using
st.secrets, if Streamlit can't find thesecrets.tomlfile, it will raise aFileNotFoundError(#10508, #8559). - ๐ธ๏ธ Bug fix:
st.secretsraises a clearTypeErrorif you try to assign a value to an attribute (#10698, #10107). - ๐ฆ Bug fix: In single-page apps,
st.page_linkdoes not highlight external links as if they are the current page (#10690, #10689). - ๐ฆ Bug fix:
st.poppoverdisplays at the correct width when using thehelpparameter (#10709, #10693). - ๐ฆ Bug fix: All components (and custom components) that read their width from the DOM initially load with a width of -1 px to prevent flickering (#10712, #10672, #10663, #10644).
- ๐ฆ Bug fix: When
st.number_inputis configured to use integers, the default minimum and maximum values will prevent integer overflow (#10655, #6740). - ๐ชฐ Bug fix:
st.navigationuses immutable types to prevent mypy errors (#10670). - ๐ชณ Bug fix: Custom components correctly inherit font from theme configuration (#10661, #10660).
- ๐ท๏ธ Bug fix: Dataframes correctly support Dask data objects (#10662).
- ๐ Bug fix: Button widths are correct when using the
helpparameter (#10658, #10648, #10656). - ๐ Bug fix: Scrolling is disabled when hovering over
st.number_inputto prevent accidental value changes (#10642, #8867). - ๐ Bug fix:
st.chat_inputgives a clear error in the UI when the file size limit is exceeded (#10530). - ๐ชฒ Bug fix: The favicon and Markdown emojis use the same SVG emoji source for consistency (#10539, #6822).
- ๐ Bug fix: The dataframe search bar is more responsive to width (#10534, #10532).
Version 1.43.0
Release date: March 4, 2025
Highlights
- ๐ Announcing the option to accept files with
st.chat_input! - ๐ Introducing a new column type for column configuration! Use
JsonColumnto show JSON-compatible objects.
Notable Changes
- ๐ You can prevent
st.download_buttonfrom triggering a rerun by settingon_click="ignore"(#10296, #4382). - ๐ You can access a user's timezone and timezone offset through
st.context(#10336). - โ๏ธ You can configure the row height in
st.dataframeandst.data_editorwith a new parameter (#9549, #7266, #8632, #5386). - ๐
st.dataframeandst.data_editoruseuse_container_width=Trueby default (#10434). - ๐ค Markdown has a small text directive (#10487, #10486).
- ๐งต You can pass strings, paths, and callables to
st.navigationin place ofStreamlitPageobjects for convenience (#10358, #10069). Thanks, ashm-dev! - ๐ Streamlit has a new custom component,
streamlit-bokeh, to support the latest version of Bokeh (#10374, #5858). - ๐ฃ
NumberColumn,ProgressColumn,DatetimeColumn,DateColumn, andTimeColumnhave preconfigured format options for ease of use (#10179, #8788, #7702). - ๐๏ธ Static file serving supports files with JSON, XML, and common font file extensions. (#10417, #10335, #10337, #10302).
Other Changes
- ๐ฅท Users can hide dataframe columns (#10264, #6870).
- ๐ Users can change the format of numbers, dates, and times in dataframes (#10420).
- โ๏ธ Users can auto-size column widths (#10476).
- ๐ปโโ๏ธ Streamlit supports Polars dataframe and series hashing (#10408, #10347).
- โ ๏ธ
richis no longer a required dependency for Streamlit (#10320). - ๐ฆ
st.file_uploaderhas a better display format in narrow containers (#10272). - ๐ฆ Bug fix: Tabs are prevented from having a width of zero to prevent flickering (#10533).
- ๐ Bug fix: Column order is correctly displayed when set in column configuration (#10445, #10442).
- ๐ธ๏ธ Bug fix: We updated dataframe null handling to prevent deprecation warnings (#10484).
- ๐ฆ Bug fix: Elapsed time doesn't overflow for
st.audio_input(#10410, #10373). Thanks, ashm-dev! - ๐ฆ Bug fix:
st.altair_chartdoes not show an incorrect "true" tooltip when the user makes a selection (#10456, #10448). - ๐ฆ Bug fix: Streamlit does not raise a RuntimeError when an
asyncioevent loop is not already running (#10455, #10452). - ๐ฆ Bug fix: The key for an internal MIME type is set correctly to avoid a browser warning (#10404).
- ๐ชฐ Bug fix:
st.data_editorautomatically scrolls to the bottom when a user adds a row (#10405, #10351). - ๐ชณ Bug fix: Tooltips are suppressed on user-added rows in
st.data_editorto prevent erroneous warnings (#10398). - ๐ท๏ธ Bug fix:
st.logodisplays consistently when used with fragments and dialogs (#10377, #10350, #10382). - ๐ Bug fix:
st.graphviz_charthas rounded corners for consistent style (#10224). - ๐ Bug fix: Streamlit raises a clear exception when an underscore is used in
providerforst.login(#10360, #10356). - ๐ Bug fix: The dataframe column menu displays correctly inside dialogs (#10359, #10357).
- ๐ชฒ Bug fix: Exception handling was adjusted for improved compatibility with Cython (#10354, #10353). Thanks, tutu-sol!
- ๐ Bug fix:
st.pillsandst.segmented_controlhave consistent font sizes across browsers (#10349).
Version 1.42.0
Release date: February 4, 2025
Highlights
- ๐ฉโ๐ป Introducing
st.login()andst.logout()to authenticate users with any OpenID Connect provider.
Notable Changes
- โฃ๏ธ
st.tablesupports Markdown (#8785, #10088). - โฒ๏ธ
st.spinnercan show elapsed time withshow_time=True(#6805, #10072). - ๐
st.imagesupports Markdown in thecaptionparameter (#6808, #10075). - โ๏ธ
st.codehas aheightparameter (#7418, #10080). - โ๏ธ Most charts default to using
use_container_width=True(#10064). - โ๏ธ
SnowflakeConnectionwas updated to match the current Snowflake API, which changes its handling of keyword arguments in some cases (#10122). - ๐ Users can drag and drop dataframe columns to rearrange them (#8796, #10099).
Other Changes
- ๐ Dataframes have column menus for users to sort and pin columns (#10206).
- ๐ฆ Dataframes support categorical indices (#9647, #10195).
- ๐ธ Dataframes show a hover highlight on rows (#8096, #10104).
- โ ๏ธ When dataframes have cell values that are inconsistent with their configured type, Streamlit shows a tooltip describing the error (#8253, #9899).
- โฐ If there is an existing asyncio event loop when a Streamlit app starts, the app will reuse it instead of creating a new one (#10164). Thanks, DeltaGa!
- ๐ผ๏ธ Streamlit recognizes
pyspark.sql.connect.dataframe.DataFrameobjects as dataframes (#9953, #9954). Thanks, OSalama! - ๐ We've updated emoji validation for new emojis (#10149).
- ๐ฃ Material Symbols have been updated with the latest icons (#10247).
- ๐ Visual tweaks and improvements (#8705, #9823, #10047, #10048, #10083, #10087, #10225).
- โญ
st.imagedisplays rounded corners for consistent design (#9999). - ๐ฉ Bug fix: Top margin is applied correctly in
st.columns(#10265, #10268). - ๐ฉ Bug fix:
react-syntax-highlighteris aliased to prevent rendering errors inst.code(#10231, #10244). - ๐งน Bug fix: We improved error messages for
st.query_params(#10111, #10237). - ๐ชฑ Bug fix: Linting for
st.altair_chartrecognizes all Altair chart types (#10202). - โ๏ธ Bug fix:
st.dataframesupports raw Arrow data (#5606, #10191). - ๐ Bug fix:
st.navigationandst.page_linkwork when running in pure Python tests (#10163). - โ ๏ธ Bug fix: Retries were added to prevent a possible race condition when files are removed while Streamlit is running (#10148).
- ๐ฝ Bug fix: When printing an app,
st.logowill only print once (#10165, #10171). - ๐ Bug fix: Material icons are marked to prevent translation (#10168, #10174).
- ๐ป Bug fix:
st.vega_lite_chartcorrectly caches and updates its data (#6689, #10125). - ๐ฆ Bug fix: When a fragment ID is not found, Streamlit logs a warning but doesn't raise an error (#9921, #10130).
- ๐ฆ Bug fix: The label on
st.expandercorrectly fades when stale (#10085). - ๐ฆ Bug fix:
st.date_inputprovides better type hinting for its return value (#9477, #9620). Thanks, pranaybattu! - ๐ Bug fix: In dataframes, small float values display their first significant figure instead of displaying as 0 (#10060).
- ๐ธ๏ธ Bug fix: When
richis installed, errors are only logged once. (#10097). - ๐ฆ Bug fix:
st.textpreserves whitespace (#10055, #10062). - ๐ฆ Bug fix: Dataframe
widthis not ignored whenheightis changed (#9762, #10036). - ๐ฆ Bug fix: Multi index columns correctly handle empty labels (#9749, #10035).
- ๐ฆ Bug fix: Pinned columns respect
column_orderin when configured inst.dataframe(#9997, #10034). - ๐ชฐ Bug fix: Tooltips don't overflow to the left or right (#9288, #9452, #9983).
- ๐ชณ Bug fix: Disabled feedback widgets correctly show their value (#10030).
- ๐ท๏ธ Bug fix: Widgets correctly submit values if a user edits the value and immediately clicks a button (#10007, #10018).
- ๐ Bug fix: Some MIME types have been hardcoded to protect against browser misconfiguration (#10004, #10010).
- ๐ Bug fix: Files that unnecessarily inflated Streamlit's installation size were removed (#10008, #10011).
- ๐ Bug fix:
st.date_inputgives the correct type hint for thevalueparameter (#10005, #10006). - ๐ชฒ Bug fix:
st.writepasses tost.htmlwhen._repr_html()is present for an object (#9910). - ๐ Bug fix:
st.htmlpreservestarget=_blankif set in an HTML string (#9972, #9994).
Still have questions?
Our forums are full of helpful information and Streamlit experts.
