The next frontier for Streamlit: our feature roadmap for 2023 and beyond

My personal Wishlist.

(I am aware that some of my wishes already have been granted by additional modules)


  • get feedback from events, clicks (already on Roadmap: ‘Selections on charts’)


  • Markup in Labels - to also use headings etc. (maybe on Roadmap: ‘Allow markdown in widget labels’)
  • Possibility to switch between tabs programmatically. e.g: When a button in the sidebar gets clicked and the page is rerun the second tab gets selected/shown, maybe by declaring or,


  • Make Selections possible (already on Roadmap: Selections on dataframes)

Multipage Apps:

  • I do not like the fact that in multipage apps the data from session_state of all apps gets merged together. I would prefer it when I could access it more like st.session_state.page_5.my_selectbox. This looks more structured and “feels safer”. It avoids “naming colissions” when combining apps.
  • The icon/emoji from the “main page” should be default for all “sub pages”, as long as no other icon has been specified
  • Switch between apps programmatically

The bestest of all Ideas for Selectboxes

  • I want to be able to give any list of Objects, like dataclasses, to a selectbox and have nice labels. We could define a special method to return proper labels. Let us call it __label__. I am such a genius (:sweat_smile:Turns out that is how it already works, I just have to specify/overload the __str__ method to creates nice labels. :flushed: Well now I have to simplify some of my code)

If case this is helpful, I managed to do this with CSS in my markdown:

full_width_buttons = """
                section[data-testid="stSidebar"] div.stButton button {
                width: 100%;

st.markdown(full_width_buttons, unsafe_allow_html=True)

This was for my sidebar though, not sure how well it’ll play for any container.

Bandcamp Explorer ( if you’d like to see it in action :slight_smile:


Starting version 1.18.0, you can pass use_container_width=True to st.button!