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

# Advanced Topics

- [Application Lifecycle](https://vaadin.com/docs/v23/advanced/application-lifecycle.md): The more technical details of application deployment, user sessions, and the UI instance lifecycle.
- [Localization](https://vaadin.com/docs/v23/advanced/i18n-localization.md): Implementing localization and translation strings using I18NProvider.
- [Modifying the Bootstrap Page at Runtime](https://vaadin.com/docs/v23/advanced/modifying-the-bootstrap-page.md): How to customize the application shell, or bootstrap page, to improve page loading speed
- [Upgrading from Vaadin 7 or 8 using Classic Components](https://vaadin.com/docs/v23/advanced/classic-components.md)
- [The Loading Indicator](https://vaadin.com/docs/v23/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/v23/advanced/dependency-filter.md): Using the DependencyFilter interface to control which dependencies are loaded.
- [Service Init Listener](https://vaadin.com/docs/v23/advanced/service-init-listener.md): Using VaadinServiceInitListener to configure RequestHandler, IndexHtmlRequestListener and DependencyFiler objects, and to dynamically register routes during start-up.
- [Dynamic Content](https://vaadin.com/docs/v23/advanced/dynamic-content.md): Generating content dynamically based on the application state.
- [History API](https://vaadin.com/docs/v23/advanced/history-api.md): Using the History API to access and modify the browser history from the server side.
- [StreamReceiver](https://vaadin.com/docs/v23/advanced/stream-resources.md): Using StreamReceiver to receive an incoming data stream.
- [Session and UI Listeners](https://vaadin.com/docs/v23/advanced/session-and-ui-init-listener.md): Listening for session and UI instantiation with SessionInitListener and UIInitListener.
- [Custom Error Handling](https://vaadin.com/docs/v23/advanced/custom-error-handler.md): Customizing the error views related to navigation between routes.
- [Customizing System Messages](https://vaadin.com/docs/v23/advanced/customize-system-messages.md): Configuring messages for application invalid state
- [Preserving the State on Refresh](https://vaadin.com/docs/v23/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/v23/advanced/servlet-container-authentication.md): Configuring session-based and servlet container authentication.
- [Handling Long-Running Tasks](https://vaadin.com/docs/v23/advanced/long-running-tasks.md): Learn how to handle long-running tasks in Vaadin applications.
- [Browser Access](https://vaadin.com/docs/v23/advanced/browser-access.md): Accessing the browser page using the Page object.
- [Loading Resources](https://vaadin.com/docs/v23/advanced/loading-resources.md): How resources are stored in a project, and how to access them in an application.
- [CSS Loading Order](https://vaadin.com/docs/v23/advanced/css-loading-order.md): Understanding CSS loading order.
- [Server Push](https://vaadin.com/docs/v23/advanced/server-push.md): Server push allows you to update the UI from the server, without the user explicitly requesting updates, for example, to send a new chat message to all participants with no delay.
- [Server-Side Modality](https://vaadin.com/docs/v23/advanced/server-side-modality.md): How to prevent interactions on the server side.
- [Custom Instantiator](https://vaadin.com/docs/v23/advanced/custom-instantiators.md): Creating a custom Instantiator implementation.
