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.46.0
Release date: June 18, 2025
Highlights
- ๐งญ Introducing top navigation! Use
st.navigation
withposition="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.form
has a new parameter to configure itsheight
. - ๐ ๏ธ
st.columns
supportsgap=None
for no gap between columns. - ๐๏ธ Font face declarations in
config.toml
support 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_config
can be called multiple times in a single script run (#11286, #4483, #2216, #9797, #9038). - ๐บ๏ธ
st.pydeck_chart
andst.map
now 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.json
file (#11462). - ๐๏ธ
st.dataframe
shows row selection boxes always instead of just on hover (#11411, #11410). - ๐ฆ
ListColumn
andLinkColumn
can inherit coloring frompandas
Styler
(#11612, #8254). - ๐น
NumberColumn
andProgressColumn
support a Japanese yen number format (#11588). Thanks, alexmalins! - ๐
st.page_link
can 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.text
uses thebreak-word
CSS property to wrap long lines without whitespace (#10969, #10824). Thanks, matilde2004! - ๐ชฒ Bug fix: Material icons display correctly in
st.markdown
whenunsafe_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.dataframe
clears 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.toast
messages appear abovest.dialog
containers (#11578, #10383). - ๐ชฑ Bug fix: Streamlit apps correctly scroll to anchor links (#11552, #11551).
- โ๏ธ Bug fix:
st.context
does not lose state in an app being edited (#11506, #11330). - โฌ Bug fix:
st.code
preserves leading white space (#10065, #6302). Thanks, XuehaiPan! - ๐
Bug fix:
st.date_input
shows the correct hover effect when using date ranges (#11223, #10929). Thanks, Bernardo1008! - ๐ฉ Bug fix: Dataframes using
pandas
Styler
correctly displayEnum
values (#11049, #10637). Thanks, BigBird404! - โ ๏ธ Bug fix:
st.context
does not lose state whenst.switch_page
is called (#11521, #11507). - ๐ฝ Bug fix: File watcher correctly handles custom metaclasses (#10388, #10992). Thanks, HomenShum!
- ๐ป Bug fix:
st.map
uses a private Mapbox token when configured (#11511, #11399). - ๐ฆ Bug fix:
vega-interpreter
was updated to prevent unintentional blank axes (#11514, #5733). - ๐ฆ Bug fix: Truncated values in
NumberColumn
are 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.dataframe
is 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.latex
scrolls horizontally when its content is wider than the app (#10071, #4304). - ๐ชณ Bug fix:
st.multiselect
has a more stable sort when filtering options (#11309, #11218). - ๐ท๏ธ Bug fix:
st.multiselect
options 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.login
is 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_uploader
is 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.user
instead ofst.experimental_user
(#11198). - ๐ท๏ธ Bug fix: The missing label warning for widgets includes a stack trace (#11187, #8908).
- ๐ Bug fix:
st.data_editor
returns 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.multiselect
andst.selectbox
have a new parameter to let users add new options. - ๐ฅธ
st.context
has new attributes:url
,ip_address
, andis_embedded
. - โ ๏ธ Text alerts and exceptions have a new
width
parameter (#11142). - โจ๏ธ You can set the tab index for
st.components.v1.html
andst.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_input
andst.number_input
.
Other Changes
- ๐๏ธ Per the scheduled deprecation,
st.experimental_audio_input
has been removed. Usest.audio_input
instead. - ๐ 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.context
retains its information when callingst.rerun
(#11113, #11111). - ๐ฉ Bug fix:
st.camera_input
has the correct color and hover effect when disabled (#11116). - ๐ค Bug fix:
st.audio_input
has consistent color and hover effects with other widgets (#11118). - โ๏ธ Bug fix:
st.logo
displays correctly when the sidebar is resized (#11063, #11062). - ๐ Bug fix:
st.file_uploader
can handle multi-part file extensions in itstype
parameter (#11043, #11041). Thanks, moutayam! - ๐ Bug fix:
theme.fontFaces
correctly supports font style (#11098, #11097). - ๐งน Bug fix:
streamlit init
specifies 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.logo
supports SVGs defined with aviewBox
(#11038, #10904). - โ ๏ธ Bug fix:
st.date_input
raises an error in the UI if a user enters a date outside of the specified allowed range (#10764, #8475). - ๐ฝ Bug fix:
st.snow
andst.balloons
don't incorrectly rerun during a fragment rerun (#11015, #10961). - ๐ป Bug fix: When updating
config.toml
during 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__.py
and dotfiles in the/pages
directory when automatically declaring pages in a multipage app (#11009, #11006). - โฉ
st.write
received an optimization tweak for rendering strings (#10985). - ๐ฆ Bug fix:
st.html
renders 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.exception
only shows links to Google and ChatGPT when the app is being accessed throughlocalhost
(#10971, #10924). - ๐ฆ Bug fix:
st.chat_input
will expand to show multi-line placeholder text in most browsers. Firefox does not support this fix (#10931, #10611). - ๐ฆ Bug fix: Streamlit elegantly catches a
TypeError
when 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 show
correctly displaysclient.showErrorDetails
as a string instead of a list (#10921, #10913). - ๐ท๏ธ Bug fix:
st.selectbox
does not lose its value if a partial edit is abandoned (#10891). - ๐ Bug fix:
st.badge
doesn't falsely showrainbow
as 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.selectbox
andst.multiselect
have consistent color and spacing for placeholder text (#10865). - ๐ชฒ Bug fix: Context managers correctly handle form elements (#10752, #8761). Thanks, SrGesus!
- ๐ Bug fix:
st.link_button
andst.tabs
remain 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.badge
to insert a colored badge element. You can also include badges in Markdown using a new directive. - ๐๏ธ Use
streamlit init
in your terminal to create all the local files you need for a new Streamlit app.
Notable Changes
- ๐ค
st.exception
includes 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
createRoot
API 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
rich
is installed (#10650). - ๐ข
st.slider
andst.number_input
raise an error when assigned a value in excess of a declared minimum or maximum (#9964, #9342). - ๐ ๏ธ
st.table
support 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.html
displays 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.toml
file, it will raise aFileNotFoundError
(#10508, #8559). - ๐ธ๏ธ Bug fix:
st.secrets
raises a clearTypeError
if you try to assign a value to an attribute (#10698, #10107). - ๐ฆ Bug fix: In single-page apps,
st.page_link
does not highlight external links as if they are the current page (#10690, #10689). - ๐ฆ Bug fix:
st.poppover
displays at the correct width when using thehelp
parameter (#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_input
is configured to use integers, the default minimum and maximum values will prevent integer overflow (#10655, #6740). - ๐ชฐ Bug fix:
st.navigation
uses 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
help
parameter (#10658, #10648, #10656). - ๐ Bug fix: Scrolling is disabled when hovering over
st.number_input
to prevent accidental value changes (#10642, #8867). - ๐ Bug fix:
st.chat_input
gives 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
JsonColumn
to show JSON-compatible objects.
Notable Changes
- ๐ You can prevent
st.download_button
from 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.dataframe
andst.data_editor
with a new parameter (#9549, #7266, #8632, #5386). - ๐
st.dataframe
andst.data_editor
useuse_container_width=True
by default (#10434). - ๐ค Markdown has a small text directive (#10487, #10486).
- ๐งต You can pass strings, paths, and callables to
st.navigation
in place ofStreamlitPage
objects 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
, andTimeColumn
have 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).
- โ ๏ธ
rich
is no longer a required dependency for Streamlit (#10320). - ๐ฆ
st.file_uploader
has 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_chart
does not show an incorrect "true" tooltip when the user makes a selection (#10456, #10448). - ๐ฆ Bug fix: Streamlit does not raise a RuntimeError when an
asyncio
event 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_editor
automatically scrolls to the bottom when a user adds a row (#10405, #10351). - ๐ชณ Bug fix: Tooltips are suppressed on user-added rows in
st.data_editor
to prevent erroneous warnings (#10398). - ๐ท๏ธ Bug fix:
st.logo
displays consistently when used with fragments and dialogs (#10377, #10350, #10382). - ๐ Bug fix:
st.graphviz_chart
has rounded corners for consistent style (#10224). - ๐ Bug fix: Streamlit raises a clear exception when an underscore is used in
provider
forst.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.pills
andst.segmented_control
have 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.table
supports Markdown (#8785, #10088). - โฒ๏ธ
st.spinner
can show elapsed time withshow_time=True
(#6805, #10072). - ๐
st.image
supports Markdown in thecaption
parameter (#6808, #10075). - โ๏ธ
st.code
has aheight
parameter (#7418, #10080). - โ๏ธ Most charts default to using
use_container_width=True
(#10064). - โ๏ธ
SnowflakeConnection
was 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.DataFrame
objects 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.image
displays rounded corners for consistent design (#9999). - ๐ฉ Bug fix: Top margin is applied correctly in
st.columns
(#10265, #10268). - ๐ฉ Bug fix:
react-syntax-highlighter
is 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_chart
recognizes all Altair chart types (#10202). - โ๏ธ Bug fix:
st.dataframe
supports raw Arrow data (#5606, #10191). - ๐ Bug fix:
st.navigation
andst.page_link
work 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.logo
will only print once (#10165, #10171). - ๐ Bug fix: Material icons are marked to prevent translation (#10168, #10174).
- ๐ป Bug fix:
st.vega_lite_chart
correctly 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.expander
correctly fades when stale (#10085). - ๐ฆ Bug fix:
st.date_input
provides 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
rich
is installed, errors are only logged once. (#10097). - ๐ฆ Bug fix:
st.text
preserves whitespace (#10055, #10062). - ๐ฆ Bug fix: Dataframe
width
is not ignored whenheight
is changed (#9762, #10036). - ๐ฆ Bug fix: Multi index columns correctly handle empty labels (#9749, #10035).
- ๐ฆ Bug fix: Pinned columns respect
column_order
in 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_input
gives the correct type hint for thevalue
parameter (#10005, #10006). - ๐ชฒ Bug fix:
st.write
passes tost.html
when._repr_html()
is present for an object (#9910). - ๐ Bug fix:
st.html
preservestarget=_blank
if set in an HTML string (#9972, #9994).
Still have questions?
Our forums are full of helpful information and Streamlit experts.