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

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

# Working with Streamlit's execution model

## Navigation

- [Get started](/get-started)
  - [Installation](/get-started/installation)
  - [Fundamentals](/get-started/fundamentals)
  - [First steps](/get-started/tutorials)
- [Develop](/develop)
  - [Concepts](/develop/concepts)
    - [Architecture and execution](/develop/concepts/architecture)
      - [Running your app](/develop/concepts/architecture/run-your-app)
      - [Streamlit's architecture](/develop/concepts/architecture/architecture)
      - [The app chrome](/develop/concepts/architecture/app-chrome)
      - [Caching](/develop/concepts/architecture/caching)
      - [Session State](/develop/concepts/architecture/session-state)
      - [Forms](/develop/concepts/architecture/forms)
      - [Fragments](/develop/concepts/architecture/fragments)
      - [Widget behavior](/develop/concepts/architecture/widget-behavior)
    - [Multipage apps](/develop/concepts/multipage-apps)
      - [Overview](/develop/concepts/multipage-apps/overview)
      - [Page and navigation](/develop/concepts/multipage-apps/page-and-navigation)
      - [Pages directory](/develop/concepts/multipage-apps/pages-directory)
      - [Working with widgets](/develop/concepts/multipage-apps/widgets)
    - [App design](/develop/concepts/design)
      - [Animate and update elements](/develop/concepts/design/animate)
      - [Button behavior and examples](/develop/concepts/design/buttons)
      - [Dataframes](/develop/concepts/design/dataframes)
      - [Multithreading](/develop/concepts/design/multithreading)
      - [Using custom classes](/develop/concepts/design/custom-classes)
      - [Working with timezones](/develop/concepts/design/timezone-handling)
    - [ADDITIONAL](/develop/concepts/design)
      - [Connections, secrets, and authentication](/develop/concepts/connections/connecting-to-data)
      - [Secrets management](/develop/concepts/connections/secrets-management)
      - [User authentication](/develop/concepts/connections/authentication)
      - [Security reminders](/develop/concepts/connections/security-reminders)
      - [Customize your theme](/develop/concepts/configuration/theming)
      - [Customize colors and borders](/develop/concepts/configuration/theming-customize-colors-and-borders)
      - [Customize fonts](/develop/concepts/configuration/theming-customize-fonts)
    - [App testing](/develop/concepts/app-testing)
      - [Get started](/develop/concepts/app-testing/get-started)
      - [Beyond the basics](/develop/concepts/app-testing/beyond-the-basics)
      - [Automate your tests](/develop/concepts/app-testing/automate-tests)
      - [Example](/develop/concepts/app-testing/examples)
      - [Cheat sheet](/develop/concepts/app-testing/cheat-sheet)
  - [API reference](/develop/api-reference)
  - [Tutorials](/develop/tutorials)
  - [Quick reference](/develop/quick-reference)
- [Deploy](/deploy)
  - [Concepts](/deploy/concepts)
  - [Streamlit Community Cloud](/deploy/streamlit-community-cloud)
  - [Snowflake](/deploy/snowflake)
  - [Other platforms](/deploy/tutorials)
- [Knowledge base](/knowledge-base)
  - [FAQ](/knowledge-base/using-streamlit)
  - [Installing dependencies](/knowledge-base/dependencies)
  - [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/app-analytics)
  - [Sanity checks](/knowledge-base/sanity-checks)
  - [How to create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
  - [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
  - [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
  - [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
  - [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
  - [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
  - [How do I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
  - [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
  - [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
  - [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
  - [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
  - [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
  - [How to share apps with viewers outside my organization?](/knowledge-base/using-streamlit/share-apps-with-viewers-outside-organization)
  - [How do I share apps with viewers outside my organization?](/knowledge-base/using-streamlit/share-apps-with-viewers-outside-organization)
  - [How do I deploy multiple Streamlit apps on different subdomains?](/knowledge-base/using-streamlit/deploy-multiple-streamlit-apps-different-subdomains)
  - [How do I deploy Streamlit on a domain so it appears to run on a regular port (i.e. port 80)?](/knowledge-base/using-streamlit/deploy-streamlit-domain-port-80)
  - [Does Streamlit support the WSGI Protocol? (aka Can I deploy Streamlit with gunicorn)?](/knowledge-base/using-streamlit/does-streamlit-support-wsgi-protocol)
  - [How do I increase the upload limit of st.file_uploader on Streamlit Community Cloud?](/knowledge-base/using-streamlit/increase-file-uploader-limit-streamlit-cloud)
  - [How do I submit a support case for Streamlit Community Cloud?](/knowledge-base/using-streamlit/how-to-submit-a-support-case-for-streamlit-community-cloud)
- [Caching and state](/develop/concepts/architecture)
  - [Caching](/develop/concepts/architecture/caching)
  - [Session State](/develop/concepts/architecture/session-state)
  - [Forms](/develop/concepts/architecture/forms)
  - [Widget behavior](/develop/concepts/architecture/widget-behavior)
- [App testing](/develop/concepts/app-testing)
  - [App analytics](/develop/concepts/app-testing/app-analytics)
  - [App settings](/develop/concepts/app-testing/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/deploy/app-analytics)
  - [App settings](/knowledge-base/deploy/app-settings)
  - [Delete your app](/knowledge-base/deploy/delete-your-app)
  - [Edit your app](/knowledge-base/deploy/edit-your-app)
  - [Favorite your app](/knowledge-base/deploy/favorite-your-app)
  - [Reboot your app](/knowledge-base/deploy/reboot-your-app)
  - [Rename your app in GitHub](/knowledge-base/deploy/rename-your-app)
  - [Upgrade Python](/knowledge-base/deploy/upgrade-python)
  - [Upgrade Streamlit](/knowledge-base/deploy/upgrade-streamlit)
  - [How to submit a support case for Streamlit Community Cloud](/knowledge-base/deploy/how-to-submit-a-support-case-for-streamlit-community-cloud)
- [Knowledge base](/knowledge-base)
  - [FAQ](/knowledge-base/using-streamlit)
  - [Installing dependencies](/knowledge-base/dependencies)
  - [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/app-analytics)
  - [Sanity checks](/knowledge-base/sanity-checks)
  - [How to create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
  - [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
  - [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
  - [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
  - [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
  - [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
  - [How do I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
  - [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
  - [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
  - [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
  - [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
  - [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
- [Caching and state](/develop/concepts/architecture)
  - [Caching](/develop/concepts/architecture/caching)
  - [Session State](/develop/concepts/architecture/session-state)
  - [Forms](/develop/concepts/architecture/forms)
  - [Widget behavior](/develop/concepts/architecture/widget-behavior)
- [App testing](/develop/concepts/app-testing)
  - [App analytics](/develop/concepts/app-testing/app-analytics)
  - [App settings](/develop/concepts/app-testing/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/deploy/app-analytics)
  - [App settings](/knowledge-base/deploy/app-settings)
  - [Delete your app](/knowledge-base/deploy/delete-your-app)
  - [Edit your app](/knowledge-base/deploy/edit-your-app)
  - [Favorite your app](/knowledge-base/deploy/favorite-your-app)
  - [Reboot your app](/knowledge-base/deploy/reboot-your-app)
  - [Rename your app in GitHub](/knowledge-base/deploy/rename-your-app)
  - [Upgrade Python](/knowledge-base/deploy/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Knowledge base](/knowledge-base)
  - [FAQ](/knowledge-base/using-streamlit)
  - [Installing dependencies](/knowledge-base/dependencies)
  - [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/app-analytics)
  - [Sanity checks](/knowledge-base/sanity-checks)
  - [How to create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
  - [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
  - [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
  - [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
  - [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
  - [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
  - [How do I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
  - [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
  - [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
  - [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
  - [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
  - [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
- [Caching and state](/develop/concepts/architecture)
  - [Caching](/develop/concepts/architecture/caching)
  - [Session State](/develop/concepts/architecture/session-state)
  - [Forms](/develop/concepts/architecture/forms)
  - [Widget behavior](/develop/concepts/architecture/widget-behavior)
- [App testing](/develop/concepts/app-testing)
  - [App analytics](/develop/concepts/app-testing/app-analytics)
  - [App settings](/develop/concepts/app-testing/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/deploy/app-analytics)
  - [App settings](/knowledge-base/deploy/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Knowledge base](/knowledge-base)
  - [FAQ](/knowledge-base/using-streamlit)
  - [Installing dependencies](/knowledge-base/dependencies)
  - [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/app-analytics)
  - [Sanity checks](/knowledge-base/sanity-checks)
  - [How to create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
  - [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
  - [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
  - [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
  - [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
  - [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
  - [How do I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
  - [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
  - [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
  - [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
  - [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
  - [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
- [Caching and state](/develop/concepts/architecture)
  - [Caching](/develop/concepts/architecture/caching)
  - [Session State](/develop/concepts/architecture/session-state)
  - [Forms](/develop/concepts/architecture/forms)
  - [Widget behavior](/develop/concepts/architecture/widget-behavior)
- [App testing](/develop/concepts/app-testing)
  - [App analytics](/develop/concepts/app-testing/app-analytics)
  - [App settings](/develop/concepts/app-testing/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/deploy/app-analytics)
  - [App settings](/knowledge-base/deploy/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Knowledge base](/knowledge-base)
  - [FAQ](/knowledge-base/using-streamlit)
  - [Installing dependencies](/knowledge-base/dependencies)
  - [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/app-analytics)
  - [Sanity checks](/knowledge-base/sanity-checks)
  - [How to create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
  - [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
  - [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
  - [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
  - [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
  - [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
  - [How do I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
  - [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
  - [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
  - [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
  - [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
  - [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
- [Caching and state](/develop/concepts/architecture)
  - [Caching](/develop/concepts/architecture/caching)
  - [Session State](/develop/concepts/architecture/session-state)
  - [Forms](/develop/concepts/architecture/forms)
  - [Widget behavior](/develop/concepts/architecture/widget-behavior)
- [App testing](/develop/concepts/app-testing)
  - [App analytics](/develop/concepts/app-testing/app-analytics)
  - [App settings](/develop/concepts/app-testing/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/deploy/app-analytics)
  - [App settings](/knowledge-base/deploy/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Knowledge base](/knowledge-base)
  - [FAQ](/knowledge-base/using-streamlit)
  - [Installing dependencies](/knowledge-base/dependencies)
  - [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/app-analytics)
  - [Sanity checks](/knowledge-base/sanity-checks)
  - [How to create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
  - [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
  - [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
  - [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
  - [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
  - [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
  - [How do I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
  - [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
  - [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
  - [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
  - [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
  - [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
- [Caching and state](/develop/concepts/architecture)
  - [Caching](/develop/concepts/architecture/caching)
  - [Session State](/develop/concepts/architecture/session-state)
  - [Forms](/develop/concepts/architecture/forms)
  - [Widget behavior](/develop/concepts/architecture/widget-behavior)
- [App testing](/develop/concepts/app-testing)
  - [App analytics](/develop/concepts/app-testing/app-analytics)
  - [App settings](/develop/concepts/app-testing/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/deploy/app-analytics)
  - [App settings](/knowledge-base/deploy/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Knowledge base](/knowledge-base)
  - [FAQ](/knowledge-base/using-streamlit)
  - [Installing dependencies](/knowledge-base/dependencies)
  - [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/app-analytics)
  - [Sanity checks](/knowledge-base/sanity-checks)
  - [How to create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
  - [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
  - [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
  - [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
  - [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
  - [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
  - [How do I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
  - [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
  - [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
  - [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
  - [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
  - [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
- [Caching and state](/develop/concepts/architecture)
  - [Caching](/develop/concepts/architecture/caching)
  - [Session State](/develop/concepts/architecture/session-state)
  - [Forms](/develop/concepts/architecture/forms)
  - [Widget behavior](/develop/concepts/architecture/widget-behavior)
- [App testing](/develop/concepts/app-testing)
  - [App analytics](/develop/concepts/app-testing/app-analytics)
  - [App settings](/develop/concepts/app-testing/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/deploy/app-analytics)
  - [App settings](/knowledge-base/deploy/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Knowledge base](/knowledge-base)
  - [FAQ](/knowledge-base/using-streamlit)
  - [Installing dependencies](/knowledge-base/dependencies)
  - [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/app-analytics)
  - [Sanity checks](/knowledge-base/sanity-checks)
  - [How to create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
  - [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
  - [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
  - [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
  - [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
  - [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
  - [How do I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
  - [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
  - [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
  - [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
  - [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
  - [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
- [Caching and state](/develop/concepts/architecture)
  - [Caching](/develop/concepts/architecture/caching)
  - [Session State](/develop/concepts/architecture/session-state)
  - [Forms](/develop/concepts/architecture/forms)
  - [Widget behavior](/develop/concepts/architecture/widget-behavior)
- [App testing](/develop/concepts/app-testing)
  - [App analytics](/develop/concepts/app-testing/app-analytics)
  - [App settings](/develop/concepts/app-testing/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/deploy/app-analytics)
  - [App settings](/knowledge-base/deploy/app-settings)
  - [Delete your app](/develop/concepts/app-testing/delete-your-app)
  - [Edit your app](/develop/concepts/app-testing/edit-your-app)
  - [Favorite your app](/develop/concepts/app-testing/favorite-your-app)
  - [Reboot your app](/develop/concepts/app-testing/reboot-your-app)
  - [Rename your app in GitHub](/develop/concepts/app-testing/rename-your-app)
  - [Upgrade Python](/develop/concepts/app-testing/upgrade-python)
  - [Upgrade Streamlit](/develop/concepts/app-testing/upgrade-streamlit)
- [Knowledge base](/knowledge-base)
  - [FAQ](/knowledge-base/using-streamlit)
  - [Installing dependencies](/knowledge-base/dependencies)
  - [Deployment issues](/knowledge-base/deploy)
  - [App analytics](/knowledge-base/app-analytics)
  - [Sanity checks](/knowledge-base/sanity-checks)
  - [How to create an anchor link?](/knowledge-base/using-streamlit/create-anchor-link)
  - [Enabling camera access in your browser](/knowledge-base/using-streamlit/enable-camera)
  - [How to download a file in Streamlit?](/knowledge-base/using-streamlit/how-download-file-streamlit)
  - [How to download a Pandas DataFrame as a CSV?](/knowledge-base/using-streamlit/how-download-pandas-dataframe-csv)
  - [How do you retrieve the filename of a file uploaded with st.file_uploader?](/knowledge-base/using-streamlit/retrieve-filename-uploaded)
  - [How can I make st.pydeck_chart use custom Mapbox styles?](/knowledge-base/using-streamlit/pydeck-chart-custom-mapbox-styles)
  - [How do I make Streamlit watch for changes in other modules I'm importing in my app?](/knowledge-base/using-streamlit/streamlit-watch-changes-other-modules-importing-app)
  - [What browsers does Streamlit support?](/knowledge-base/using-streamlit/supported-browsers)
  - [Where does st.file_uploader store uploaded files and when do they get deleted?](/knowledge-base/using-streamlit/where-file-uploader-store-when-deleted)
  - [Widget updating for every second input when using session state](/knowledge-base/using-streamlit/widget-updating-session-state)
  - [Why does Streamlit restrict nested st.columns?](/knowledge-base/using-streamlit/why-streamlit-restrict-nested-columns)
  - [What is serializable session state?](/knowledge-base/using-streamlit/serializable-session-state)
- [Caching and state](/develop/concepts/architecture)
  - [Caching](/develop/concepts/architecture/caching)
  - [Session State](/develop/concepts/architecture/session-state)
  - [Forms](/develop/concepts/architecture/forms)
  - [Widget behavior](/develop/concepts/architecture/widget-behavior)
- [App testing](/develop/concepts/app-testing)
  - [App analytics](