Version 0.84.0

I am excited to announce the release of version 0.84.0 of Streamlit, which includes the long-awaited Session State feature!

Release date: Jul 1, 2021
Highlights

  • Introducing st.session_state and widget callbacks to allow you to add statefulness to your apps. Check out the blog post

Notable Changes

  • st.text_input now has an autocomplete parameter to allow password managers to be used

Other Changes

  • Using st.set_page_config to assign the page title no longer appends “Streamlit” to that title (#3467)
  • NumberInput: disable plus/minus buttons when the widget is already at its max (or min) value (#3493)

Check out the release app for more details!

19 Likes

I am Amanda Walker, one of the Core team engineers, and I am the engineering lead for the Session State project. I’m very happy to finally make this available to you all, and I’m excited to see what this will enable people to make.

9 Likes

I’m thrilled to see this functionality release, AnOctopus! Thanks so much for developing it!

1 Like

Really fantastic, and tying the “default” widget states into the same mechanism is also a brilliant idea - should allow for resetting the whole app etc!

Thank you!

1 Like

Amazing work guys! Excited to use these new features / updates.

Awesome! :partying_face: :partying_face: :partying_face: :partying_face: :partying_face: :partying_face:

I started using version 0.84.0 today, and st.session_state is working great so far!

Unfortunately, though, I seem to have encountered an incompatibility with the st_aggrid component. If I try to apply a filter in the interactive grid, I get an error: "TypeError: string indices must be integers". Rolling streamlit back to version 0.83 solved the issue.

I used the following function to generate the datatable. Thanks in advance!

from st_aggrid import AgGrid, GridOptionsBuilder, DataReturnMode, GridUpdateMode

def interactive_datatable(df):
    '''    
    Use st_aggrid to show well table in GUI with interactive sorting and filtering options.
    
    df: input dataframe
    
    Returns: dataframe of AgGrid output (including filtering via GUI)
    '''
    #set up aggrid display/interactivity options
    gb = GridOptionsBuilder.from_dataframe(df)
    gb.configure_default_column(groupable=True, value=True, enableRowGroup=True, aggFunc='sum', editable=False)
    gridOptions = gb.build()
    
    #set up data return/update modes
    return_mode_value = DataReturnMode.__members__['FILTERED_AND_SORTED']
    update_mode_value = GridUpdateMode.__members__['FILTERING_CHANGED']
    
    data_return_mode = return_mode_value
                       
    grid_data = AgGrid(df, 
                        gridOptions=gridOptions,
                        width='100%',
                        data_return_mode=return_mode_value,
                        update_mode=update_mode_value)
    
    grid_data_df = pd.DataFrame(grid_data['data'])
    
    return grid_data_df

Hey @BinarySloth

The issue is being tracked here: component value of type dict is not properly marshalled with streamlit==0.84.0 · Issue #3507 · streamlit/streamlit · GitHub

It should be fixed pretty soon :wink:

Cheers,
Fanilo

1 Like

Thanks so much for letting me know, @andfanilo! Looking forward to the fix :slight_smile:

Thank you!
The session state implementation works wonderful once I did understand how to use it. For me this was the number one thing missing to make streamlit much more useful!

1 Like