Change8

1.51.0

Breaking Changes
📦 streamlitView on GitHub →
1 breaking35 features🐛 12 fixes🔧 26 symbols

Summary

Streamlit 1.51.0 adds extensive layout, theming, and widget identity enhancements along with many bug fixes, while removing Python 3.9 support.

⚠️ Breaking Changes

  • Python 3.9 support has been removed; users must upgrade to Python >=3.10.

Migration Steps

  1. Review any custom theme configurations and migrate to the new theme.base structure if needed.
  2. If you relied on Python 3.9‑specific behavior, test your app under Python >=3.10.
  3. No code changes are required for the new widget key identity, but you may want to start using the key parameter for consistent widget identity.

✨ New Features

  • Add width to st.plotly_chart.
  • Automatically hide row indices in st.dataframe when row selection is active.
  • Add width to st.vega_lite_chart.
  • Add codeTextColor config and update linkColor.
  • Add height to st.vega_lite_chart.
  • Add width to st.pydeck_chart.
  • Use key as main identity for st.color_picker widget.
  • Add type argument to st.popover to match st.button.
  • Add width to st.altair_chart.
  • Add cursor kwarg to st.write_stream.
  • Preload slow Python modules in streamlit hello command.
  • Reusable custom themes via theme.base config.
  • Make streamlit run with no args default to streamlit_app.py.
  • Allow st.feedback to have a default initial value.
  • Add height to st.altair_chart.
  • Modernize height parameter for st.pydeck_chart.
  • Update width and height handling for st.map.
  • Modernize width/height parameters for st.scatter_chart.
  • Modernize width and height for st.area_chart and st.bar_chart.
  • Custom Dark Theme – add light/dark section configurations for theme and theme.sidebar.
  • Use key as main identity for st.segmented_control widget.
  • Use key as main identity for st.radio widget.
  • Use key as main identity for st.audio_input widget.
  • Add pinned parameter to MultiselectColumn.
  • Use key as main identity for st.slider and st.select_slider widgets.
  • Custom Dark Theme – support light/dark config inheritance and populate new session message.
  • Use key as main identity for st.chat_input widget.
  • Add support for auto color to MultiselectColumn using chart colors.
  • Allow configuring color for ProgressColumn.
  • Use key as main identity for st.feedback and st.pills widgets.
  • Add stretch height option to st.dataframe.
  • Custom Dark Theme – theme and sidebar theme creation.
  • Custom Dark Theme – main and settings menu updates.
  • Add API for st.space.
  • Add st.components.v2.components namespace and classes.

🐛 Bug Fixes

  • Slider thumbs no longer overshoot the track.
  • Fix vega chart unrecognized dataset error.
  • Add AbortController for async upload operations.
  • Fix PlotlyChart flickering by adding overflow hidden.
  • Pills now show selected values when disabled.
  • Make Python Altair code thread‑safe.
  • Fix file watcher issue with common path check.
  • Correct showErrorDetails config parsing for deprecation warnings.
  • Explicitly show error message for 500 errors.
  • Make fuzzy search case‑insensitive.
  • Fix DataFrame content width horizontal alignment.
  • Fix pyplot/image width regression in fragments and containers.

🔧 Affected Symbols

st.plotly_chartst.dataframest.vega_lite_chartst.pydeck_chartst.color_pickerst.popoverst.altair_chartst.write_streamstreamlit.hellotheme.basest.feedbackst.pillsst.segmented_controlst.radiost.audio_inputMultiselectColumnst.sliderst.select_sliderst.chat_inputProgressColumnst.spacest.components.v2.componentsst.mapst.scatter_chartst.area_chartst.bar_chart