> Markdown version of [Advanced Topics](https://vaadin.com/docs/next/flow/advanced). Section index: [llms.txt](https://vaadin.com/docs/next/flow/llms.txt)

# Advanced Topics

- [Application Lifecycle](https://vaadin.com/docs/next/flow/advanced/application-lifecycle.md): The more technical details of application deployment, user sessions, and the UI instance lifecycle.
- [Modifying Bootstrap Page at Runtime](https://vaadin.com/docs/next/flow/advanced/modifying-the-bootstrap-page.md): Customizing an application shell (a.k.a., bootstrap page) to improve page loading speed.
- [Classic Components](https://vaadin.com/docs/next/flow/advanced/classic-components.md): Build on the latest Vaadin version with familiar component APIs.
- [The Loading Indicator](https://vaadin.com/docs/next/flow/advanced/loading-indicator.md): Using a loading indicator to notify the user of progress in loading the page.
- [Modifying how dependencies are loaded with DependencyFilter](https://vaadin.com/docs/next/flow/advanced/dependency-filter.md): Using the DependencyFilter interface to control which dependencies are loaded.
- [Service Init Listener](https://vaadin.com/docs/next/flow/advanced/service-init-listener.md): Using VaadinServiceInitListener to configure RequestHandler, IndexHtmlRequestListener and DependencyFiler objects, and to dynamically register routes during start-up.
- [Downloads](https://vaadin.com/docs/next/flow/advanced/downloads.md): Download a file or arbitrary content from server to browser.
- [Uploads](https://vaadin.com/docs/next/flow/advanced/upload-resources.md): Using UploadHandler to receive an incoming data stream.
- [Session & UI Listeners](https://vaadin.com/docs/next/flow/advanced/session-and-ui-init-listener.md): Listening for session and UI instantiation with SessionInitListener and UIInitListener.
- [Custom Error Handling](https://vaadin.com/docs/next/flow/advanced/custom-error-handler.md): Customizing error views related to navigation between routes.
- [Customizing System Messages](https://vaadin.com/docs/next/flow/advanced/customize-system-messages.md): Configuring messages for application invalid state.
- [Preserving the State on Refresh](https://vaadin.com/docs/next/flow/advanced/preserving-state-on-refresh.md): Using the @PreserveOnRefresh annotation to keep the state of a view when it's refreshed.
- [Servlet-Container Authentication](https://vaadin.com/docs/next/flow/advanced/servlet-container-authentication.md): Configuring session-based and servlet container authentication.
- [Vaadin Executor](https://vaadin.com/docs/next/flow/advanced/service-executor.md): Configuring and using Vaadin Executor to run background tasks.
- [Browser Access](https://vaadin.com/docs/next/flow/advanced/browser-access.md): Accessing the browser page using the Page object.
- [Loading Resources](https://vaadin.com/docs/next/flow/advanced/loading-resources.md): How resources are stored in a project, and how to access them in an application.
- [Server Push](https://vaadin.com/docs/next/flow/advanced/server-push.md): Configuration reference for server push in Vaadin Flow applications.
- [Server-Side Modality](https://vaadin.com/docs/next/flow/advanced/server-side-modality.md): How to prevent interactions on the server side.
- [Custom Instantiator](https://vaadin.com/docs/next/flow/advanced/custom-instantiators.md): Creating a custom Instantiator implementation.
- [Server to Client Communication](https://vaadin.com/docs/next/flow/advanced/server-client-communication.md): Technical details of how server to client communications work.
- [Nullability Annotations](https://vaadin.com/docs/next/flow/advanced/nullability.md): Using JSpecify annotations and NullAway for compile-time null safety in Vaadin projects.
- [Service Event Bus](https://vaadin.com/docs/next/flow/advanced/session-lock-and-rpc-listeners.md): Observing session locks, client-to-server RPC invocations, data provider queries, and navigations through the VaadinService event bus.
- [Preparing for V8 Upgrade Automation](https://vaadin.com/docs/next/flow/advanced/using-minifinder.md): How to use the Minifinder for Eclipse to determine the potential success of a V8 Upgrade Automation service.
