Rerun the script immediately.

When st.rerun() is called, the script is halted - no more statements will be run, and the script will be queued to re-run from the top.

Function signature[source]

st.rerun()

st.rerun is one of the tools to control the logic of your app. While it is great for prototyping, there can be adverse side effects:

  • Additional script runs may be inefficient and slower.
  • Excessive reruns may complicate your app's logic and be harder to follow.
  • If misused, infinite looping may crash your app.

In many cases where st.rerun works, callbacks may be a cleaner alternative. Containers may also be helpful.

Using st.rerun to update an earlier header
import streamlit as st if "value" not in st.session_state: st.session_state.value = "Title" ##### Option using st.rerun ##### st.header(st.session_state.value) if st.button("Foo"): st.session_state.value = "Foo" st.rerun()
Using a callback to update an earlier header
##### Option using a callback ##### st.header(st.session_state.value) def update_value(): st.session_state.value = "Bar" st.button("Bar", on_click=update_value)
Using containers to update an earlier header
##### Option using a container ##### container = st.container() if st.button("Baz"): st.session_state.value = "Baz" container.header(st.session_state.value)
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.