Release notes

This page lists highlights, bug fixes, and known issues for the latest release of Streamlit. If you're looking for information about nightly releases or experimental features, see Pre-release features.

star

Tip

To upgrade to the latest version of Streamlit, run:

pip install --upgrade streamlit

Release date: October 29, 2025

Highlights

  • 🧩 Announcing custom components, version 2! Easily create frameless custom UI with bidirectional data flow.
  • πŸŒ— Introducing custom light and dark theme configuration! You can simultaneously define custom light and dark themes in your app.
  • 🎨 Announcing reusable themes! You can define a theme in a sharable file and use it as a base in other themes.
  • πŸ’« Introducing st.space for adding vertical and horizontal spaces in your app.

Notable Changes

  • πŸ”— New configuration options, theme.codeTextColor and theme.linkColor, let you configure the color of code and link text.
  • πŸ“Š ProgressColumn has a new color parameter.
  • 🌈 You can set color="auto" in MultiselectColumn to inherit colors from theme.chartCategoricalColors.
  • πŸ“Œ MultiselectColumn has a pinned parameter to match other column types.
  • ⭐ You can set a default value for st.feedback (#12578, #9469). Thanks, andreasntr!
  • πŸ‘† st.write_stream has a cursor parameter to set a custom cursor for the typewriter effect.
  • 🍿 st.popover has a type parameter to match st.button styling options.
  • πŸ”‘ 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:
    • st.color_picker
    • st.segmented_control
    • st.radio
    • st.audio_input
    • st.slider
    • st.select_slider
    • st.chat_input
    • st.feedback
    • st.pills
  • ↕️ st.dataframe, st.data_editor, st.altair_chart, st.pydeck_chart, and all simple charts have height parameters to use with flex containers.
  • ↔️ st.plotly_chart, st.vega_lite_chart, st.altair_chart, st.pydeck_chart, and all simple charts have width parameters to use with flex containers.
  • 🐍 Due to end of life, Python 3.9 is no longer supported.

Other Changes

  • ⚑ If you don't pass a file to streamlit run, it will try streamlit_app.py by default (#12599).
  • πŸ₯· st.dataframe hides its index column by default when row selections are enabled (#12448, #12237). Thanks, plumol!
  • πŸ‘©β€πŸŽ¨ For compatibility with new theming options, the app settings menu no longer supports theme editing (#12648).
  • πŸ‘‹ The Streamlit hello app preloads its Python packages on its home page for a faster user experience (#12617).
  • πŸ‘ Slider thumbs don't extend beyond the edge of their track (#12549, #4284).
  • ℹ️ Material icons and emojis were updated (#12669).
  • 🦠 Bug fix: Pyplot charts render correctly in fragments, containers, and expanders (#12807, #12678, #12763).
  • πŸͺ° Bug fix: Dataframes correctly resize and align when using width="content" (#12682).
  • πŸͺ³ Bug fix: Fuzzy search in select boxes is case insensitive (#12849, #11724).
  • πŸ•·οΈ Bug fix: 500 errors display correctly (#12845).
  • 🐞 Bug fix: Deprecation warnings respect client.showErrorDetails (#12794, #12743).
  • 🐝 Bug fix: Path handling in the file watcher was improved to prevent a ValueError in Windows environments (#12741, #12731).
  • 🐜 Bug fix: st.pills shows its value when disabled (#12555, #12388). Thanks, davidsjoberg1!
  • πŸͺ² Bug fix: Plotly charts hide overflow to prevent flickering behavior from scrollbars (#12594).
  • πŸ› Bug fix: Streamlit's handling of Altair charts was improved for thread safety and prevention of an "Unrecognized data set" race condition (#12673, #11911, #11342, #11906).
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.