Skip to content

Commit a261529

Browse files
sfc-gh-jriekejriekecursoragent
authored
Add Streamlit 1.59.0 release notes and API docs (#1496)
* Add 1.59.0 release notes Add Version 1.59.0 (July 6, 2026) to the release notes index as the latest release and to the 2026 archive page. Co-authored-by: Cursor <cursoragent@cursor.com> * Generate 1.59.2 docstrings in streamlit.json Run generate.py with Streamlit 1.59.2 to add the 1.59 API docstrings. Also removes the deleted SnowparkConnection entry from generate.py. Co-authored-by: Cursor <cursoragent@cursor.com> * Fix: use 1.59.0 version key in streamlit.json Co-authored-by: Cursor <cursoragent@cursor.com> * Add API tiles for st.skeleton and ButtonColumn (1.59) Add new detail pages, index tiles, and menu entries for st.skeleton (status elements) and st.column_config.ButtonColumn (column config). Co-authored-by: Cursor <cursoragent@cursor.com> * Add screenshots for st.skeleton and ButtonColumn tiles Co-authored-by: Cursor <cursoragent@cursor.com> * Add API tile and page for MarkdownColumn (1.59) Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Johannes Rieke <johannes.rieke@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 40a461b commit a261529

14 files changed

Lines changed: 15262 additions & 33 deletions

File tree

content/develop/api-reference/_index.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1837,6 +1837,20 @@ with st.status('Running'):
18371837
do_something_slow()
18381838
```
18391839

1840+
</RefCard>
1841+
<RefCard href="/develop/api-reference/status/st.skeleton">
1842+
1843+
<Image pure alt="screenshot" src="/images/api/skeleton.jpg" />
1844+
1845+
<h4>Skeleton</h4>
1846+
1847+
Display a skeleton placeholder while loading.
1848+
1849+
```python
1850+
with st.skeleton(height=200):
1851+
do_something_slow()
1852+
```
1853+
18401854
</RefCard>
18411855
<RefCard href="/develop/api-reference/status/st.toast">
18421856

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,19 @@ TextColumn("Widgets", max_chars=50, validate="^st\.[a-z_]+$")
3737

3838
</RefCard>
3939

40+
<RefCard href="/develop/api-reference/data/st.column_config/st.column_config.markdowncolumn">
41+
<Image pure alt="screenshot" src="/images/api/column_config.markdowncolumn.jpg" />
42+
43+
<h4>Markdown column</h4>
44+
45+
Configure a Markdown column.
46+
47+
```python
48+
MarkdownColumn("Description", help="Supports **Markdown** text")
49+
```
50+
51+
</RefCard>
52+
4053
<RefCard href="/develop/api-reference/data/st.column_config/st.column_config.numbercolumn">
4154
<Image pure alt="screenshot" src="/images/api/column_config.numbercolumn.jpg" />
4255

@@ -63,6 +76,19 @@ CheckboxColumn("Your favorite?", help="Select your **favorite** widgets")
6376

6477
</RefCard>
6578

79+
<RefCard href="/develop/api-reference/data/st.column_config/st.column_config.buttoncolumn">
80+
<Image pure alt="screenshot" src="/images/api/column_config.buttoncolumn.jpg" />
81+
82+
<h4>Button column</h4>
83+
84+
Configure a column of clickable buttons.
85+
86+
```python
87+
ButtonColumn("Actions")
88+
```
89+
90+
</RefCard>
91+
6692
<RefCard href="/develop/api-reference/data/st.column_config/st.column_config.selectboxcolumn">
6793
<Image pure alt="screenshot" src="/images/api/column_config.selectboxcolumn.jpg" />
6894

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
title: st.column_config.ButtonColumn
3+
slug: /develop/api-reference/data/st.column_config/st.column_config.buttoncolumn
4+
description: st.column_config.ButtonColumn configures a column of clickable buttons in dataframes and data editors, letting users trigger actions directly from table rows.
5+
keywords: st.column_config.ButtonColumn, button column, clickable buttons, dataframe buttons, interactive column, row actions, table buttons
6+
---
7+
8+
<Autofunction function="streamlit.column_config.ButtonColumn" />
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
title: st.column_config.MarkdownColumn
3+
slug: /develop/api-reference/data/st.column_config/st.column_config.markdowncolumn
4+
description: st.column_config.MarkdownColumn configures a column that renders Markdown text inside dataframe and data editor cells.
5+
keywords: st.column_config.MarkdownColumn, markdown column, rendered markdown, dataframe markdown, rich text column, formatted text column
6+
---
7+
8+
<Autofunction function="streamlit.column_config.MarkdownColumn" />

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,20 @@ with st.status('Running'):
5656
do_something_slow()
5757
```
5858

59+
</RefCard>
60+
<RefCard href="/develop/api-reference/status/st.skeleton">
61+
62+
<Image pure alt="screenshot" src="/images/api/skeleton.jpg" />
63+
64+
<h4>Skeleton</h4>
65+
66+
Display a skeleton placeholder while loading.
67+
68+
```python
69+
with st.skeleton(height=200):
70+
do_something_slow()
71+
```
72+
5973
</RefCard>
6074
<RefCard href="/develop/api-reference/status/st.toast">
6175

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
title: st.skeleton
3+
slug: /develop/api-reference/status/st.skeleton
4+
description: st.skeleton displays an animated loading placeholder, giving users visual feedback while content is loading.
5+
keywords: st.skeleton, skeleton, loading placeholder, loading animation, skeleton loader, loading state, placeholder
6+
---
7+
8+
<Autofunction function="streamlit.skeleton" />

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

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,63 @@ 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.59.0**
13+
14+
_Release date: July 6, 2026_
15+
16+
**Highlights**
17+
18+
- ✨ Introducing [`ButtonColumn`](/develop/api-reference/data/st.column_config/st.column_config.buttoncolumn) — a new column type for [`st.dataframe`](/develop/api-reference/data/st.dataframe) and [`st.data_editor`](/develop/api-reference/data/st.data_editor) that renders clickable buttons inside table cells, letting users trigger actions directly from a row ([#14544](https://github.com/streamlit/streamlit/pull/14544), [#7015](https://github.com/streamlit/streamlit/issues/7015)).
19+
- 📊 [`st.dataframe`](/develop/api-reference/data/st.dataframe) has a new column statistics submenu — right-click any column header to see per-column summary stats ([#14307](https://github.com/streamlit/streamlit/pull/14307), [#13148](https://github.com/streamlit/streamlit/issues/13148)).
20+
- 🍿 Introducing [`st.skeleton`](/develop/api-reference/status/st.skeleton) — a new element that renders animated loading placeholders, making it easy to give users visual feedback while content is loading ([#15169](https://github.com/streamlit/streamlit/pull/15169), [#8032](https://github.com/streamlit/streamlit/issues/8032)).
21+
- 🎛 [`st.chat_input`](/develop/api-reference/chat/st.chat_input) has a new `submit_mode` parameter that lets you control when messages are submitted — either on Enter (default) or only when the user explicitly clicks the send button ([#14344](https://github.com/streamlit/streamlit/pull/14344), [#8323](https://github.com/streamlit/streamlit/issues/8323), [#11854](https://github.com/streamlit/streamlit/issues/11854)).
22+
23+
**Notable Changes**
24+
25+
- 📋 [`st.dataframe`](/develop/api-reference/data/st.dataframe) and [`st.data_editor`](/develop/api-reference/data/st.data_editor) support a new [`MarkdownColumn`](/develop/api-reference/data/st.column_config/st.column_config.markdowncolumn) type in `st.column_config` that renders Markdown text inside table cells ([#13931](https://github.com/streamlit/streamlit/pull/13931), [#10211](https://github.com/streamlit/streamlit/issues/10211)).
26+
- 🎨 [`st.markdown`](/develop/api-reference/text/st.markdown) now renders Mermaid diagrams, letting you embed flowcharts, sequence diagrams, and more directly in your app ([#14022](https://github.com/streamlit/streamlit/pull/14022), [#10721](https://github.com/streamlit/streamlit/issues/10721)).
27+
- 🔗 [`st.markdown`](/develop/api-reference/text/st.markdown) has a new `anchors` parameter for adding linkable heading anchors to Markdown content ([#15722](https://github.com/streamlit/streamlit/pull/15722), [#13913](https://github.com/streamlit/streamlit/issues/13913)).
28+
- 💻 You can now launch Streamlit apps directly with `python app.py` or `uv run app.py` using the new `App.run()` entry point — no more `streamlit run` required ([#15563](https://github.com/streamlit/streamlit/pull/15563), [#9450](https://github.com/streamlit/streamlit/issues/9450), [#11420](https://github.com/streamlit/streamlit/issues/11420)).
29+
- 🧩 [`st.fragment`](/develop/api-reference/execution-flow/st.fragment) can now write to containers defined outside the fragment. Fragments can update any part of your app — including elements created before the fragment — without triggering a full rerun ([#15623](https://github.com/streamlit/streamlit/pull/15623), [#15620](https://github.com/streamlit/streamlit/pull/15620), [#10481](https://github.com/streamlit/streamlit/issues/10481)).
30+
- 📎 [`st.chat_input`](/develop/api-reference/chat/st.chat_input) now supports pasting files directly into the input field ([#15558](https://github.com/streamlit/streamlit/pull/15558), [#10307](https://github.com/streamlit/streamlit/issues/10307)).
31+
- 🤖 [`st.write_stream`](/develop/api-reference/write-magic/st.write_stream) now supports OpenAI Responses API streams in addition to the existing Chat Completions streams ([#15559](https://github.com/streamlit/streamlit/pull/15559), [#11061](https://github.com/streamlit/streamlit/issues/11061)).
32+
- 🔒 [`st.set_page_config`](/develop/api-reference/configuration/st.set_page_config) supports a new `"locked"` option for `initial_sidebar_state` that prevents users from toggling the sidebar open or closed ([#15459](https://github.com/streamlit/streamlit/pull/15459), [#15411](https://github.com/streamlit/streamlit/issues/15411)).
33+
- 💅 Widgets have a new `persist_state` parameter for finer control over how widget state is preserved across reruns ([#15645](https://github.com/streamlit/streamlit/pull/15645)).
34+
- 📷 [`st.camera_input`](/develop/api-reference/widgets/st.camera_input) has a new `resolution` parameter to control the captured image resolution ([#15766](https://github.com/streamlit/streamlit/pull/15766), [#4320](https://github.com/streamlit/streamlit/issues/4320)).
35+
- 🧪 [`AppTest`](/develop/api-reference/app-testing/st.testing.v1.apptest) now supports testing `st.download_button` and `st.image` ([#15528](https://github.com/streamlit/streamlit/pull/15528), [#9003](https://github.com/streamlit/streamlit/issues/9003)).
36+
- 💾 Programmatic secrets now support list values ([#15491](https://github.com/streamlit/streamlit/pull/15491)).
37+
- ⌨ You can now look up Streamlit API documentation from the CLI with `streamlit docs <command>` ([#15547](https://github.com/streamlit/streamlit/pull/15547)).
38+
- 🔐 A new `server.xsrfCookieSameSite` config option lets you customize the `SameSite` attribute of the XSRF cookie for deployments with specific cross-site requirements ([#15634](https://github.com/streamlit/streamlit/pull/15634), [#5793](https://github.com/streamlit/streamlit/issues/5793), [#9397](https://github.com/streamlit/streamlit/issues/9397)).
39+
- 💡 Streamlit now recommends installing AI coding skills on app startup to improve your development workflow with AI coding assistants ([#15437](https://github.com/streamlit/streamlit/pull/15437), [#15473](https://github.com/streamlit/streamlit/pull/15473)).
40+
- ⚙ The `/_stcore/metrics` endpoint now reports memory stats in a less detailed (cheaper) form by default. If your monitoring stack relies on the previous granular memory fields, set `server.enableStaticServing` to `true` to restore them ([#15472](https://github.com/streamlit/streamlit/pull/15472)).
41+
- 👻 The deprecated Snowpark connection type has been removed. Migrate to a supported connection type ([#15784](https://github.com/streamlit/streamlit/pull/15784)).
42+
- 👻 The deprecated [`st.bokeh_chart`](/develop/api-reference/charts/st.bokeh_chart) command has been removed. Use `st.components.v1.html` to embed Bokeh visualizations instead ([#15636](https://github.com/streamlit/streamlit/pull/15636)).
43+
44+
**Other Changes**
45+
46+
- ⚡ VegaLite charts now use Vega's native resize API for faster rendering when the container size changes ([#15302](https://github.com/streamlit/streamlit/pull/15302)).
47+
- 🎨 The pagination widget's selected-state styling has been redesigned ([#15550](https://github.com/streamlit/streamlit/pull/15550)).
48+
- 🔧 Various fixes related to the Baseweb library removal ([#15737](https://github.com/streamlit/streamlit/pull/15737)).
49+
- 🐛 Bug fix: The metrics endpoint no longer errors when SQLAlchemy connections are present ([#15334](https://github.com/streamlit/streamlit/pull/15334)).
50+
- 🦋 Bug fix: `@st.fragment(run_every=...)` no longer raises a `TypeError` in `_run_with_thread_state` ([#15376](https://github.com/streamlit/streamlit/pull/15376)).
51+
- 🪲 Bug fix: Named Snowflake connections defined in config files are now correctly discovered and used ([#15382](https://github.com/streamlit/streamlit/pull/15382)).
52+
- 🐜 Bug fix: P-mode PIL palette images are now hashed correctly to prevent hash collisions ([#15397](https://github.com/streamlit/streamlit/pull/15397)).
53+
- 🐝 Bug fix: The server now correctly binds to IPv6 dual-stack wildcards for the default address ([#15400](https://github.com/streamlit/streamlit/pull/15400)).
54+
- 🐞 Bug fix: Stale and invalid auth cookies are now cleared on login ([#15420](https://github.com/streamlit/streamlit/pull/15420)).
55+
- 🕷️ Bug fix: `widgetMgr` is synced correctly to fix lazy loading in `tab.open` ([#15460](https://github.com/streamlit/streamlit/pull/15460)).
56+
- 🪳 Bug fix: Installed Custom Component v2 components are now correctly discovered in `AppTest` ([#15488](https://github.com/streamlit/streamlit/pull/15488)).
57+
- 🪰 Bug fix: [`st.pills`](/develop/api-reference/widgets/st.pills) and [`st.segmented_control`](/develop/api-reference/widgets/st.segmented_control) callbacks now fire correctly after selection ([#15522](https://github.com/streamlit/streamlit/pull/15522)).
58+
- 🦠 Bug fix: The page title is no longer reset to the default on rerun ([#15527](https://github.com/streamlit/streamlit/pull/15527)).
59+
- 🦟 Bug fix: The "Missing Submit Button" warning no longer flashes briefly on app load ([#15561](https://github.com/streamlit/streamlit/pull/15561)).
60+
- 🦂 Bug fix: Streamlit now defaults to the polling file watcher in WSL environments, avoiding inotify issues ([#15562](https://github.com/streamlit/streamlit/pull/15562)).
61+
- 🦗 Bug fix: `AppTest` now correctly handles formatted labels in `format_func` widgets ([#15564](https://github.com/streamlit/streamlit/pull/15564)).
62+
- 🕸️ Bug fix: The invalid session upload error message now explains multi-replica deployment as a possible cause ([#15635](https://github.com/streamlit/streamlit/pull/15635)).
63+
- 🐌 Bug fix: [`st.selectbox`](/develop/api-reference/widgets/st.selectbox) no longer loses its selection when `format_func` depends on object identity ([#15639](https://github.com/streamlit/streamlit/pull/15639)).
64+
- 🦎 Bug fix: Pressing Escape no longer clears the current selection in [`st.multiselect`](/develop/api-reference/widgets/st.multiselect) ([#15646](https://github.com/streamlit/streamlit/pull/15646)).
65+
- 🦀 Bug fix: `StreamlitPage` now validates that its `source` matches the registered page, catching misconfiguration earlier ([#15721](https://github.com/streamlit/streamlit/pull/15721), [#10572](https://github.com/streamlit/streamlit/issues/10572)).
66+
- 👽 Bug fix: [`st.dataframe`](/develop/api-reference/data/st.dataframe) no longer intercepts the Ctrl+F keyboard shortcut when the search bar is disabled ([#15764](https://github.com/streamlit/streamlit/pull/15764)).
67+
- 🐛 Bug fix: Column headers in [`st.dataframe`](/develop/api-reference/data/st.dataframe) no longer wrap text in the column header menu ([#15772](https://github.com/streamlit/streamlit/pull/15772)).
68+
1269
## **Version 1.58.0**
1370

1471
_Release date: May 28, 2026_

0 commit comments

Comments
 (0)