Skip to main content

streamlit-server-state

A "server-wide" state shared across the sessions.

Tests

PyPI PyPI - Python Version PyPI - License PyPI - Downloads

ko-fi

Buy Me A Coffee

GitHub Sponsors

import streamlit as st

from streamlit_server_state import server_state, server_state_lock

st.title("Global Counter Example")

with server_state_lock["count"]:  # Lock the "count" state for thread-safety
    if "count" not in server_state:
        server_state.count = 0

increment = st.button("Increment")
if increment:
    with server_state_lock.count:
        server_state.count += 1

decrement = st.button("Decrement")
if decrement:
    with server_state_lock.count:
        server_state.count -= 1

st.write("Count = ", server_state.count)

As above, the API is similar to the built-in SessionState, except one major difference - a "lock" object. The lock object is introduced for thread-safety because the server-state is accessed from multiple sessions, i.e. threads.

Auto-rerun

When you assign a value to a server-state item, server-state[key], server-state automatically triggers re-running of all other sessions in which that server-state item is referred to so that all the references to the server-state return the latest value and all the sessions are kept up-to-date.

For example, with this mechanism, the sample chat app (app_chat.py) keeps showing the latest message list for all users.

Suppressing auto-rerun

When this auto-rerun mechanism is not good for your use case, you can suppress auto-reruns upon the value assignments by using no_rerun context as below.

from streamlit_server_state import server_state, no_rerun


with no_rerun:
    server_state["foo"] = 42  # This does not trigger re-running of other sessions

Manually trigger re-running

Upon each value assignment, server-state checks whether the value has been changed and skips re-running if it has not for efficiency. This works well in most cases, but it does not for example when the value is a complex mutable object and its field is mutated, while such usages are not recommended.

As exceptions, in such cases where the auto-rerun mechanism does not work well, you can manually trigger re-running by using force_rerun_bound_sessions(key).

if "foo" not in server_state:
    server_state["foo"] = SomeComplexObject()

server_state["foo"].field = 42  # If this assignment does not trigger re-running,

force_rerun_bound_sessions("foo")  # You can do this.

Background: https://discuss.streamlit.io/t/new-library-streamlit-server-state-a-new-way-to-share-states-across-sessions-on-the-server/14981/10

Examples

  • app_global_count: A sample app like the official counter example for SessionState which uses streamlit-server-state instead and the counter is shared among all the sessions on the server. This is a nice small example to see the usage and behavior of streamlit-server-state. Try to open the app in multiple browser tabs and see the counter is shared among them.
  • app_global_slider: A slider widget (st.slider) whose value is shared among all sessions.
  • app_chat.py: A simple chat app using streamlit-server-state.
  • app_chat_rooms.py: A simple chat app with room separation. Open in Streamlit

Resources

Metadata

Release files for streamlit-server-state 0.20.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for streamlit-server-state 0.20.2
File Size Uploaded
streamlit_server_state-0.20.2.tar.gz 88.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for streamlit-server-state 0.20.2
File Interpreter ABI Platform
streamlit_server_state-0.20.2-py3-none-any.whl Python 3 none any Details

Total release size: 101.0 kB

Release files / streamlit_server_state-0.20.2.tar.gz

Download URL streamlit_server_state-0.20.2.tar.gz
Size 88.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d14423acfbe794e0d2f9dcf73e2cffad77fb210eda69cf5da0bbd9140d1e84b6
BLAKE2b-256 checksum
How to use checksums
41bb4392d151cce26fc5dbe8344d3dc6479dd210224aded0d031aebf37477bc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 25, 2025.

Transparency log

Release files / streamlit_server_state-0.20.2-py3-none-any.whl

Download URL streamlit_server_state-0.20.2-py3-none-any.whl
Size 12.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e183d2ef076b84fe6e5dcc8c32cec1998519ed62d18bd6cdd38e0ec3b3c4bce5
BLAKE2b-256 checksum
How to use checksums
46c4ac41159f57dcea4973fc7df7b3914e960701a1e991324f59ca1b2c3fa582
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 25, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.20.2 This release

2 release files

0.20.1

2 release files

0.19.0

2 release files

0.18.2

2 release files

0.18.0

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.1

2 release files

0.15.2

2 release files

0.15.0

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page