1.50.0
Breaking Changes📦 streamlitView on GitHub →
⚠ 5 breaking✨ 18 features🐛 16 fixes⚡ 1 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
- Replace any `**kwargs` passed to `st.plotly_chart` with a `config` dictionary.
- 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.
- Remove all `**kwargs` arguments from calls to `st.write`.
- 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.