Skip to content

Commit 1ffc3f4

Browse files
Release 1.50.0 (#1346)
* Update streamlit.json * Fix missing deprecation in 1.49.0 parse error * Add MultiselectColumn * Remove accidental post-cutoff change * Update streamlit.json * Release notes * Remove smart quotes * Inline font definitions * Fix tabs and audio input example headers * Typos * Color palette * Update config.toml * Bump streamlit version for apps * Cheat sheet * What's new * Apply suggestions from code review Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]>
1 parent e28dfc8 commit 1ffc3f4

File tree

40 files changed

+12837
-230
lines changed

40 files changed

+12837
-230
lines changed

content/develop/api-reference/configuration/config-toml.md

Lines changed: 417 additions & 0 deletions
Large diffs are not rendered by default.

content/develop/api-reference/data/column_config/_index.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,19 @@ SelectboxColumn("App Category", options=["🤖 LLM", "📈 Data Viz"])
7676

7777
</RefCard>
7878

79+
<RefCard href="/develop/api-reference/data/st.column_config/st.column_config.multiselectcolumn">
80+
<Image pure alt="screenshot" src="/images/api/column_config.multiselectcolumn.jpg" />
81+
82+
<h4>Multiselect column</h4>
83+
84+
Configure a multiselect column.
85+
86+
```python
87+
MultiselectColumn("App Category", options=["LLM", "Visualization"])
88+
```
89+
90+
</RefCard>
91+
7992
<RefCard href="/develop/api-reference/data/st.column_config/st.column_config.datetimecolumn">
8093
<Image pure alt="screenshot" src="/images/api/column_config.datetimecolumn.jpg" />
8194

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
title: st.column_config.MultiselectColumn
3+
slug: /develop/api-reference/data/st.column_config/st.column_config.multiselectcolumn
4+
description: st.column_config.MultiselectColumn configures multiselect columns for editing categorical columns or columns with a predefined set of possible values.
5+
keywords: st.column_config.MultiselectColumn, multiselect column, dropdown column, select options, dropdown menu, choice column, option selection, dataframe dropdown
6+
---
7+
8+
<Autofunction function="streamlit.column_config.MultiselectColumn" />

content/develop/concepts/configuration/theming-colors-and-borders.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ For all configuration options that accept a color, you can specify the value wit
1818

1919
<Tip>
2020

21-
Although you can specify an alpha value for your colors, this isn't recommended. Streamlit adjusts the alpha value of colors to ensure contextually appropriate shading between background and foreground.
21+
Although you can specify an alpha value for your colors, this isn't necessary for most options. Streamlit adjusts the alpha value of colors to ensure contextually appropriate shading between background and foreground.
2222

2323
</Tip>
2424

2525
## Default Streamlit colors
2626

27-
Streamlit comes with two preconfigured themes: light and dark. If you don't specify any theme configuration options, Streamlit will attempt to use the preconfigured theme that best matches each user's browser settings.
27+
Streamlit comes with two preconfigured themes: light and dark. If you don't specify any theme configuration options, Streamlit will attempt to use the preconfigured theme that best matches each user's browser settings. These themes feature a red primary color in addition to a basic color palette (red, orange, yellow, green, blue, violet, and gray/grey) for elements like colored Markdown text.
2828

2929
## Color and border configuration options
3030

@@ -51,9 +51,30 @@ The following configuration options can be set separately for the sidebar by usi
5151
- `theme.dataframeBorderColor`
5252
- `theme.dataframeHeaderBackgroundColor`
5353
- `theme.showWidgetBorder`
54+
- All color palette options
5455

5556
For brevity, on the rest of this page, theming configuration options will not include the `theme.` or `theme.sidebar.` prefix.
5657

58+
### Basic color palette
59+
60+
Various elements in Streamlit use or let you choose from a predefined palette of colors: red, orange, yellow, green, blue, violet, and gray/grey. These are some of the elements that use this basic color palette:
61+
62+
- Markdown text and background color (including `st.badge`).
63+
- `st.metric` sparklines and deltas.
64+
- Dataframe chart columns.
65+
- Chat message avatars.
66+
- Alert elements like `st.success` and `st.warning`.
67+
68+
For each color in the palette, you can define a base color, background color, and text color. If you only define a base color, Streamlit adjusts lightness/darkness and opacity to automatically provide a corresponding background and text color. However, you can manually define each of them, too. These are the color palette options:
69+
70+
- `redColor`, `redBackgroundColor`, `redTextColor`
71+
- `orangeColor`, `orangeBackgroundColor`, `orangeTextColor`
72+
- `yellowColor`, `yellowBackgroundColor`, `yellowTextColor`
73+
- `greenColor`, `greenBackgroundColor`, `greenTextColor`
74+
- `blueColor`, `blueBackgroundColor`, `blueTextColor`
75+
- `violetColor`, `violetBackgroundColor`, `violetTextColor`
76+
- `grayColor`, `grayBackgroundColor`, `grayTextColor`
77+
5778
### `primaryColor`
5879

5980
`primaryColor` defines the accent color most often used throughout your Streamlit

content/develop/concepts/configuration/theming-fonts.md

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,25 @@ font = "serif"
5252
font = "sans-serif"
5353
```
5454

55-
## Loading alternative fonts
55+
## Externally hosted fonts
5656

57-
To use an alternative font in your app, you must declare the font in `config.toml` under `[[theme.fontFaces]]`. For multiple alternative fonts, declare multiple `[[theme.fontFaces]]` tables in your configuration file. You can self-host your font by using Streamlit static file serving, or you can point to a publicly hosted font file.
57+
If you use a font service like Google Fonts or Adobe Fonts, you can use those fonts directly by encoding their font family (name) and CSS URL into a single string of the form `{font_name}:{css_url}`. If your font family includes a space, use inner quotes on the font family. In the following `config.toml` example, Streamlit uses Nunito font for all text except code, which is Space Mono instead. Space Mono has inner quotes because it has a space.
58+
59+
```toml
60+
[theme]
61+
font = "Nunito:https://fonts.googleapis.com/css2?family=Nunito&display=swap"
62+
codeFont = "'Space Mono':https://fonts.googleapis.com/css2?family=Space+Mono&display=swap"
63+
```
64+
65+
<Important>
66+
67+
If you configure your app to include any third-party integrations, including externally hosted fonts, your app may transmit user data (for example, IP addresses) to external servers. As the app developer, you are solely responsible for notifying your users about these third-party integrations, providing access to relevant privacy policies, and ensuring compliance with all applicable data protection laws and regulations.
68+
69+
</Important>
70+
71+
## Hosting alternative fonts
72+
73+
If you have font files that you want to host with your app, you must declare the font in `config.toml` under `[[theme.fontFaces]]`. For multiple alternative fonts, declare multiple `[[theme.fontFaces]]` tables in your configuration file. You can self-host your font by using Streamlit static file serving, or you can point to a publicly hosted font file.
5874

5975
<Important>
6076

@@ -176,38 +192,24 @@ project_directory/
176192
└── streamlit_app.py
177193
```
178194

179-
### Example 3: Define an alternative font with fallbacks
180-
181-
If you don't want to download and host your font files with your app, you can point to externally hosted font files. If your files aren't hosted with your app, it's recommended to declare fallback fonts.
182-
183-
<Important>
195+
## Font fallbacks
184196

185-
If you configure your app to include any third-party integrations, including externally hosted fonts, your app may transmit user data (for example, IP addresses) to external servers. As the app developer, you are solely responsible for notifying your users about these third-party integrations, providing access to relevant privacy policies, and ensuring compliance with all applicable data protection laws and regulations.
197+
If you use complicated font that might not be compatible with all browsers, or if you are using externally hosted fonts, it's best practice to include font fallbacks.
186198

187-
</Important>
199+
### Example 3: Define an alternative font with fallbacks
188200

189201
In your configuration file, wherever you declare a default font, you can use a comma-separated list of fonts instead. The font (or comma-separated list of fonts) is passed to the CSS [`font-family`](https://developer.mozilla.org/en-US/docs/Web/CSS/font-family) property.
190202

191-
You can always include one of Streamlit's default fonts as a final fallback. The following example uses [Nunito](https://fonts.google.com/specimen/Nunito) font. The configuration file points to the Google-hosted font files and identifies Streamlit's built-in font as the backup.
203+
You can always include one of Streamlit's default fonts as a final fallback. The following example uses [Nunito](https://fonts.google.com/specimen/Nunito) and [Space Mono](https://fonts.google.com/specimen/Space+Mono) fonts. The configuration file points to the Google-hosted font files and identifies Streamlit's built-in font as the backup.
192204

193205
A line-by-line explanation of this example is available in a [tutorial](/develop/tutorials/configuration-and-theming/external-fonts).
194206

195207
`.streamlit/config.toml`:
196208

197209
```toml
198-
[[theme.fontFaces]]
199-
family="Nunito"
200-
url="https://fonts.gstatic.com/s/nunito/v31/XRXX3I6Li01BKofIMNaDRs7nczIH.woff2"
201-
style="italic"
202-
weight="200 1000"
203-
[[theme.fontFaces]]
204-
family="Nunito"
205-
url="https://fonts.gstatic.com/s/nunito/v31/XRXV3I6Li01BKofINeaBTMnFcQ.woff2"
206-
style="normal"
207-
weight="200 1000"
208-
209210
[theme]
210-
font="Nunito, sans-serif"
211+
font="Nunito:https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000, sans-serif"
212+
codeFont="'Space Mono':https://fonts.googleapis.com/css2?family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap, monospace"
211213
```
212214

213215
<Tip>

content/develop/concepts/configuration/theming.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ The following options can be configured separately for the main body of your app
2525
- **Background color**: Set the color of app, widget, code block, and dataframe header backgrounds.
2626
- **Border radius**: Set the roundness of elements and widgets.
2727
- **Border color**: Set the color and visibility of element, widget, sidebar, and dataframe borders.
28+
- **Basic color palette**: Set the color palette (red, orange, yellow, green, blue, violet, and gray/grey) for things like colored Markdown text and sparklines.
2829

2930
## Example themes
3031

content/develop/quick-references/api-cheat-sheet.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ keywords: API cheat sheet, Streamlit API, widgets, layout, data display, utility
77

88
# Streamlit API cheat sheet
99

10-
This is a summary of the docs for the latest version of Streamlit, [v1.49.0](https://pypi.org/project/streamlit/1.49.0/).
10+
This is a summary of the docs for the latest version of Streamlit, [v1.50.0](https://pypi.org/project/streamlit/1.50.0/).
1111

1212
<Masonry>
1313

content/develop/quick-references/release-notes/2025.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,64 @@ keywords: changelog, release notes, version history
99

1010
This page contains release notes for Streamlit versions released in 2025. For the latest version of Streamlit, see [Release notes](/develop/quick-reference/release-notes).
1111

12+
## **Version 1.50.0**
13+
14+
_Release date: September 23, 2025_
15+
16+
**Highlights**
17+
18+
- 🤹 Introducing [`MultiselectColumn`](/develop/api-reference/data/st.column_config/st.column_config.multiselectcolumn) to configure colorful, editable lists in your dataframes.
19+
- 🎨 Announcing [color palette](/develop/concepts/configuration/theming-customize-colors-and-borders#basic-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`, and `st.badge`.
20+
- 📊 [`st.bar_chart`](/develop/api-reference/charts/st.bar_chart) has a new `sort` parameter for conveniently sorting your bars.
21+
22+
**Notable Changes**
23+
24+
- 🔑 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:
25+
- `st.button`
26+
- `st.download_button`
27+
- `st.checkbox`
28+
- `st.toggle`
29+
- `st.text_area`
30+
- `st.text_input`
31+
- `st.number_input`
32+
- `st.time_input`
33+
- `st.date_input`
34+
- `st.selectbox`
35+
- `st.multiselect`
36+
- Custom components
37+
- 🖌️ You can configure the color of [chart columns](/develop/api-reference/data/st.column_config/st.column_config.areachartcolumn).
38+
- 🔢 [`st.metric`](/develop/api-reference/data/st.metric) supports `decimal.Decimal` types ([#12377](https://github.com/streamlit/streamlit/pull/12377), [#12308](https://github.com/streamlit/streamlit/issues/12308)). Thanks, [aebrahim](https://github.com/aebrahim)!
39+
- 🎤 You can specify the sample rate for [`st.audio_input`](/develop/api-reference/widgets/st.audio_input), and the default sample rate has been reduced to 16000 Hz.
40+
- ⚙️ For clarity, in [`st.plotly_chart`](/develop/api-reference/charts/st.plotly_chart), `**kwargs` is deprecated and replaced by `config` ([#12291](https://github.com/streamlit/streamlit/pull/12291), [#12280](https://github.com/streamlit/streamlit/issues/12280)). Thanks, [zyfy29](https://github.com/zyfy29)!
41+
- 📈 [`st.line_chart`](/develop/api-reference/charts/st.line_chart) and [`st.graphviz_chart`](/develop/api-reference/charts/st.graphviz_chart) have `width` parameters to use with flex containers.
42+
- 🔲 You can configure [`st.table`](/develop/api-reference/data/st.table) borders to show all, only horizontal, or no lines.
43+
- 📂 You can specify a default tab in [`st.tabs`](/develop/api-reference/layout/st.tabs).
44+
- 🌐 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`, and `theme.codeFont`.
45+
46+
**Other Changes**
47+
48+
- 🧹 `**kwargs` has been removed from `st.write` ([#12375](https://github.com/streamlit/streamlit/pull/12375), [#12374](https://github.com/streamlit/streamlit/issues/12374)).
49+
- ⏱️ To prevent browser defaults from invalidating caches too soon, cache headers include the `max-age` and `immutable` directives ([#12420](https://github.com/streamlit/streamlit/pull/12420)).
50+
- 👽 Material icons were updated ([#12473](https://github.com/streamlit/streamlit/pull/12473), [#12535](https://github.com/streamlit/streamlit/pull/12535)).
51+
- 🦋 Visual tweaks ([#12348](https://github.com/streamlit/streamlit/pull/12348), [#12367](https://github.com/streamlit/streamlit/pull/12367)).
52+
- 👻 Bug fix: To correct a sequential navigation regression for `st.number_input`, some internal refactoring was reverted ([#12547](https://github.com/streamlit/streamlit/pull/12547), [#12526](https://github.com/streamlit/streamlit/issues/12526)).
53+
- 🦀 Bug fix: Custom components respect zero-size dimensions ([#12479](https://github.com/streamlit/streamlit/pull/12479), [#12454](https://github.com/streamlit/streamlit/issues/12454)).
54+
- 🦎 Bug fix: Images respect center alignment in containers ([#12495](https://github.com/streamlit/streamlit/pull/12495), [#12435](https://github.com/streamlit/streamlit/issues/12435)).
55+
- 🐌 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](https://github.com/streamlit/streamlit/pull/12247), [#12243](https://github.com/streamlit/streamlit/issues/12243)).
56+
- 🕸️ Bug fix: To fix a performance regression, dataframes use `.iat[]` instead of `.iloc[]` internally ([#12422](https://github.com/streamlit/streamlit/pull/12422), [#10952](https://github.com/streamlit/streamlit/issues/10952)).
57+
- 🦗 Bug fix: `st.data_editor` accepts Shift+Enter for multiline entry in a cell ([#12401](https://github.com/streamlit/streamlit/pull/12401), [#12386](https://github.com/streamlit/streamlit/issues/12386)).
58+
- 🦂 Bug fix: To make `st.pdf` more compatible on Windows, MIME types were updated ([#12399](https://github.com/streamlit/streamlit/pull/12399), [#12387](https://github.com/streamlit/streamlit/issues/12387)). Thanks, [geoextra](https://github.com/geoextra)!
59+
- 🦟 Bug fix: To prevent long-word overflow, words are forced to break if they exceed their container's width ([#12370](https://github.com/streamlit/streamlit/pull/12370), [#12366](https://github.com/streamlit/streamlit/issues/12366)).
60+
- 🦠 Bug fix: Hiding all dataframe columns won't raise a TypeError ([#12361](https://github.com/streamlit/streamlit/pull/12361), [#12227](https://github.com/streamlit/streamlit/issues/12227)).
61+
- 🪰 Bug fix: `st.logo` doesn't dislocate the sidebar collapse button ([#12329](https://github.com/streamlit/streamlit/pull/12329), [#12326](https://github.com/streamlit/streamlit/issues/12326)).
62+
- 🪳 Bug fix: When using `accept_new_options=True` with `st.multiselect`, mobile users can access their keyboards ([#12330](https://github.com/streamlit/streamlit/pull/12330)).
63+
- 🕷️ Bug fix: `st.components.v1.html` ignores fractional pixels in `width` ([#12354](https://github.com/streamlit/streamlit/pull/12354), [#12340](https://github.com/streamlit/streamlit/issues/12340)).
64+
- 🐞 Bug fix: `st.number_input` correctly accepts keyed entries ([#12351](https://github.com/streamlit/streamlit/pull/12351), [#12349](https://github.com/streamlit/streamlit/issues/12349)).
65+
- 🐝 Bug fix: Markdown images maintain their aspect ratio when constrained ([#12343](https://github.com/streamlit/streamlit/pull/12343)).
66+
- 🐜 Bug fix: `st.date_input` is inclusive of min and max values ([#12295](https://github.com/streamlit/streamlit/pull/12295), [#12293](https://github.com/streamlit/streamlit/issues/12293)).
67+
- 🪲 Bug fix: Maintain image proportions in fullscreen mode for all width settings ([#12235](https://github.com/streamlit/streamlit/pull/12235)).
68+
- 🐛 Bug fix: Markdown code blocks don't overflow when used in labels ([#12175](https://github.com/streamlit/streamlit/pull/12175), [#12149](https://github.com/streamlit/streamlit/issues/12149)).
69+
1270
## **Version 1.49.0**
1371

1472
_Release date: August 26, 2025_

0 commit comments

Comments
 (0)