Hello there πŸ‘‹

Thanks for stopping by! We use cookies to help us understand how you interact with our website.

By clicking β€œAccept all”, you consent to our use of cookies. For more information, please see our privacy policy.

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.