logo

Session State

Streamlit reruns your entire script when anything changes. Session state lets you persist values across reruns.

import streamlit as st

# Initialize state
if "count" not in st.session_state:
    st.session_state.count = 0

# Update state
if st.button("Increment"):
    st.session_state.count += 1

st.write(f"Count: {st.session_state.count}")

Without session state, count would reset to 0 on every click.

Session state is a dictionary-like object. Use it for:

  • Counters and toggles
  • User authentication status
  • Multi-step forms
  • Cached calculations
# Access like a dictionary
st.session_state["user"] = "Alice"

# Or like an object
st.session_state.logged_in = True

Session state is essential for complex apps.

I explain state management in my Streamlit course.