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.