# Working with Streamlit's execution model

Source: https://docs.streamlit.io/develop/concepts/architecture

**[Run your app](https://docs.streamlit.io/develop/concepts/architecture/run-your-app)**: Understand how to start your Streamlit app.

**[Streamlit's architecture](https://docs.streamlit.io/develop/concepts/architecture/architecture)**: Understand Streamlit's client-server architecture and related considerations.

**[The app chrome](https://docs.streamlit.io/develop/concepts/architecture/app-chrome)**: Every Streamlit app has a few widgets in the top right to help you as you develop your app and help your users as they view your app. This is called the app chrome.

**[Caching](https://docs.streamlit.io/develop/concepts/architecture/caching)**: Make your app performant by caching results to avoid unecessary recomputation with each rerun.

**[Session State](https://docs.streamlit.io/develop/concepts/architecture/session-state)**: Manage your app's statefulness with Session State.

**[Forms](https://docs.streamlit.io/develop/concepts/architecture/forms)**: Use forms to isolate user input and prevent unnecessary app reruns.

**[Fragments](https://docs.streamlit.io/develop/concepts/architecture/fragments)**: Restrict the scope of reruns to defined blocks of code with fragments.

**[Widget behavior](https://docs.streamlit.io/develop/concepts/architecture/widget-behavior)**: Understand how widgets work in detail.
