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_input
through Session State (#10175, #7166).- ↔️ You can set a
width
parameter forst.html
,st.feedback
,st.pills
,st.segmented_control
, andst.multiselect
. You can set a
height
parameter forst.metric
andst.text_area
.st.code
andst.form
can haveheight="stretch"
.st.code
can havewidth="content"
.You can show the elapsed time with the spinner for cached functions using the
show_time
parameter (#11469, #10647). Thanks, Darkace01!server.showEmailPrompt
lets you configure whether to show the email prompt (for locally running apps).NumberColumn
andProgressColumn
support"bytes"
as a predefined format (#11288, #11287). Thanks, cgivre!Column configuration accepts pixel widths for columns (#11838).
The
display_text
parameter ofLinkColumn
accepts a Material icon (#11690, #7004).The
title
parameter ofst.dialog
accepts Markdown (#11763, #11755).To support proxying requests for custom components, in
declare_component
, you can set bothurl
andpath
(#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 fromstep
will override the display precision fromformat
, unlessformat
is a printf string (#11835).When
st.date_input
accepts 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
pandas
Styler
objects (#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.metric
uses 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.theme
does not automatically rerun the app on first load. In some cases,st.context.theme
may not be correct until the first rerun (#11870, #11797).Bug fix:
st.chat_input
displays 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 directory
errors, 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.multiselect
andst.selectbox
display 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-grid
was 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.spinner
uses 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_input
andst.camera_input
have consistent appearances (#11699, #11700).Bug fix: To prevent a race condition, the file watcher correctly applies a lock to watched paths (#11692, #11691).