Change8

1.50.0

Breaking Changes
📦 streamlitView on GitHub →
5 breaking18 features🐛 16 fixes1 deprecations🔧 22 symbols

Summary

Streamlit 1.50.0 introduces widget identity changes using `key`, deprecates `**kwargs` in several APIs, adds extensive theming and layout enhancements, and includes numerous bug fixes and performance improvements.

⚠️ Breaking Changes

  • Removed support for arbitrary keyword arguments in `st.plotly_chart`; use the new `config` dictionary instead (e.g., `st.plotly_chart(fig, config={...})`).
  • Widget identity now relies on the `key` parameter for `st.checkbox` and `st.toggle`; ensure you provide a stable `key` to avoid unexpected state changes.
  • The `st.write` function no longer accepts `**kwargs`; remove any extra keyword arguments and rely on default behavior.
  • Widget identity for `st.number_input` now uses the `key` parameter; add a consistent `key` to maintain state.
  • Widget identity for `st.text_area` and `st.text_input` now uses the `key` parameter; provide a `key` to preserve input values.

Migration Steps

  1. Replace any `**kwargs` passed to `st.plotly_chart` with a `config` dictionary.
  2. Add a stable `key` argument to `st.checkbox`, `st.toggle`, `st.number_input`, `st.text_area`, `st.text_input`, `st.time_input`, `st.date_input`, `st.selectbox`, `st.multiselect`, and button widgets.
  3. Remove all `**kwargs` arguments from calls to `st.write`.
  4. Test widgets after adding `key` to ensure state persists as expected.

✨ New Features

  • Added `MultiselectColumn` option for `st.dataframe` and `st.data_editor`.
  • Enabled direct source specification in theming font configurations.
  • Introduced `default` parameter for `st.tabs`.
  • Added `border` parameter to `st.table`.
  • Implemented hover, active, and focus-visible states for `CopyButton`.
  • Added `width` parameter to `st.line_chart` for advanced layouts.
  • Expanded main theme color configuration options.
  • Widget identity for button widgets now uses `key` parameter.
  • Added `sort` parameter to `st.bar_chart`.
  • Added theme background color configuration options.
  • Added theme text color configuration options.
  • Widget identity for `st.time_input` and `st.date_input` now uses `key`.
  • Added `sample_rate` parameter to `st.audio_input` component.
  • Metric widget now supports numeric types such as decimals.
  • Slider tick labels are shown on hover.
  • Added `height` parameter to `st.graphviz_chart`.
  • Widget identity for `st.selectbox` and `st.multiselect` now uses `key`.
  • Added ability to configure chart column colors.

🐛 Bug Fixes

  • Fixed code rendering inside markdown labels.
  • Corrected fullscreen behavior for `st.image` when `use_container_width=True` or `width=\"stretch\"`.
  • Normalized selected dates in `DateInput` to start-of-day to respect `max` constraint.
  • Ensured markdown images preserve aspect ratio.
  • Resolved issue with typing formatted values into `st.number_input`.
  • Fixed HTML component handling when height is a float.
  • Unified code between Selectbox and Multiselect to align behavior.
  • Fixed logo overlapping collapse button.
  • Prevented long words from overflowing markdown container.
  • Added MIME type handling for `.mjs` files.
  • Addressed Pandas Styler performance regression.
  • Allowed empty section pages in top navigation similar to sidebar navigation.
  • Corrected horizontal alignment of `st.image` in vertical containers.
  • Fixed handling of zero height/width on `components.html` and `components.iframe`.
  • Fixed DuckDB integration test failure.
  • Reverted recent number input component refactoring due to regression.

🔧 Affected Symbols

st.plotly_chartst.checkboxst.togglest.writest.number_inputst.text_areast.text_inputst.time_inputst.date_inputst.selectboxst.multiselectst.buttonst.tabsst.tablest.line_chartst.bar_chartst.audio_inputst.graphviz_chartCopyButtonMetricst.dataframest.data_editor

⚡ Deprecations

  • Deprecated use of arbitrary `**kwargs` in `st.plotly_chart`; replace with a `config` dict.