Streamlit doesn't expose async / callback stuff in the API, instead the script is rerun from the start every time the user clicks a checkbox, manipulates a slider etc. This makes it really easy to make apps, but depending on the computations occurring on each render it can get pretty sluggish. There is support to cache to speed things up, e.g. data downloads.