# Flow Reference > Build web applications with only Java. Parent index: [Vaadin Docs](https://vaadin.com/docs/v25/llms.txt) ## Overview - [Flow Reference](https://vaadin.com/docs/v25/flow.md): Build web applications with only Java. ## What is Flow? - [What is Flow?](https://vaadin.com/docs/v25/flow/what-is-flow.md): Basics of creating an application using Vaadin Flow. ## UI State - [UI State](https://vaadin.com/docs/v25/flow/ui-state.md): Using signals in Flow to manage UI state reactively in Vaadin applications. - [Component Bindings](https://vaadin.com/docs/v25/flow/ui-state/building-ui.md): Using signals to build reactive user interfaces with component bindings. - [Local Signals](https://vaadin.com/docs/v25/flow/ui-state/local-signals.md): Using local signals for UI-only state management. - [Effects and Computed Signals](https://vaadin.com/docs/v25/flow/ui-state/effects-computed.md): Using effects and computed signals for reactive UI updates. - [Shared Signals](https://vaadin.com/docs/v25/flow/ui-state/shared-signals.md): Using shared signals for thread-safe, multi-user state management. - [Element Bindings](https://vaadin.com/docs/v25/flow/ui-state/element-bindings.md): Binding signals to Element properties, attributes, and styles for advanced use cases. - [Transactions](https://vaadin.com/docs/v25/flow/ui-state/transactions.md): Using transactions for atomic signal operations. - [Usage Examples](https://vaadin.com/docs/v25/flow/ui-state/usage-examples.md): Practical guides for solving common state management challenges with Signals - [Form Binding with Dynamic Validation](https://vaadin.com/docs/v25/flow/ui-state/usage-examples/binder-integration.md): Combine Vaadin Binder with signals for forms where validation rules depend on other field values, enabling reactive cross-field validation with dynamic error messages. - [Conditional Visibility](https://vaadin.com/docs/v25/flow/ui-state/usage-examples/conditional-visibility.md): Use signals to control component visibility based on form values. - [Real-Time Dashboard](https://vaadin.com/docs/v25/flow/ui-state/usage-examples/realtime-dashboard.md): Learn how to build a real-time dashboard using signals for reactive state management. - [Shopping Cart Example](https://vaadin.com/docs/v25/flow/ui-state/usage-examples/shopping-cart-example.md): Building a reactive shopping cart with signals that automatically updates totals and manages dynamic lists of items. - [In-Memory Grid Filtering](https://vaadin.com/docs/v25/flow/ui-state/usage-examples/grid-filtering.md): Use signals to implement reactive client-side filtering for a in-memory data grid, where the displayed items update automatically as filter criteria change. - [CRUD Form Editor](https://vaadin.com/docs/v25/flow/ui-state/usage-examples/crud-editor.md): Building an form editor CRUD interface for creating and updating data in a grid using signals. ## Routing & Navigation - [Routing & Navigation](https://vaadin.com/docs/v25/flow/routing.md): Explains routing, how URLs are mapped to views, and navigating applications. - [Defining Routes](https://vaadin.com/docs/v25/flow/routing/route.md): Using the Route annotation to define route URLs. - [Navigating Between Routes](https://vaadin.com/docs/v25/flow/routing/navigation.md): Ways in which to switch between routes or views. - [Menu Configuration](https://vaadin.com/docs/v25/flow/routing/menu-configuration.md): Collecting menu annotated routes for menu generation. - [Route Parameters](https://vaadin.com/docs/v25/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/v25/flow/routing/updating-url-parameters.md): How to update URL parameters manually and without navigation. - [Navigation Lifecycle](https://vaadin.com/docs/v25/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/v25/flow/routing/layout.md): Explains router layouts and nested router targets. - [Retrieving Routes](https://vaadin.com/docs/v25/flow/routing/retrieving-routes.md): How to retrieve the generated route for registered navigation targets. - [Router Exception Handling](https://vaadin.com/docs/v25/flow/routing/exceptions.md): Handling router exceptions with the Router class. - [Getting Registered Routes](https://vaadin.com/docs/v25/flow/routing/registered-routes.md): How to retrieve all registered routes. - [Updating Page Title on Navigation](https://vaadin.com/docs/v25/flow/routing/page-titles.md): How to update a page title during navigation. - [Route Hierarchy](https://vaadin.com/docs/v25/flow/routing/route-hierarchy.md): How to declare logical parent routes and resolve the route hierarchy for breadcrumbs and menus. - [Registering Routes Dynamically](https://vaadin.com/docs/v25/flow/routing/dynamic.md): How to register routes and route templates, dynamically. - [Additional Guides](https://vaadin.com/docs/v25/flow/routing/additional-guides.md): Additional guides related to routing and navigation. - [Query Parameters](https://vaadin.com/docs/v25/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/v25/flow/routing/additional-guides/route-templates.md): How to customize methods to include parameters in a route. ## Forms & Data Binding - [Forms & Data Binding](https://vaadin.com/docs/v25/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/v25/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/v25/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/v25/flow/binding-data/components-binder-load.md): Loading business objects and then saving them. - [Binding Beans to Forms](https://vaadin.com/docs/v25/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/v25/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/v25/flow/binding-data/field.md): How to create a field component. ## Browser APIs - [Browser APIs](https://vaadin.com/docs/v25/flow/browser-apis.md): Server-side Java APIs for accessing browser and web-platform features. - [Clipboard](https://vaadin.com/docs/v25/flow/browser-apis/clipboard-api.md): Using the Clipboard API to copy text, HTML, and images to the user's clipboard, read clipboard content, and handle paste events from the server. - [Fullscreen](https://vaadin.com/docs/v25/flow/browser-apis/fullscreen-api.md): Using the Fullscreen API to enter, exit, and observe fullscreen mode from the server side. - [Screen Orientation](https://vaadin.com/docs/v25/flow/browser-apis/screen-orientation-api.md): Reading device orientation and locking the screen from the server. - [Geolocation](https://vaadin.com/docs/v25/flow/browser-apis/geolocation-api.md): Using the Geolocation API to access device location from the server. - [History](https://vaadin.com/docs/v25/flow/browser-apis/history-api.md): Using the History API to access and modify the browser history from the server side. - [Page Visibility](https://vaadin.com/docs/v25/flow/browser-apis/page-visibility-api.md): Reacting to browser tab visibility and focus changes from the server. - [Wake Lock](https://vaadin.com/docs/v25/flow/browser-apis/wake-lock-api.md): Using the Wake Lock API to keep the device screen on from the server. - [Web Share](https://vaadin.com/docs/v25/flow/browser-apis/web-share-api.md): Invoking the browser's native share sheet from the server side. - [Web Storage](https://vaadin.com/docs/v25/flow/browser-apis/web-storage-api.md): Using Web Storage API to access browser storage from the server. ## Localization - [Localization](https://vaadin.com/docs/v25/flow/i18n.md): Translate strings, switch languages, and localize numbers and dates. - [Custom I18N Provider](https://vaadin.com/docs/v25/flow/i18n/custom-i18n-provider.md): Implementing a custom I18NProvider for advanced localization needs. - [RTL Support for Custom Elements](https://vaadin.com/docs/v25/flow/i18n/custom-element-rtl.md): Adding right-to-left support to custom web components and styles. ## Security - [Security](https://vaadin.com/docs/v25/flow/security.md): Documentation on better security with Vaadin products and related software. - [Enabling Security](https://vaadin.com/docs/v25/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/v25/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/v25/flow/security/advanced-topics.md): Documentation of advanced security topics. - [Security Architecture](https://vaadin.com/docs/v25/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/v25/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/v25/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/v25/flow/security/advanced-topics/frequent-issues.md): Lists perceived issues reported by users as vulnerabilities. - [Securing Plain Java Applications](https://vaadin.com/docs/v25/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/v25/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/v25/flow/security/advanced-topics/external-configuration.md): Advice on storing sensitive data in Spring Boot applications. - [Content Security Policy](https://vaadin.com/docs/v25/flow/security/advanced-topics/strict-csp.md): How to enable strict Content Security Policy. ## Testing - [Testing](https://vaadin.com/docs/v25/flow/testing.md): Vaadin provides browserless testing and end-to-end testing approaches for your applications. - [Browserless Testing](https://vaadin.com/docs/v25/flow/testing/browserless.md): APIs, lifecycle guarantees, and framework integrations of Vaadin browserless testing. - [Test Environment and Lifecycle](https://vaadin.com/docs/v25/flow/testing/browserless/test-environment.md): Browserless test base classes, environment lifecycle, route scanning, navigation, and simulated server round trips. - [Querying Components](https://vaadin.com/docs/v25/flow/testing/browserless/component-query.md): Details and examples on accessing components within a browserless test. - [Component Testers](https://vaadin.com/docs/v25/flow/testing/browserless/component-testers.md): Tester selection, supported actions, usability checks, constraints, and custom tester discovery. - [Component Locators](https://vaadin.com/docs/v25/flow/testing/browserless/locators.md): Typed component locator entry points, filters, resolution caching, custom locators, and opt-in interfaces. - [Testing Overlay Components](https://vaadin.com/docs/v25/flow/testing/browserless/overlay-components.md): How to test context menus, menu bars, and other overlay-based components in browserless tests. - [UI Snapshots](https://vaadin.com/docs/v25/flow/testing/browserless/snapshots.md): Failure snapshot extension behavior and the format of server-side component tree output. - [Application, User, and Window Contexts](https://vaadin.com/docs/v25/flow/testing/browserless/multi-user.md): Browserless context ownership, thread affinity, window activation, security isolation, factories, and configuration. - [Signal Test Environment](https://vaadin.com/docs/v25/flow/testing/browserless/testing-signals.md): Signal propagation, background task processing, shared-signal updates, and write confirmation in browserless tests. - [JUnit 6 Extensions](https://vaadin.com/docs/v25/flow/testing/browserless/extensions.md): Composition-based browserless test setup, per-method and per-class lifecycles, and extension configuration. - [Test Configuration](https://vaadin.com/docs/v25/flow/testing/browserless/test-configuration.md): Set Vaadin application properties, feature flags, and Lookup services for a single test class or test method. - [Spring Security Integration](https://vaadin.com/docs/v25/flow/testing/browserless/spring-security.md): Authentication timing and navigation access-control requirements for Spring browserless tests. - [Spring Test Lifecycle](https://vaadin.com/docs/v25/flow/testing/browserless/environment-differences.md): The order in which Spring and the browserless environment set up a test, and how it affects session-scoped beans and authentication. - [CDI Test Integration](https://vaadin.com/docs/v25/flow/testing/browserless/cdi.md): Lifecycle ordering, CDI bean discovery, scopes, servlet integration, and route registration in Weld-based browserless tests. - [Quarkus Integration](https://vaadin.com/docs/v25/flow/testing/browserless/quarkus.md): Quarkus browserless test initialization, dependency injection, test profiles, and security integration. - [End-to-End Testing](https://vaadin.com/docs/v25/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/v25/flow/testing/end-to-end/getting-started.md): Tutorial to begin doing end-to-end testing. - [Installing WebDrivers](https://vaadin.com/docs/v25/flow/testing/end-to-end/installing-webdrivers.md): How to install the proper, browser-specific WebDriver for tests. - [Creating Tests](https://vaadin.com/docs/v25/flow/testing/end-to-end/creating-tests.md): How to create tests using TestBench. - [Tests with Page Objects](https://vaadin.com/docs/v25/flow/testing/end-to-end/page-objects.md): Creating maintainable tests using Page Objects. - [Low-Level Element Interactions](https://vaadin.com/docs/v25/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/v25/flow/testing/end-to-end/screenshots.md): Explains how to take screenshots and compare them in testing. - [Advanced Testing Methods](https://vaadin.com/docs/v25/flow/testing/end-to-end/advanced-concepts.md): Describes advanced methods for testing a project. - [Making Tests Reliable](https://vaadin.com/docs/v25/flow/testing/end-to-end/reliable-tests.md): Tutorial on creating reliable tests. - [Behavior-Driven Development](https://vaadin.com/docs/v25/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/v25/flow/testing/end-to-end/maven.md): Using Maven to test projects. - [Running Tests on a CI Server](https://vaadin.com/docs/v25/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/v25/flow/testing/end-to-end/multiple-browsers.md): Advice on running tests on multiple browsers. - [Test Grid Set Up](https://vaadin.com/docs/v25/flow/testing/end-to-end/test-grid.md): Explanations and examples on setting up a test grid. - [Load Testing](https://vaadin.com/docs/v25/flow/testing/load-testing.md): Reuse TestBench end-to-end tests to generate k6 load tests for your Vaadin application. - [Load Testing Thresholds](https://vaadin.com/docs/v25/flow/testing/load-testing/thresholds.md): How to set and control failure thresholds for the load tests - [Load Testing Response Checks](https://vaadin.com/docs/v25/flow/testing/load-testing/response-checks.md): How to add checks for responses to load test responses - [Load Profiles and Ramping](https://vaadin.com/docs/v25/flow/testing/load-testing/load-profiles.md): How to set and control load profiles and user ramping for the load tests - [Load Testing With Playwright](https://vaadin.com/docs/v25/flow/testing/load-testing/playwright.md): Reuse Playwright end-to-end tests to generate k6 load tests for your Vaadin application. - [Load Testing Utilities](https://vaadin.com/docs/v25/flow/testing/load-testing/utilities.md): Utility Maven goals for managing the application server during load tests. - [Testing with Playwright](https://vaadin.com/docs/v25/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/v25/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/v25/flow/integrations.md): List of various Java application technologies that may be integrated with Vaadin. - [Hilla](https://vaadin.com/docs/v25/flow/integrations/hilla.md): Create hybrid applications by combining Hilla or React views with Flow views. - [React](https://vaadin.com/docs/v25/flow/integrations/react.md): Using React components in Flow. - [Spring](https://vaadin.com/docs/v25/flow/integrations/spring.md): About using Spring with Vaadin applications. - [Spring Boot](https://vaadin.com/docs/v25/flow/integrations/spring/spring-boot.md): How to use Vaadin with Spring Boot. - [Spring MVC](https://vaadin.com/docs/v25/flow/integrations/spring/spring-mvc.md): How to use Vaadin with Spring MVC. - [Routing](https://vaadin.com/docs/v25/flow/integrations/spring/routing.md): How to route with Spring - much like with Vaadin applications. - [Scopes](https://vaadin.com/docs/v25/flow/integrations/spring/scopes.md): Understanding contexts and scopes in Vaadin and Spring. - [Configuration](https://vaadin.com/docs/v25/flow/integrations/spring/configuration.md): Configuring Spring properties in a Vaadin application. - [Spring Events](https://vaadin.com/docs/v25/flow/integrations/spring/events.md): List of events published to the Spring context. - [OAuth2 Authentication](https://vaadin.com/docs/v25/flow/integrations/spring/oauth2.md): Vaadin and Spring Security configuration for OAuth2 Authentication. - [CDI](https://vaadin.com/docs/v25/flow/integrations/cdi.md): CDI is a framework for injecting dependency objects in different contexts. - [Using CDI Beans](https://vaadin.com/docs/v25/flow/integrations/cdi/instantiated-beans.md): How to use CDI Beans in instantiate components. - [Vaadin CDI Scopes](https://vaadin.com/docs/v25/flow/integrations/cdi/contexts.md): Explains Vaadin CDI scopes and contexts. - [Observable Vaadin Events](https://vaadin.com/docs/v25/flow/integrations/cdi/events.md): List of published events to CDI. - [Vaadin Service Interfaces as CDI Beans](https://vaadin.com/docs/v25/flow/integrations/cdi/service-beans.md): How to implement Vaadin service interfaces as CDI beans. - [Embedding](https://vaadin.com/docs/v25/flow/integrations/embedding.md): How to embed an application in a web page. - [Tutorial](https://vaadin.com/docs/v25/flow/integrations/embedding/exporter.md): Creating a basic embedded application with Vaadin Flow. - [Application Properties](https://vaadin.com/docs/v25/flow/integrations/embedding/properties.md): How to set properties of embedded applications. - [Configuring Push](https://vaadin.com/docs/v25/flow/integrations/embedding/push.md): How to configure push in an embedded application. - [Security](https://vaadin.com/docs/v25/flow/integrations/embedding/security.md): How to use an embedded application's properties to secure it. - [Preserve on Refresh](https://vaadin.com/docs/v25/flow/integrations/embedding/preserveonrefresh.md): How to preserve content when an embedded application is refreshed. - [Limitations](https://vaadin.com/docs/v25/flow/integrations/embedding/limitations.md): List of limitations in embedded applications. - [Quarkus](https://vaadin.com/docs/v25/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/v25/flow/configuration.md): Instructions on how to configure your application and development environment. - [Properties](https://vaadin.com/docs/v25/flow/configuration/properties.md): Setting configuration properties to change the application behavior. - [Development Mode](https://vaadin.com/docs/v25/flow/configuration/development-mode.md): Develop applications faster with a live-reload, frontend development server. - [Node.js](https://vaadin.com/docs/v25/flow/configuration/development-mode/node-js.md): Installing and using Node.js locally and in CI servers. - [npm/pnpm/bun](https://vaadin.com/docs/v25/flow/configuration/development-mode/npm-pnpm-bun.md): Configuring the frontend package manager. - [Hot Deploy & Live Reload](https://vaadin.com/docs/v25/flow/configuration/live-reload.md): How to live reload and hot deploy for automatically applying source code changes. - [Dev Loop CLI](https://vaadin.com/docs/v25/flow/configuration/live-reload/dev-loop-cli.md): Own the edit-to-running-app loop with vaadin-dev, a CLI that compiles, hot-swaps, and reports whether your change is actually live. - [Live Reload with Spring Boot Developer Tools](https://vaadin.com/docs/v25/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/v25/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/v25/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/v25/flow/configuration/live-reload/jetty.md): Explains automatic restarts with Jetty Maven plugin. - [Automatic Restart with TomEE Maven Plugin](https://vaadin.com/docs/v25/flow/configuration/live-reload/cdi.md): How to enable hotswap when developing Vaadin applications using CDI. - [PWA](https://vaadin.com/docs/v25/flow/configuration/pwa.md): Configuring your application as a Progressive Web Application. - [Web Push](https://vaadin.com/docs/v25/flow/configuration/webpush.md): How to setup, subscribe, and send Web Push notifications from a Vaadin Flow application. - [Maven](https://vaadin.com/docs/v25/flow/configuration/maven.md): Configuring the Vaadin Maven plugin. - [Gradle](https://vaadin.com/docs/v25/flow/configuration/gradle.md): Configuring the Vaadin Gradle plugin. - [Source Control](https://vaadin.com/docs/v25/flow/configuration/source-control.md): Track and manage changes to the source code in a Vaadin project. - [Licenses](https://vaadin.com/docs/v25/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/v25/flow/configuration/licenses/daily-active-users.md): Short description - [Feature Flags](https://vaadin.com/docs/v25/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/v25/flow/production.md): How to to compile and package an application to deploy to a production server. - [Production Build](https://vaadin.com/docs/v25/flow/production/production-build.md): Create an optimized build of applications for production deployment. - [Source Maps](https://vaadin.com/docs/v25/flow/production/source-maps.md): Generating source maps for a production build to get readable client-side stack traces. - [Servlet Container](https://vaadin.com/docs/v25/flow/production/servlet-containers.md): How to deploy an application to traditional servlet containers. - [Spring Boot](https://vaadin.com/docs/v25/flow/production/spring-boot.md): How to deploy a Spring Boot based application. - [Native Image Compilation](https://vaadin.com/docs/v25/flow/production/native.md): Compiling a Vaadin Flow application into a native image using GraalVM. - [Cloud Providers](https://vaadin.com/docs/v25/flow/production/cloud-providers.md): How to deploy your application to third-party cloud hosting providers. - [Amazon Web Services](https://vaadin.com/docs/v25/flow/production/cloud-providers/aws.md): How to deploy a Vaadin application to Amazon Web Services (AWS). - [Azure](https://vaadin.com/docs/v25/flow/production/cloud-providers/azure.md): How to deploy your Vaadin application to Microsoft's Azure cloud. - [Google Cloud](https://vaadin.com/docs/v25/flow/production/cloud-providers/google.md): How to deploy your Vaadin application to Google Cloud. - [Heroku](https://vaadin.com/docs/v25/flow/production/cloud-providers/heroku.md): How to deploy your Vaadin application to Heroku. - [Docker Deployment](https://vaadin.com/docs/v25/flow/production/docker.md): Deploy your Vaadin application using Docker. - [Reverse Proxies](https://vaadin.com/docs/v25/flow/production/reverse-proxy.md): Deploying your Vaadin application behind a reverse proxy. - [Distributed Deployment Architecture](https://vaadin.com/docs/v25/flow/production/distributed-deployment.md): Application deployment on multiple servers. - [Troubleshooting](https://vaadin.com/docs/v25/flow/production/troubleshooting.md): Advice when having problems taking Vaadin applications to production. ## AI Integration - [AI Integration](https://vaadin.com/docs/v25/flow/ai-support.md): Vaadin provides UI interfaces and an AI orchestrator for building AI-powered UIs with Vaadin, handling streaming, history, attachments, and tool calling. - [Component Interfaces](https://vaadin.com/docs/v25/flow/ai-support/component-interfaces.md): AI interface contracts for input, message list, message, and file receiver components used by the AIOrchestrator. - [LLM Providers](https://vaadin.com/docs/v25/flow/ai-support/llm-providers.md): Connect the AIOrchestrator to Spring AI, LangChain4j, or a custom LLM framework using the LLMProvider interface. - [File Attachments](https://vaadin.com/docs/v25/flow/ai-support/file-attachments.md): Enable file uploads in the AIOrchestrator to send attachments to the LLM with user prompts. - [Session Context](https://vaadin.com/docs/v25/flow/ai-support/session-context.md): Pass per-turn ambient information -- date and time, tenant, locale, page state -- to the LLM through the AIOrchestrator. - [Request Interception](https://vaadin.com/docs/v25/flow/ai-support/request-interception.md): Validate, sanitize, or replace user prompts and attachments -- or reject them -- before the AIOrchestrator sends anything to the LLM. - [Request & Response Listeners](https://vaadin.com/docs/v25/flow/ai-support/listeners.md): Observe each prompt and its outcome with orchestrator-level listeners, including the finish reason and token usage of each LLM turn. - [Tool Calling & Programmatic Prompts](https://vaadin.com/docs/v25/flow/ai-support/tool-calling.md): Register tool objects for LLM invocation and send prompts programmatically without a Message Input component. - [Controllers](https://vaadin.com/docs/v25/flow/ai-support/controllers.md): Extend the AIOrchestrator with reusable, framework-agnostic tools and lifecycle hooks using the AIController interface. - [Conversation History & Session Persistence](https://vaadin.com/docs/v25/flow/ai-support/conversation-history.md): Persist and restore conversation history, and reconnect the AIOrchestrator after session deserialization. - [AI-Generated Grids](https://vaadin.com/docs/v25/flow/ai-support/ai-powered-grid.md): Use GridAIController to let users populate a Grid from the application database using natural language. - [AI-Generated Charts](https://vaadin.com/docs/v25/flow/ai-support/ai-powered-chart.md): Use ChartAIController to let users build and update Highcharts visualizations from the application database using natural language. - [AI Form Filler](https://vaadin.com/docs/v25/flow/ai-support/ai-powered-form.md): Use FormAIController to let users fill any Vaadin form from natural-language input or attached files. ## Component Internals - [Component Internals](https://vaadin.com/docs/v25/flow/component-internals.md): Technical reference for Vaadin's component architecture and client-server communication model. Covers properties, events, RPC, the Element API, and other low-level mechanisms used when building custom components. - [Basics](https://vaadin.com/docs/v25/flow/component-internals/basic.md): Creating a Vaadin component with a client-side element and a server-side Java API. - [Properties](https://vaadin.com/docs/v25/flow/component-internals/properties.md): Declaring and synchronizing Vaadin component properties between client and server. - [Events](https://vaadin.com/docs/v25/flow/component-internals/events.md): Declaring, listening to, and firing events in Vaadin components. - [Remote Procedure Calls](https://vaadin.com/docs/v25/flow/component-internals/client-server-rpc.md): Calling client-side functions from the server, and server-side methods from the client. - [Component Containers](https://vaadin.com/docs/v25/flow/component-internals/container.md): Creating components that can contain other components. - [Enabled State](https://vaadin.com/docs/v25/flow/component-internals/enabled-state.md): How enabling and disabling UI components affects user interaction and server communication in Vaadin applications. - [Visibility](https://vaadin.com/docs/v25/flow/component-internals/visibility.md): How component visibility works in Vaadin. - [Mixin Interfaces](https://vaadin.com/docs/v25/flow/component-internals/mixins.md): Using mixin interfaces to add a common API to Vaadin components. - [Keyboard Shortcuts](https://vaadin.com/docs/v25/flow/component-internals/shortcut.md): Adding keyboard shortcuts to components for a better user experience. - [Drag & Drop](https://vaadin.com/docs/v25/flow/component-internals/dnd.md): Dragging and dropping between components as well as between the UI and the operating system. - [Drag Source](https://vaadin.com/docs/v25/flow/component-internals/dnd/drag-source.md): Making any component draggable and configuring the drag operation. - [Drop Target](https://vaadin.com/docs/v25/flow/component-internals/dnd/drop-target.md): Make any component a drop target that the user can drop things on to. - [Element API](https://vaadin.com/docs/v25/flow/component-internals/element-api.md): Control the HTML DOM in the browser from the server side using the Element API. - [Properties & Attributes](https://vaadin.com/docs/v25/flow/component-internals/element-api/properties-attributes.md): Get and set DOM properties and attributes. - [Element Events](https://vaadin.com/docs/v25/flow/component-internals/element-api/event-listener.md): Listen to any browser events on the server. - [Calling JavaScript](https://vaadin.com/docs/v25/flow/component-internals/element-api/calling-javascript.md): Call JavaScript functions from the server. - [Dynamic Styling](https://vaadin.com/docs/v25/flow/component-internals/element-api/dynamic-styling.md): Style elements dynamically with class names and inline styles. - [Shadow Roots](https://vaadin.com/docs/v25/flow/component-internals/element-api/shadow-root.md): Create shadow roots from the server. - [Integrating Web Components](https://vaadin.com/docs/v25/flow/component-internals/web-components.md): How to create new HTML tags with custom names. - [Creating a Java API](https://vaadin.com/docs/v25/flow/component-internals/web-components/java-api-for-a-web-component.md): Reference for the APIs used to create a Java wrapper for a web component. - [Debugging](https://vaadin.com/docs/v25/flow/component-internals/web-components/debugging-a-web-component-integration.md): Explains the most common integration issues and what to do about them. - [Web Components Intro](https://vaadin.com/docs/v25/flow/component-internals/web-components/introduction-to-webcomponents.md): Introduction to Web Components, new HTML tags with custom names. - [Templates](https://vaadin.com/docs/v25/flow/component-internals/templates.md): How to build views declaratively using templates. - [Template-based](https://vaadin.com/docs/v25/flow/component-internals/templates/basic.md): How to create a component using only the Template API. - [Binding to Components](https://vaadin.com/docs/v25/flow/component-internals/templates/components.md): How to use the @Id annotation to reference a JavaScript LitElement template. - [Combining with Binder](https://vaadin.com/docs/v25/flow/component-internals/templates/and-binder.md): How to create a fully functional template-binder view. - [Sub-Templates](https://vaadin.com/docs/v25/flow/component-internals/templates/subtemplate.md): How to create a parent LitElement template that includes a child LitElement template. - [Adding Server-side Components](https://vaadin.com/docs/v25/flow/component-internals/templates/components-in-slot.md): How to add server-side components to templates. - [Styling](https://vaadin.com/docs/v25/flow/component-internals/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/v25/flow/component-internals/templates/component-integration.md): How to detect whether a component is part of a template. - [Limitations](https://vaadin.com/docs/v25/flow/component-internals/templates/limitations.md): A list of limitations of Template. ## Advanced Topics - [Advanced Topics](https://vaadin.com/docs/v25/flow/advanced.md): A collection of miscellaneous important topics and features that you may need in Vaadin applications. - [Application Lifecycle](https://vaadin.com/docs/v25/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/v25/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/v25/flow/advanced/classic-components.md): Build on the latest Vaadin version with familiar component APIs. - [The Loading Indicator](https://vaadin.com/docs/v25/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/v25/flow/advanced/dependency-filter.md): Using the DependencyFilter interface to control which dependencies are loaded. - [Service Init Listener](https://vaadin.com/docs/v25/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/v25/flow/advanced/downloads.md): Download a file or arbitrary content from server to browser. - [Uploads](https://vaadin.com/docs/v25/flow/advanced/upload-resources.md): Using UploadHandler to receive an incoming data stream. - [Session & UI Listeners](https://vaadin.com/docs/v25/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/v25/flow/advanced/custom-error-handler.md): Customizing error views related to navigation between routes. - [Customizing System Messages](https://vaadin.com/docs/v25/flow/advanced/customize-system-messages.md): Configuring messages for application invalid state. - [Preserving the State on Refresh](https://vaadin.com/docs/v25/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/v25/flow/advanced/servlet-container-authentication.md): Configuring session-based and servlet container authentication. - [Vaadin Executor](https://vaadin.com/docs/v25/flow/advanced/service-executor.md): Configuring and using Vaadin Executor to run background tasks. - [Browser Access](https://vaadin.com/docs/v25/flow/advanced/browser-access.md): Accessing the browser page using the Page object. - [Loading Resources](https://vaadin.com/docs/v25/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/v25/flow/advanced/server-push.md): Configuration reference for server push in Vaadin Flow applications. - [Server-Side Modality](https://vaadin.com/docs/v25/flow/advanced/server-side-modality.md): How to prevent interactions on the server side. - [Custom Instantiator](https://vaadin.com/docs/v25/flow/advanced/custom-instantiators.md): Creating a custom Instantiator implementation. - [Server to Client Communication](https://vaadin.com/docs/v25/flow/advanced/server-client-communication.md): Technical details of how server to client communications work. - [Nullability Annotations](https://vaadin.com/docs/v25/flow/advanced/nullability.md): Using JSpecify annotations and NullAway for compile-time null safety in Vaadin projects. - [Service Event Bus](https://vaadin.com/docs/v25/flow/advanced/session-lock-and-rpc-listeners.md): Observing session locks, client-to-server RPC invocations, and data provider queries through the VaadinService event bus. - [Preparing for V8 Upgrade Automation](https://vaadin.com/docs/v25/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/v25/flow/api.md): Links to Application Programming Interface documentation.