Version 1.51.0

Highlights

  • :puzzle_piece: Announcing custom components, version 2! Easily create frameless custom UI with bidirectional data flow.

  • :last_quarter_moon: Introducing custom light and dark theme configuration! You can simultaneously define custom light and dark themes in your app.

  • :artist_palette: Announcing reusable themes! You can define a theme in a sharable file and use it as a base in other themes.

  • :dizzy: Introducing st.space for adding vertical and horizontal spaces in your app.

Notable Changes

  • :link: New configuration options, theme.codeTextColor and theme.linkColor, let you configure the color of code and link text.

  • :bar_chart: ProgressColumn has a new color parameter.

  • :rainbow: You can set color="auto" in MultiselectColumn to inherit colors from theme.chartCategoricalColors.

  • :pushpin: MultiselectColumn has a pinned parameter to match other column types.

  • :star: You can set a default value for st.feedback (#12578, #9469). Thanks, andreasntr!

  • :backhand_index_pointing_up: st.write_stream has a cursor parameter to set a custom cursor for the typewriter effect.

  • :popcorn: st.popover has a type parameter to match st.button styling options.

  • :key: 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

  • :up_down_arrow: 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.

  • :snake: Due to end of life, Python 3.9 is no longer supported.

Other Changes

  • :high_voltage: If you don’t pass a file to streamlit run, it will try streamlit_app.py by default (#12599).

  • :ninja: st.dataframe hides its index column by default when row selections are enabled (#12448, #12237). Thanks, plumol!

  • :woman_artist: For compatibility with new theming options, the app settings menu no longer supports theme editing (#12648).

  • :waving_hand: The Streamlit hello app preloads its Python packages on its home page for a faster user experience (#12617).

  • :+1: Slider thumbs don’t extend beyond the edge of their track (#12549, #4284).

  • :information_source: Material icons and emojis were updated (#12669).

  • :microbe: Bug fix: Pyplot charts render correctly in fragments, containers, and expanders (#12807, #12678, #12763).

  • :fly: Bug fix: Dataframes correctly resize and align when using width="content" (#12682).

  • :cockroach: Bug fix: Fuzzy search in select boxes is case insensitive (#12849, #11724).

  • :spider: Bug fix: 500 errors display correctly (#12845).

  • :lady_beetle: Bug fix: Deprecation warnings respect client.showErrorDetails (#12794, #12743).

  • :honeybee: Bug fix: Path handling in the file watcher was improved to prevent a ValueError in Windows environments (#12741, #12731).

  • :ant: Bug fix: st.pills shows its value when disabled (#12555, #12388). Thanks, davidsjoberg1!

  • :beetle: Bug fix: Plotly charts hide overflow to prevent flickering behavior from scrollbars (#12594).

  • :bug: 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).

9 Likes

This is so great. The components v2 support is AMAZING.
I’m really looking forward to blending in some JS with my Python apps!

Thank you!

awesome !