Configuration and Dev Tools

This section documents the current Vaadin release line — Vaadin 24 LTS / 25.x, Java 17+, Spring Boot 3 / Jakarta EE 10 — as published at the official Vaadin documentation, which is the reference these pages are written and verified against. No specific patch version is pinned. Flow (server-side Java) is the authoring style used throughout, with Hilla / React shown where it differs; Vaadin 7 and the pre-Flow architecture appear only as migration contrast.

This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production, since Vaadin ships major releases roughly twice a year and its ecosystem iterates.

This section’s bibliography lists the reference material consulted while preparing these pages.

Vaadin needs very little configuration to run, and its development mode gives a tight edit-refresh loop. This page follows Configuration and Development mode.

Properties

On Spring Boot, Vaadin reads vaadin.* keys from application.properties:

vaadin.productionMode=false
vaadin.launch-browser=true
vaadin.frontend.hotdeploy=true
vaadin.allowed-packages=com.example.views
vaadin.pnpm.enable=true
vaadin.closeIdleSessions=true
vaadin.heartbeatInterval=300

Outside Spring Boot the same settings are servlet init parameters or -Dvaadin.<key> system properties. The full list is at Configuration properties.

Development mode and the frontend toolchain

In development mode Vaadin runs a frontend dev server that compiles and serves TypeScript / CSS on demand and hot-reloads it in the browser. It needs Node.js; Vaadin downloads a project-local copy if none is on the PATH. The package manager defaults to npm; enable pnpm (vaadin.pnpm.enable=true) or bun (vaadin.bun.enable=true) for faster, disk-efficient installs.

The generated package.json and vite.config.ts are managed by Vaadin — edit them only through the annotations below, or Vaadin will overwrite your changes.

Hot deployment and live reload

  • Frontend changes (anything under src/main/frontend) are pushed to the browser with no restart.

  • Java changes need the class reloaded. Options, fastest first:

    • JRebel or HotswapAgent — reload changed classes in place, no restart.

    • Spring Boot DevTools — restarts the context on a classpath change (add the dependency; Vaadin integrates its live-reload trigger).

    • Plain restart from the IDE.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <optional>true</optional>
</dependency>

Feature flags

Preview features are gated behind flags in src/main/resources/vaadin-featureflags.properties (or the dev tools window’s Experimental Features tab):

com.vaadin.experimental.exampleFeatureFlag=true

The dev tools window and Copilot

Running in development mode, a small Vaadin logo in the corner opens the dev tools window: build and browser messages, the feature-flag list, and a live-reload indicator. Vaadin Copilot extends it into a visual, AI-assisted editor — select a component in the running app to inspect and edit it, adjust the theme, or scaffold a view — and writes the changes back to source. See Copilot.

Adding frontend dependencies

Do not hand-edit package.json. Declare npm packages and modules with annotations on any component or the shell, and Vaadin adds them to the build:

@NpmPackage(value = "sortablejs", version = "1.15.2")
@JsModule("./drag-reorder.js")
public class ReorderableList extends Component { }

Maven and Gradle

Maven is the default (vaadin-maven-plugin, prepare-frontend + build-frontend goals). Gradle is fully supported through the com.vaadin plugin:

plugins {
    id 'org.springframework.boot' version '3.3.0'
    id 'com.vaadin' version '24.5.0'
}

vaadin {
    productionMode = false
}

The production build is ./gradlew -Pvaadin.productionMode=true bootJar — see Production and Deployment.

See also