Version 1.10.0

I am so excited to announce some special features in this release! Thank you so much for your help supporting us as we settle into our new home within Snowflake :snowflake:!


  • Introducing native support for multipage apps! Check out our blog post and try out our new streamlit hello

Notable Changes

  • st.dataframe has been redesigned
  • has a horizontal keyword-only parameter to display options horizontally
  • Streamlit Cloud will support richer exception formatting
  • Get user information on private apps using st.experimental_user

Other Changes

Want to share a special shoutout to GitHub user harahu for many of the type annotation PRs!


Very exiting. I tried to upgrade but it sadly instantly broke my existing apps :frowning:. More specifcially I’m already using the old multipage library and happen to have a folder called “pages”. Can I change some set_page_config such that the new native multipage functions looks for a differently named folder with a custom name instead of having it hardcoded to “pages”? Had to roll back to 1.9.2 and cannot upgrade if this doesn’t get fixed.

1 Like

@lorenzweb Can you tell me which multipage library you’ve been using?

Thank you for the new Streamlit version - the dataframe (df) enhancements are very nice. I have a few queries though:

  1. On my test, I found that the df is not editable a la aggrid - it would be really nice to have this functionality
  2. If the df / csv file has a boolean column, checkboxes appear in that column. It would be if I can change the checkbox value by clicking it. Additionally, how do I get images and bubbles?
  3. Is there is still no way to tell on which row my cursor is on?



Hey @Shawn_Pereira, nice to hear back from you :wink:

1+2: There’s no way to edit data and/or click the checkboxes yet. But this release and the new library we are using for dataframes brings us A LOT closer to that functionality. We still need to figure out the best API to handle edits and selections but our goal is to ship something in summer or fall.

Images are not possible yet (again, coming later this year!). You can get the bubbles if you put a list in your dataframe (I assume by bubbles you mean the thing on the right in the screenshot below, correct?).

3: Don’t really get what you mean, can you clarify?

Appreciate your feedback!!

1 Like

Hi @jrieke , lovely to hear from you too. :slight_smile:

  • Yes, you deduced points 1 & 2 correctly. Eagerly waiting the future functionality you mentioned.
  • Point #3: if I have a df displayed onscreen with st.dataframe, and I click on any row of that df, is it possible for me to internally, in my code, get back which row index has been clicked on? Can st.dataframe have that functionality?

Eg. #2, Suppose I click on row #3, can st.dataframe return #2 back to me…?

Use case: basis the click, and a combination of data in the cells of that clicked row, I can run other code or show stuff onscreen (that is only relevant for that combination of data)


1 Like

Fantastic @kmcgrady!!! Thanks to the team for all the efforts in making multipage apps a native reality! Will be upgrading later today! :star_struck:


Nice to see multipage apps are a reality!
Is it possible to somehow configure which page runs programatically (and hide the current menu) ?
I would love to use a custom header with navigation, but still have the multipage support with URLs. :innocent:


Good day.
It is very cool feature :slight_smile:

In my opinion, though, it is not a best idea to use emojis in filenames. For example, I’ve got problems with “teradatasql” module. It seems, that driver sends filename via hidden parameters and teradata rejects the connection (“An illegally formed character string was encountered…”).
Is it possible to add some settings to pages: cuistom icon, page name and visibility (via set_page_config or smth similar)? We can set all pages settings inside every page, for example.


No kidding! I pointed this out during development. There are a million possible pitfalls in the shell and in consumer applications for the files. I think it would be much better to do this as a section in config.toml:

page1 = "😀" # quoted since they are strings
page2 = "🌏"
page3 = "`:1st_place_medal:` " # also allow entry in colon delimited format

Ubuntu 22.04, Anaconda package (python 3.9.12)
streamlit version 1.9.x is running perfectly.
After successful install to version 1.10.0, run streamlit --version:

Traceback (most recent call last):
File “/home/charliechu/conda/bin/streamlit”, line 5, in
from streamlit.cli import main
File “/home/charliechu/conda/lib/python3.9/site-packages/streamlit/”, line 48, in
from streamlit.proto.RootContainer_pb2 import RootContainer
File “/home/charliechu/conda/lib/python3.9/site-packages/streamlit/proto/”, line 5, in
from google.protobuf.internal import enum_type_wrapper
ModuleNotFoundError: No module named ‘google.protobuf’

I don’t think I see anyone else commenting on this one, so let me say that #4696 – better wrapping of long text in markdown – is super appreciated by me, as a person who has a LOT of long text in markdown.


Yessss! So happy with the multipage solution! :smiley:

All of these changes are super helpful, thanks a lot team!

Hey @Ascetic168 Sorry for the delay. So that means the protobuf library wasn’t installed in Conda. You can fix this by running conda install protobuf=3.20.1 (the latest version 3) and hopefully that fixes the issue.

It’s weird that this error occurs. The feedstock for Conda Forge, specifies the protobuf version as a dependency, so it should have been downloaded :thinking:.