# Flow Reference > Build web applications with only Java. Parent index: [Vaadin Docs](https://vaadin.com/docs/v24/llms.txt) ## Overview - [Flow Reference](https://vaadin.com/docs/v24/flow.md): Build web applications with only Java. ## What is Flow? - [What is Flow?](https://vaadin.com/docs/v24/flow/what-is-flow.md): Basics of creating an application using Vaadin Flow. ## Application Basics - [Application Basics](https://vaadin.com/docs/v24/flow/application.md): Basics of creating an application using Flow. - [Building a UI](https://vaadin.com/docs/v24/flow/application/ui.md): How to construct views with user interface components. - [Handling Events](https://vaadin.com/docs/v24/flow/application/events.md): Learn the basics of event handling in Vaadin Flow. - [Creating a Main View](https://vaadin.com/docs/v24/flow/application/main-view.md): How to create main views with a header, a menu, and a content area. - [Basic Routing & Navigation](https://vaadin.com/docs/v24/flow/application/routing-navigation.md): Understanding the basics of the routes of views, URLs and navigation. - [Images & Icons](https://vaadin.com/docs/v24/flow/application/resources.md): Images and icons are basic visual features of an application. ## Routing & Navigation - [Routing & Navigation](https://vaadin.com/docs/v24/flow/routing.md): Explains routing, how URLs are mapped to views, and navigating applications. - [Defining Routes](https://vaadin.com/docs/v24/flow/routing/route.md): Using the Route annotation to define route URLs. - [Navigating Between Routes](https://vaadin.com/docs/v24/flow/routing/navigation.md): Ways in which to switch between routes or views. - [Menu Configuration](https://vaadin.com/docs/v24/flow/routing/menu-configuration.md): Collecting menu annotated routes for menu generation. - [Route Parameters](https://vaadin.com/docs/v24/flow/routing/route-parameters.md): How to pass extra information to a route using route parameters. - [Updating URL Parameters without Navigation](https://vaadin.com/docs/v24/flow/routing/updating-url-parameters.md): How to update URL parameters manually and without navigation. - [Navigation Lifecycle](https://vaadin.com/docs/v24/flow/routing/lifecycle.md): Explains the events that happen during a user initiated navigation between two routes. - [Router Layouts & Nested Router Targets](https://vaadin.com/docs/v24/flow/routing/layout.md): Explains router layouts and nested router targets. - [Retrieving Routes](https://vaadin.com/docs/v24/flow/routing/retrieving-routes.md): How to retrieve the generated route for registered navigation targets. - [Router Exception Handling](https://vaadin.com/docs/v24/flow/routing/exceptions.md): Handling router exceptions with the Router class. - [Getting Registered Routes](https://vaadin.com/docs/v24/flow/routing/registered-routes.md): How to retrieve all registered routes. - [Updating Page Title on Navigation](https://vaadin.com/docs/v24/flow/routing/page-titles.md): How to update a page title during navigation. - [Registering Routes Dynamically](https://vaadin.com/docs/v24/flow/routing/dynamic.md): How to register routes and route templates, dynamically. - [Additional Guides](https://vaadin.com/docs/v24/flow/routing/additional-guides.md): Additional guides related to routing and navigation. - [Query Parameters](https://vaadin.com/docs/v24/flow/routing/additional-guides/query-parameters.md): Pass parameters to a given route in the form of name-value pairs. - [Route Templates](https://vaadin.com/docs/v24/flow/routing/additional-guides/route-templates.md): How to customize methods to include parameters in a route. ## Creating UI - [Creating UI](https://vaadin.com/docs/v24/flow/create-ui.md): How to use components, create your own, or integrate third party web components. - [Basic Features](https://vaadin.com/docs/v24/flow/create-ui/basic-features.md): Common features available in all Vaadin components. - [Enabled State](https://vaadin.com/docs/v24/flow/create-ui/enabled-state.md): Components that allow user interaction can have three different enabled states. - [Keyboard Shortcuts](https://vaadin.com/docs/v24/flow/create-ui/shortcut.md): Creating keyboard shortcuts to components for a better user experience. - [Creating Components](https://vaadin.com/docs/v24/flow/create-ui/creating-components.md): How to create components using the Element API. - [Single Element](https://vaadin.com/docs/v24/flow/create-ui/creating-components/basic.md): Creating a component using a single HTML element. - [Multiple Elements](https://vaadin.com/docs/v24/flow/create-ui/creating-components/many-elements.md): Creating a component using multiple HTML elements. - [Using API Helpers to Define Component Properties](https://vaadin.com/docs/v24/flow/create-ui/creating-components/property-descriptor.md): How to use PropertyDescriptors to define a property name and default value. - [Using Existing Components](https://vaadin.com/docs/v24/flow/create-ui/creating-components/composite.md): Creating a component by combining existing components together. - [Extending Components](https://vaadin.com/docs/v24/flow/create-ui/creating-components/extending-component.md): Create a new component by extending any existing component. - [Using Events](https://vaadin.com/docs/v24/flow/create-ui/creating-components/events.md): How to handle events in your components. - [Component Containers](https://vaadin.com/docs/v24/flow/create-ui/creating-components/container.md): Creating a component that can contain other components. - [Lifecycle Callbacks](https://vaadin.com/docs/v24/flow/create-ui/creating-components/lifecycle-callbacks.md): How to react when a component is attached to or detached from an application. - [Using Vaadin Mixin Interfaces](https://vaadin.com/docs/v24/flow/create-ui/creating-components/mixins.md): How provide common APIs and default behavior for sets of functions in most Web Components. - [Integrating Web Components](https://vaadin.com/docs/v24/flow/create-ui/web-components.md): How to create new HTML tags with custom names. - [Creating a Java API](https://vaadin.com/docs/v24/flow/create-ui/web-components/java-api-for-a-web-component.md): How to add functionality to a stub class to make it a functioning Java API. - [Debugging](https://vaadin.com/docs/v24/flow/create-ui/web-components/debugging-a-web-component-integration.md): Explains the most common integration issues and what to do about them. - [In-Project Component](https://vaadin.com/docs/v24/flow/create-ui/web-components/an-in-project-web-component.md): How to create an UI component specific to an application. - [Web Components Intro](https://vaadin.com/docs/v24/flow/create-ui/web-components/introduction-to-webcomponents.md): Introduction to Web Components, new HTML tags with custom names. - [Element API](https://vaadin.com/docs/v24/flow/create-ui/element-api.md): You can control the HTML DOM in the browser from the server-side using the Element API. - [Properties & attributes](https://vaadin.com/docs/v24/flow/create-ui/element-api/properties-attributes.md): Get and set DOM properties and attributes. - [Listening to User Events](https://vaadin.com/docs/v24/flow/create-ui/element-api/event-listener.md): Listen to any browser events. - [Remote Procedure Calls](https://vaadin.com/docs/v24/flow/create-ui/element-api/client-server-rpc.md): Running procedures or subroutines elsewhere -- on another machine. - [Retrieving User Input](https://vaadin.com/docs/v24/flow/create-ui/element-api/user-input.md): Use the Element API to retrieve user input from the client-side. - [Dynamic Styling](https://vaadin.com/docs/v24/flow/create-ui/element-api/dynamic-styling.md): How to style elements using dynamic class names or inline styles. - [Shadow Roots](https://vaadin.com/docs/v24/flow/create-ui/element-api/shadow-root.md): Using shadow roots in server-side elements and components. - [Drag & Drop](https://vaadin.com/docs/v24/flow/create-ui/dnd.md): Drag and drop between components as well as between the UI and the operating system. - [Drag Source](https://vaadin.com/docs/v24/flow/create-ui/dnd/drag-source.md): Making any component draggable and configuring the drag operation. - [Drop Target](https://vaadin.com/docs/v24/flow/create-ui/dnd/drop-target.md): Make any component a drop target that the user can drop things on to. - [Templates](https://vaadin.com/docs/v24/flow/create-ui/templates.md): How to build views declaratively using templates. - [Template-based](https://vaadin.com/docs/v24/flow/create-ui/templates/basic.md): How to create a component using only the Template API. - [Binding to Components](https://vaadin.com/docs/v24/flow/create-ui/templates/components.md): How to use the @Id annotation to reference a JavaScript LitElement template. - [Combining with Binder](https://vaadin.com/docs/v24/flow/create-ui/templates/and-binder.md): How to create a fully functional template-binder view. - [Sub-Templates](https://vaadin.com/docs/v24/flow/create-ui/templates/subtemplate.md): How to create a parent LitElement template that includes a child LitElement template. - [Adding Server-side Components](https://vaadin.com/docs/v24/flow/create-ui/templates/components-in-slot.md): How to add server-side components to templates. - [Styling](https://vaadin.com/docs/v24/flow/create-ui/templates/styling-templates.md): How to add component-specific scoped styles directly in the static styles template property. - [Detecting Component Mappings](https://vaadin.com/docs/v24/flow/create-ui/templates/component-integration.md): How to detect whether a component is part of a template. - [Limitations](https://vaadin.com/docs/v24/flow/create-ui/templates/limitations.md): A list of limitations of Template. - [Polymer Templates (deprecated)](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer.md): Polymer support is deprecated; use Lit templates instead. - [Create a Simple Component Using Template API](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer/polymer-template-basic.md): Polymer support is deprecated; use Lit templates instead. - [Combining Templates & Binders](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer/polymer-template-and-binder.md): Polymer support is deprecated; use Lit templates instead. - [Dynamically Add Server-Side Components to Templates](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer/polymer-template-components-in-slot.md): Polymer support is deprecated; use Lit templates instead. - [Handling User Events](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer/event-handlers.md): How to use component API and DOM events via the Element API. - [Binding Model Data](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer/bindings.md): How to bind text content, property values, and attribute values. - [Using Model Beans](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer/model-bean.md): Polymer support is deprecated; use Lit templates instead. - [Using Model Encoders](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer/model-encoders.md): Polymer support is deprecated; use Lit templates instead. - [Creating Content Dynamically from a List](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer/list-bindings.md): Polymer support is deprecated; use Lit templates instead. - [Using Parent Layout](https://vaadin.com/docs/v24/flow/create-ui/templates/polymer/parent-layout.md): Polymer support is deprecated; use Lit templates instead. ## Forms & Data Binding - [Forms & Data Binding](https://vaadin.com/docs/v24/flow/binding-data.md): Learn how to bind data to forms and selection components in Vaadin Flow. - [Binding Data to Forms](https://vaadin.com/docs/v24/flow/binding-data/components-binder.md): How to bind data to forms, which are composites with multiple fields that each bind to sub-structures in data. - [Validating & Converting User Input](https://vaadin.com/docs/v24/flow/binding-data/components-binder-validation.md): Validating forms with multiple fields, and converting field values from input format to acceptable data format. - [Loading & Saving to Business Objects](https://vaadin.com/docs/v24/flow/binding-data/components-binder-load.md): Loading business objects and then saving them. - [Binding Beans to Forms](https://vaadin.com/docs/v24/flow/binding-data/components-binder-beans.md): How beans, the standard Java model for business objects are bound to forms. - [Binding Items to Components](https://vaadin.com/docs/v24/flow/binding-data/data-provider.md): Binding and displaying a list of items in components, such as Grid and Combo Box. - [Creating a Component that Has a Value](https://vaadin.com/docs/v24/flow/binding-data/field.md): How to create a field component. ## Security - [Security](https://vaadin.com/docs/v24/flow/security.md): Documentation on better security with Vaadin products and related software. - [Enabling Security](https://vaadin.com/docs/v24/flow/security/enabling-security.md): Enable and configure security in a Vaadin Flow application using built-in security helpers with Spring Boot. - [Vaadin Security Configurer](https://vaadin.com/docs/v24/flow/security/vaadin-security-configurer.md): How to use VaadinSecurityConfigurer to configure security in a Vaadin Flow application using built-in security helpers with Spring Boot. - [Advanced Security Topics](https://vaadin.com/docs/v24/flow/security/advanced-topics.md): Documentation of advanced security topics. - [Security Architecture](https://vaadin.com/docs/v24/flow/security/advanced-topics/architecture.md): An introduction to Vaadin Flow's security architecture and how it works in practice. - [Security Practices at Vaadin](https://vaadin.com/docs/v24/flow/security/advanced-topics/security-practices.md): Provides an overview of the steps Vaadin takes to ensure an application remains secure. - [Common Vulnerabilities](https://vaadin.com/docs/v24/flow/security/advanced-topics/vulnerabilities.md): Descriptions of common vulnerabilities such as SQL injections, cross-site request forgeries, cross-site scripting. - [Frequently Reported Issues](https://vaadin.com/docs/v24/flow/security/advanced-topics/frequent-issues.md): Lists perceived issues reported by users as vulnerabilities. - [Securing Plain Java Applications](https://vaadin.com/docs/v24/flow/security/advanced-topics/securing-plain-java-app.md): Details and examples on using the built-in security helpers in a Java application. - [Navigation Access Control](https://vaadin.com/docs/v24/flow/security/advanced-topics/navigation-access-control.md): Explains navigation access control and how it can be customized. - [Storing Sensitive Data](https://vaadin.com/docs/v24/flow/security/advanced-topics/external-configuration.md): Advice on storing sensitive data in Spring Boot applications. - [Content Security Policy](https://vaadin.com/docs/v24/flow/security/advanced-topics/strict-csp.md): How to enable strict Content Security Policy. ## Testing - [Testing](https://vaadin.com/docs/v24/flow/testing.md): TestBench allows you to create UI unit and end-to-end tests for your Vaadin applications. - [UI Unit Testing](https://vaadin.com/docs/v24/flow/testing/ui-unit.md): Explains the value of UI unit testing, to test Vaadin applications faster. - [Getting Started](https://vaadin.com/docs/v24/flow/testing/ui-unit/getting-started.md): Tutorial to create and run a UI unit test. - [Querying Components](https://vaadin.com/docs/v24/flow/testing/ui-unit/component-query.md): Details and examples on accessing components within a UI unit test. - [UI Snapshots](https://vaadin.com/docs/v24/flow/testing/ui-unit/snapshots.md): About the snapshots returned by a failing UI Unit Test. - [Spring-based Projects](https://vaadin.com/docs/v24/flow/testing/ui-unit/spring.md): Describes and provides examples how to perform UI Unit Tests. - [Quarkus-based Projects](https://vaadin.com/docs/v24/flow/testing/ui-unit/quarkus.md): Describes and provides examples of how to perform UI Unit Tests. - [End-to-End Testing](https://vaadin.com/docs/v24/flow/testing/end-to-end.md): Simulating an application with end-to-end testing to verify expected actions took place. - [Getting Started](https://vaadin.com/docs/v24/flow/testing/end-to-end/getting-started.md): Tutorial to begin doing end-to-end testing. - [Installing WebDrivers](https://vaadin.com/docs/v24/flow/testing/end-to-end/installing-webdrivers.md): How to install the proper, browser-specific WebDriver for tests. - [Creating Tests](https://vaadin.com/docs/v24/flow/testing/end-to-end/creating-tests.md): How to create tests using TestBench. - [Tests with Page Objects](https://vaadin.com/docs/v24/flow/testing/end-to-end/page-objects.md): Creating maintainable tests using Page Objects. - [Low-Level Element Interactions](https://vaadin.com/docs/v24/flow/testing/end-to-end/low-level-api.md): A list and description of helpers to use when a high-level API isn't available for interacting with components. - [Taking & Comparing Screenshots](https://vaadin.com/docs/v24/flow/testing/end-to-end/screenshots.md): Explains how to take screenshots and compare them in testing. - [Advanced Testing Methods](https://vaadin.com/docs/v24/flow/testing/end-to-end/advanced-concepts.md): Describes advanced methods for testing a project. - [Making Tests Reliable](https://vaadin.com/docs/v24/flow/testing/end-to-end/reliable-tests.md): Tutorial on creating reliable tests. - [Behavior-Driven Development](https://vaadin.com/docs/v24/flow/testing/end-to-end/bdd.md): A method of developing software starting with writing tests in plain spoken language. - [Running Tests with Maven](https://vaadin.com/docs/v24/flow/testing/end-to-end/maven.md): Using Maven to test projects. - [Running Tests on a CI Server](https://vaadin.com/docs/v24/flow/testing/end-to-end/ci-server.md): Factors to consider and configure when running tests on a CI Server. - [Running Tests on Multiple Browsers](https://vaadin.com/docs/v24/flow/testing/end-to-end/multiple-browsers.md): Advice on running tests on multiple browsers. - [Test Grid Set Up](https://vaadin.com/docs/v24/flow/testing/end-to-end/test-grid.md): Explanations and examples on setting up a test grid. - [Testing with Playwright](https://vaadin.com/docs/v24/flow/testing/playwright.md): How to set up end-to-end testing of a Vaadin application with Playwright. - [Testing with Selenium](https://vaadin.com/docs/v24/flow/testing/selenium.md): Describes how to set up end-to-end testing for a Vaadin application using Selenium. ## Integrations - [Integrations](https://vaadin.com/docs/v24/flow/integrations.md): List of various Java application technologies that may be integrated with Vaadin. - [Hilla](https://vaadin.com/docs/v24/flow/integrations/hilla.md): Create hybrid applications by combining Hilla or React views with Flow views. - [React](https://vaadin.com/docs/v24/flow/integrations/react.md): Using React components in Flow. - [Spring](https://vaadin.com/docs/v24/flow/integrations/spring.md): About using Spring with Vaadin applications. - [Spring Boot](https://vaadin.com/docs/v24/flow/integrations/spring/spring-boot.md): How to use Vaadin with Spring Boot. - [Spring MVC](https://vaadin.com/docs/v24/flow/integrations/spring/spring-mvc.md): How to use Vaadin with Spring MVC. - [Routing](https://vaadin.com/docs/v24/flow/integrations/spring/routing.md): How to route with Spring - much like with Vaadin applications. - [Scopes](https://vaadin.com/docs/v24/flow/integrations/spring/scopes.md): Understanding contexts and scopes in Vaadin and Spring. - [Configuration](https://vaadin.com/docs/v24/flow/integrations/spring/configuration.md): Configuring Spring properties in a Vaadin application. - [Spring Events](https://vaadin.com/docs/v24/flow/integrations/spring/events.md): List of events published to the Spring context. - [OAuth2 Authentication](https://vaadin.com/docs/v24/flow/integrations/spring/oauth2.md): Vaadin and Spring Security configuration for OAuth2 Authentication. - [CDI](https://vaadin.com/docs/v24/flow/integrations/cdi.md): CDI is a framework for injecting dependency objects in different contexts. - [Using CDI Beans](https://vaadin.com/docs/v24/flow/integrations/cdi/instantiated-beans.md): How to use CDI Beans in instantiate components. - [Vaadin CDI Scopes](https://vaadin.com/docs/v24/flow/integrations/cdi/contexts.md): Explains Vaadin CDI scopes and contexts. - [Observable Vaadin Events](https://vaadin.com/docs/v24/flow/integrations/cdi/events.md): List of published events to CDI. - [Vaadin Service Interfaces as CDI Beans](https://vaadin.com/docs/v24/flow/integrations/cdi/service-beans.md): How to implement Vaadin service interfaces as CDI beans. - [Embedding](https://vaadin.com/docs/v24/flow/integrations/embedding.md): How to embed an application in a web page. - [Tutorial](https://vaadin.com/docs/v24/flow/integrations/embedding/exporter.md): Creating a basic embedded application with Vaadin Flow. - [Application Properties](https://vaadin.com/docs/v24/flow/integrations/embedding/properties.md): How to set properties of embedded applications. - [Theming](https://vaadin.com/docs/v24/flow/integrations/embedding/theming.md): How to theme an embedded application. - [Configuring Push](https://vaadin.com/docs/v24/flow/integrations/embedding/push.md): How to configure push in an embedded application. - [Security](https://vaadin.com/docs/v24/flow/integrations/embedding/security.md): How to use an embedded application's properties to secure it. - [Preserve on Refresh](https://vaadin.com/docs/v24/flow/integrations/embedding/preserveonrefresh.md): How to preserve content when an embedded application is refreshed. - [Limitations](https://vaadin.com/docs/v24/flow/integrations/embedding/limitations.md): List of limitations in embedded applications. - [Quarkus](https://vaadin.com/docs/v24/flow/integrations/quarkus.md): Using Quarkus with Vaadin to optimize Java for containers in serverless, cloud and Kubernetes environments. ## Configuration - [Configuration](https://vaadin.com/docs/v24/flow/configuration.md): Instructions on how to configure your application and development environment. - [Properties](https://vaadin.com/docs/v24/flow/configuration/properties.md): Setting configuration properties to change the application behavior. - [Development Mode](https://vaadin.com/docs/v24/flow/configuration/development-mode.md): Develop applications faster with a live-reload, frontend development server. - [Node.js](https://vaadin.com/docs/v24/flow/configuration/development-mode/node-js.md): Installing and using Node.js locally and in CI servers. - [npm/pnpm/bun](https://vaadin.com/docs/v24/flow/configuration/development-mode/npm-pnpm-bun.md): Configuring the frontend package manager. - [Development Tools](https://vaadin.com/docs/v24/flow/configuration/development-mode/dev-tools.md): Vaadin tools that are available when running applications in development mode. - [Component Locator](https://vaadin.com/docs/v24/flow/configuration/development-mode/dev-tools/component-locator.md): Use Component Locator to identify components in views and find their source code in an IDE. - [Development Tools Plugin Support](https://vaadin.com/docs/v24/flow/configuration/development-mode/dev-tools/dev-tools-plugin-support.md): Creating and adding plugins for the Development Tools pop-up. - [Hot Deploy & Live Reload](https://vaadin.com/docs/v24/flow/configuration/live-reload.md): How to live reload and hot deploy for automatically applying source code changes. - [Live Reload with Spring Boot Developer Tools](https://vaadin.com/docs/v24/flow/configuration/live-reload/spring-boot.md): How the default live reload behavior for Spring Boot-based Vaadin applications. - [Live Reload with JRebel](https://vaadin.com/docs/v24/flow/configuration/live-reload/jrebel.md): Describes using JRebel for automatic, real-time updates of Java code. - [Live Reload with HotswapAgent](https://vaadin.com/docs/v24/flow/configuration/live-reload/hotswap-agent.md): Hotswapping Java changes in a running JVM with JetBrains Runtime and HotswapAgent. - [Automatic Restart with Jetty Maven Plugin](https://vaadin.com/docs/v24/flow/configuration/live-reload/jetty.md): Explains automatic restarts with Jetty Maven plugin. - [Automatic Restart with TomEE Maven Plugin](https://vaadin.com/docs/v24/flow/configuration/live-reload/cdi.md): How to enable hotswap when developing Vaadin applications using CDI. - [PWA](https://vaadin.com/docs/v24/flow/configuration/pwa.md): Configuring your application as a Progressive Web Application. - [Web Push](https://vaadin.com/docs/v24/flow/configuration/webpush.md): How to setup, subscribe, and send Web Push notifications from a Vaadin Flow application. - [Maven](https://vaadin.com/docs/v24/flow/configuration/maven.md): Configuring the Vaadin Maven plugin. - [Gradle](https://vaadin.com/docs/v24/flow/configuration/gradle.md): Configuring the Vaadin Gradle plugin. - [Source Control](https://vaadin.com/docs/v24/flow/configuration/source-control.md): Track and manage changes to the source code in a Vaadin project. - [Licenses](https://vaadin.com/docs/v24/flow/configuration/licenses.md): How commercial product license validation works, and how to get and use license keys. - [Daily Active Users](https://vaadin.com/docs/v24/flow/configuration/licenses/daily-active-users.md): Short description - [Feature Flags](https://vaadin.com/docs/v24/flow/configuration/feature-flags.md): How to test experimental features or switch temporarily back to legacy and deprecated features. ## Deploying to Production - [Deploying to Production](https://vaadin.com/docs/v24/flow/production.md): How to to compile and package an application to deploy to a production server. - [Production Build](https://vaadin.com/docs/v24/flow/production/production-build.md): Create an optimized build of applications for production deployment. - [Servlet Container](https://vaadin.com/docs/v24/flow/production/servlet-containers.md): How to deploy an application to traditional servlet containers. - [Spring Boot](https://vaadin.com/docs/v24/flow/production/spring-boot.md): How to deploy a Spring Boot based application. - [Native Image Compilation](https://vaadin.com/docs/v24/flow/production/native.md): Compiling a Vaadin Flow application into a native image using GraalVM. - [Cloud Providers](https://vaadin.com/docs/v24/flow/production/cloud-providers.md): How to deploy your application to third-party cloud hosting providers. - [Amazon Web Services](https://vaadin.com/docs/v24/flow/production/cloud-providers/aws.md): How to deploy a Vaadin application to Amazon Web Services (AWS). - [Azure](https://vaadin.com/docs/v24/flow/production/cloud-providers/azure.md): How to deploy your Vaadin application to Microsoft's Azure cloud. - [Google Cloud](https://vaadin.com/docs/v24/flow/production/cloud-providers/google.md): How to deploy your Vaadin application to Google Cloud. - [Heroku](https://vaadin.com/docs/v24/flow/production/cloud-providers/heroku.md): How to deploy your Vaadin application to Heroku. - [Docker Deployment](https://vaadin.com/docs/v24/flow/production/docker.md): Deploy your Vaadin application using Docker. - [Reverse Proxies](https://vaadin.com/docs/v24/flow/production/reverse-proxy.md): Deploying your Vaadin application behind a reverse proxy. - [Distributed Deployment Architecture](https://vaadin.com/docs/v24/flow/production/distributed-deployment.md): Application deployment on multiple servers. - [Troubleshooting](https://vaadin.com/docs/v24/flow/production/troubleshooting.md): Advice when having problems taking Vaadin applications to production. ## Advanced Topics - [Advanced Topics](https://vaadin.com/docs/v24/flow/advanced.md): A collection of miscellaneous important topics and features that you may need in Vaadin applications. - [Application Lifecycle](https://vaadin.com/docs/v24/flow/advanced/application-lifecycle.md): The more technical details of application deployment, user sessions, and the UI instance lifecycle. - [Localization](https://vaadin.com/docs/v24/flow/advanced/i18n-localization.md): Implementing localization and translation strings using I18NProvider. - [Modifying Bootstrap Page at Runtime](https://vaadin.com/docs/v24/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/v24/flow/advanced/classic-components.md): Build on the latest Vaadin version with familiar component APIs. - [The Loading Indicator](https://vaadin.com/docs/v24/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/v24/flow/advanced/dependency-filter.md): Using the DependencyFilter interface to control which dependencies are loaded. - [Service Init Listener](https://vaadin.com/docs/v24/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/v24/flow/advanced/downloads.md): Download a file or arbitrary content from server to browser. - [History API](https://vaadin.com/docs/v24/flow/advanced/history-api.md): Using the History API to access and modify the browser history from the server side. - [Manage UI State With Signals](https://vaadin.com/docs/v24/flow/advanced/signals.md): Using the signals in Flow to manage UI state reactively in Vaadin applications. - [Uploads](https://vaadin.com/docs/v24/flow/advanced/upload-resources.md): Using UploadHandler to receive an incoming data stream. - [Session & UI Listeners](https://vaadin.com/docs/v24/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/v24/flow/advanced/custom-error-handler.md): Customizing error views related to navigation between routes. - [Customizing System Messages](https://vaadin.com/docs/v24/flow/advanced/customize-system-messages.md): Configuring messages for application invalid state. - [Preserving the State on Refresh](https://vaadin.com/docs/v24/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/v24/flow/advanced/servlet-container-authentication.md): Configuring session-based and servlet container authentication. - [Handling Long-Running Tasks](https://vaadin.com/docs/v24/flow/advanced/long-running-tasks.md): How to handle long-running tasks in Vaadin applications. - [Vaadin Executor](https://vaadin.com/docs/v24/flow/advanced/service-executor.md): Configuring and using Vaadin Executor to run background tasks. - [Browser Access](https://vaadin.com/docs/v24/flow/advanced/browser-access.md): Accessing the browser page using the Page object. - [Loading Resources](https://vaadin.com/docs/v24/flow/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/v24/flow/advanced/css-loading-order.md): Understanding CSS loading order. - [Server Push](https://vaadin.com/docs/v24/flow/advanced/server-push.md): Server push allows you to update the UI from the server for the users without them requesting updates. - [Server-Side Modality](https://vaadin.com/docs/v24/flow/advanced/server-side-modality.md): How to prevent interactions on the server side. - [Custom Instantiator](https://vaadin.com/docs/v24/flow/advanced/custom-instantiators.md): Creating a custom Instantiator implementation. - [Web Storage API](https://vaadin.com/docs/v24/flow/advanced/web-storage-api.md): Using Web Storage API to access browser storage from the server. - [Server to Client Communication](https://vaadin.com/docs/v24/flow/advanced/server-client-communication.md): Technical details of how server to client communications work. - [Preparing for V8 Upgrade Automation](https://vaadin.com/docs/v24/flow/advanced/using-minifinder.md): How to use the Minifinder for Eclipse to determine the potential success of a V8 Upgrade Automation service. ## API Reference - [API Reference](https://vaadin.com/docs/v24/flow/api.md): Links to Application Programming Interface documentation.