Skip to content

Commit b29f3ea

Browse files
Release 1.54.0 (#1412)
* Release notes * What's new * Bump embedded app versions * Cheat sheet * Hide pages for removed commands * Update streamlit.json * Update generate.py to remove bokeh_chart shell * Remove accidental remnant of bokeh chart * Remove bokeh ref cards * Update key identity state * Update content/develop/quick-references/release-notes/_index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update content/develop/quick-references/release-notes/2026.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update widget identity guide * comma * Missing "and" --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 360eada commit b29f3ea

41 files changed

Lines changed: 13441 additions & 238 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

content/deploy/community-cloud/share-your-app/embed-your-app.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ The only noteworthy differences between the methods is that iframing allows you
8787

8888
When [Embedding with iframes](#embedding-with-iframes), Streamlit allows you to specify one or more instances of the `?embed_options` query parameter for granular control over the embedding behavior.
8989

90-
Both `?embed` and `?embed_options` are invisible to [`st.query_params`](/develop/api-reference/caching-and-state/st.query_params) and its precursors, [`st.experimental_get_query_params`](/develop/api-reference/caching-and-state/st.experimental_get_query_params) and [`st.experimental_set_query_params`](/develop/api-reference/caching-and-state/st.experimental_set_query_params). You can't get or set their values.
90+
Both `?embed` and `?embed_options` are invisible to [`st.query_params`](/develop/api-reference/caching-and-state/st.query_params). You can't get or set their values.
9191

9292
The supported values for `?embed_options` are listed below:
9393

content/develop/api-reference/_index.md

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -609,18 +609,6 @@ Display an interactive Plotly chart.
609609
st.plotly_chart(my_plotly_chart)
610610
```
611611

612-
</RefCard>
613-
<RefCard href="/develop/api-reference/charts/st.bokeh_chart">
614-
<Image pure alt="screenshot" src="/images/api/bokeh_chart.jpg" />
615-
616-
<h4>Bokeh</h4>
617-
618-
Display an interactive Bokeh chart.
619-
620-
```python
621-
st.bokeh_chart(my_bokeh_chart)
622-
```
623-
624612
</RefCard>
625613
<RefCard href="/develop/api-reference/charts/st.pydeck_chart">
626614
<Image pure alt="screenshot" src="/images/api/pydeck_chart.jpg" />

content/develop/api-reference/caching-and-state/_index.md

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -93,33 +93,3 @@ st.query_params.clear()
9393
</RefCard>
9494

9595
</TileContainer>
96-
97-
## Deprecated commands
98-
99-
<TileContainer>
100-
101-
<RefCard href="/develop/api-reference/caching-and-state/st.experimental_get_query_params" size="half" deprecated={true}>
102-
103-
<h4>Get query parameters</h4>
104-
105-
Get query parameters that are shown in the browser's URL bar.
106-
107-
```python
108-
param_dict = st.experimental_get_query_params()
109-
```
110-
111-
</RefCard>
112-
<RefCard href="/develop/api-reference/caching-and-state/st.experimental_set_query_params" size="half" deprecated={true}>
113-
114-
<h4>Set query parameters</h4>
115-
116-
Set query parameters that are shown in the browser's URL bar.
117-
118-
```python
119-
st.experimental_set_query_params(
120-
{"show_all"=True, "selected"=["asia", "america"]}
121-
)
122-
```
123-
124-
</RefCard>
125-
</TileContainer>

content/develop/api-reference/caching-and-state/experimental_get_query_params.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ description: st.experimental_get_query_params returns query parameters currently
55
keywords: experimental_get_query_params, query parameters, url, browser, deprecated, experimental, get
66
---
77

8-
<Autofunction function="streamlit.experimental_get_query_params" deprecated={true} deprecatedText="<code>st.experimental_get_query_params</code> was deprecated in version 1.30.0. Use <a href='/develop/api-reference/caching-and-state/st.query_params'><code>st.query_params</code></a> instead." />
8+
<Autofunction function="streamlit.experimental_get_query_params" deprecated={true} deprecatedText="<code>st.experimental_get_query_params</code> was deprecated in version 1.30.0 and removed in version 1.54.0. Use <a href='/develop/api-reference/caching-and-state/st.query_params'><code>st.query_params</code></a> instead." />

content/develop/api-reference/caching-and-state/experimental_set_query_params.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ description: st.experimental_set_query_params sets query parameters shown in the
55
keywords: experimental_set_query_params, query parameters, url, browser, deprecated, experimental, set
66
---
77

8-
<Autofunction function="streamlit.experimental_set_query_params" deprecated={true} deprecatedText="<code>st.experimental_set_query_params</code> was deprecated in version 1.30.0. Use <a href='/develop/api-reference/caching-and-state/st.query_params'><code>st.query_params</code></a> instead." />
8+
<Autofunction function="streamlit.experimental_set_query_params" deprecated={true} deprecatedText="<code>st.experimental_set_query_params</code> was deprecated in version 1.30.0 and removed in version 1.54.0. Use <a href='/develop/api-reference/caching-and-state/st.query_params'><code>st.query_params</code></a> instead." />

content/develop/api-reference/charts/_index.md

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -131,18 +131,6 @@ Display an interactive Plotly chart.
131131
st.plotly_chart(my_plotly_chart)
132132
```
133133

134-
</RefCard>
135-
<RefCard href="/develop/api-reference/charts/st.bokeh_chart">
136-
<Image pure alt="screenshot" src="/images/api/bokeh_chart.jpg" />
137-
138-
<h4>Bokeh</h4>
139-
140-
Display an interactive Bokeh chart.
141-
142-
```python
143-
st.bokeh_chart(my_bokeh_chart)
144-
```
145-
146134
</RefCard>
147135
<RefCard href="/develop/api-reference/charts/st.pydeck_chart">
148136
<Image pure alt="screenshot" src="/images/api/pydeck_chart.jpg" />

content/develop/concepts/architecture/widget-behavior.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,15 @@ The last three points (widget identity and widget deletion) are the most relevan
2828

2929
**Recent changes to widget behavior**
3030

31-
From v1.46.0 through v1.52.0, significant changes to widget statefulness were introduced:
31+
From v1.46.0 through v1.54.0, significant changes to widget statefulness were introduced:
3232

3333
- **v1.46.0**: When navigating between pages, widget keys in `st.session_state` are deleted at the beginning of the new page's script run instead of the end.
34-
- **v1.50.0-1.52.0**: When a key is provided, the widget identity is determined by the key and select parameters (min/max and options). This is a transitional period during implementation until widgets are fully converted to key-only identity.
35-
- **v1.53.0**: `st.selectbox`, `st.multiselect`, and `st.number_input` are fully converted to key-based identity, but other widgets still use `options` and `min/max` parameters to determine widget identity.
34+
- **v1.50.0-1.52.0**: When a key is provided, the widget identity is determined by the key and parameters that can invalidate the widget's state: `min`/`max`, `options`, `format`, `step`, `selection_mode`, and `accept_new_options`. This is a transitional period during implementation until widgets are fully converted to key-only identity. Only `st.dataframe` and elements with selection modes, like charts, are not yet converted to key-based identity.
35+
- **v1.53.0**: `st.number_input` is fully converted to key-based identity. In addition to their keys, `st.selectbox` only depends on `accept_new_options`, and `st.multiselect` only depends on `accept_new_options` and `max_selections`.
36+
- **v1.54.0**: `st.select_slider` and `st.radio` are fully converted to key-based identity. `st.date_input` and `st.datetime_input` aren't dependent on `min`/`max` but are still dependent on `format` and `step`. `st.dataframe` and elements with selection modes, like charts, use key-based identity, but are still dependent on `selection_mode`.
3637

3738
These changes affect how widgets maintain state across page navigation and parameter changes. To review which widgets have been converted to key-based identity, see the release notes for [v1.50.0](https://docs.streamlit.io/release-notes/v1.50.0), [v1.51.0](https://docs.streamlit.io/release-notes/v1.51.0), and [v1.52.0](https://docs.streamlit.io/release-notes/v1.52.0).
3839

39-
As of v1.52.0, the following widgets **haven't** been converted to key-based identity: `st.data_editor` and elements with selection modes, like `st.dataframe` and charts.
40-
4140
</Important>
4241

4342
## Anatomy of a widget

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.53.0](https://pypi.org/project/streamlit/1.53.0/).
10+
This is a summary of the docs for the latest version of Streamlit, [v1.54.0](https://pypi.org/project/streamlit/1.54.0/).
1111

1212
<Masonry>
1313

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

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

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

12+
## **Version 1.54.0**
13+
14+
_Release date: February 4, 2026_
15+
16+
**Notable Changes**
17+
18+
- 🎨 The `color` parameter of [`st.area_chart`](/develop/api-reference/charts/st.area_chart), [`st.bar_chart`](/develop/api-reference/charts/st.bar_chart), [`st.line_chart`](/develop/api-reference/charts/st.line_chart), and [`st.scatter_chart`](/develop/api-reference/charts/st.scatter_chart) supports the basic color palette which can be configured with theming ([#13739](https://github.com/streamlit/streamlit/pull/13739), [#12694](https://github.com/streamlit/streamlit/issues/12694)).
19+
- ☯️ You can use the new [`theme.chartDivergingColors`](/develop/api-reference/configuration/config.toml#theme) to set default diverging colors for Plotly, Altair, and Vega-Lite charts.
20+
- 🔗 You can configure the display of error help links with a new configuration option, [`client.showErrorLinks`](/develop/api-reference/configuration/config.toml#client) ([#13472](https://github.com/streamlit/streamlit/pull/13472), [#11238](https://github.com/streamlit/streamlit/issues/11238)). Thanks, [karubian](https://github.com/karubian)!
21+
- 😃 [`st.logo`](/develop/api-reference/media/st.logo) supports Material icons and emojis ([#13416](https://github.com/streamlit/streamlit/pull/13416)). Thanks, [rahuld109](https://github.com/rahuld109)!
22+
- 🥷 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:
23+
- `st.dataframe` (with selections)
24+
- `st.area_chart`
25+
- `st.bar_chart`
26+
- `st.line_chart`
27+
- `st.scatter_chart`
28+
- `st.altair_chart`
29+
- `st.vegalite_chart`
30+
- `st.pydeck_chart`
31+
- `st.date_input`
32+
- `st.datetime_input`
33+
- `st.radio`
34+
- `st.select_slider`
35+
- 👆 [`ListColumn`](/develop/api-reference/data/st.column_config/st.column_config.listcolumn) and [`MultiselectColumn`](/develop/api-reference/data/st.column_config/st.column_config.multiselectcolumn) let users select the text of their pills for copying ([#13663](https://github.com/streamlit/streamlit/pull/13663)).
36+
- 👻 `st.experimental_get_query_params` and `st.experimental_set_query_params` have been removed. Use [`st.query_params`](/develop/api-reference/caching-and-state/st.query_params) instead.
37+
- ☠️ `st.experimental_user` has been removed. Use [`st.user`](/develop/api-reference/user/st.user) instead.
38+
39+
**Other Changes**
40+
41+
- 👽 The warning about the proposed removal of `.add_rows()` shows in the browser. Please leave feedback ([#13063](https://github.com/streamlit/streamlit/issues/13063)).
42+
- 🦎 When a `.streamlit/config.toml` file is created after a Streamlit app is running, the file watcher will recognize it without restarting the Streamlit server ([#13625](https://github.com/streamlit/streamlit/pull/13625), [#11296](https://github.com/streamlit/streamlit/issues/11296)).
43+
- 🔐 Bug fix: Path security validation improves protection against Server-Side Request Forgery (SSRF) and path traversal vulnerabilities ([#13733](https://github.com/streamlit/streamlit/pull/13733)).
44+
- 🕸️ Bug fix: Wildcard URLs display as `localhost` in the browser URL and console output ([#13720](https://github.com/streamlit/streamlit/pull/13720), [#13712](https://github.com/streamlit/streamlit/issues/13712)).
45+
- 🦗 Bug fix: Modals and drop-down menus don't collapse the sidebar ([#13653](https://github.com/streamlit/streamlit/pull/13653)).
46+
- 🦂 Bug fix: `st.bar_chart` doesn't raise a `KeyError` when sorting melted data ([#13695](https://github.com/streamlit/streamlit/pull/13695)).
47+
- 🦟 Bug fix: `st.multiselect` and `st.selectbox` don't clear state when a custom class object is selected ([#13648](https://github.com/streamlit/streamlit/pull/13648), [#13646](https://github.com/streamlit/streamlit/issues/13646)).
48+
- 🦠 Bug fix: Transient nodes used for spinners will correctly anchor themselves in the Streamlit DOM to avoid an empty delta path ([#13674](https://github.com/streamlit/streamlit/pull/13674)).
49+
- 🪰 Bug fix: Snowflake connections will re-initialize if closed ([#13665](https://github.com/streamlit/streamlit/pull/13665)).
50+
- 🪳 Bug fix: Nested containers under a spinner don't raise a `Bad delta path index` error ([#13659](https://github.com/streamlit/streamlit/pull/13659), [#13658](https://github.com/streamlit/streamlit/issues/13658)).
51+
- 🕷️ Bug fix: `SnowflakeConnection.query()` correctly passes the `params` argument to caching ([#13652](https://github.com/streamlit/streamlit/pull/13652), [#13644](https://github.com/streamlit/streamlit/issues/13644)).
52+
- 🐞 Bug fix: `client.toolbarMode="viewer"` correctly hides developer options from the settings menu ([#13623](https://github.com/streamlit/streamlit/pull/13623)).
53+
- 🐝 Bug fix: When using the experimental Starlette configuration, Streamlit auth can log users out of your identity provider and surface user tokens, consistent with recent updates ([#13571](https://github.com/streamlit/streamlit/pull/13571)).
54+
- 🐜 Bug fix: Streamlit will defensively not load packaged components with missing or invalid component names in their manifests ([#13612](https://github.com/streamlit/streamlit/pull/13612)).
55+
- 🪲 Bug fix: The width of file chips in `st.chat_input` was increased to reduce filename truncation ([#13589](https://github.com/streamlit/streamlit/pull/13589)).
56+
- 🐛 Bug fix: `st.bar_chart` doesn't raise an error about y-axis minimum and maximum when the bars have all the same value ([#13590](https://github.com/streamlit/streamlit/pull/13590), [#13584](https://github.com/streamlit/streamlit/issues/13584)).
57+
1258
## **Version 1.53.0**
1359

1460
_Release date: January 14, 2026_

0 commit comments

Comments
 (0)