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
-
Getting Started — creating a project and its structure.
-
Production and Deployment — the production build and its properties.
-
The Element API and Web Components —
@NpmPackage/@JsModulein context. -
Spring Boot Integration — Spring-specific properties and DevTools.
-
Configuration — the official reference.