Docs

Documentation versions (currently viewingVaadin 24)

Configuration Properties

Setting configuration properties to change the application behavior.

You can change the behavior of Vaadin applications by setting the configuration properties. Either set them through the system properties, or with the servlet initialization parameters. See the full list of properties for details.

See also the Spring-specific instructions for Spring-based applications.

System Properties

When using Java system properties to set Vaadin application parameters, the vaadin. prefix has to be specified before each parameter name. The following shows how to set the pnpm.enable system property when executing a Maven goal from the command-line:

mvn jetty:run -Dvaadin.pnpm.enable=true

You can also configure system properties for Maven plugin executions. For instance, the following sets a Vaadin-specific system property when running the Jetty Maven plugin:

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <configuration>
        <systemProperties>
            <systemProperty>
                <name>vaadin.pushMode</name>
                <value>disabled</value>
            </systemProperty>
        </systemProperties>
    </configuration>
</plugin>

Servlet Initialization Parameters

Another option for setting configuration properties is to use servlet initialization parameters. Use the Servlet 3.0 @WebServlet annotation. This requires you to configure your servlet — unless you want Vaadin Flow to do it — using default parameter values.

@WebServlet(urlPatterns = "/*", name = "myservlet", asyncSupported = true, loadOnStartup = 1,
    initParams = { @WebInitParam(name = "pnpm.enable", value = "true") })
public class MyServlet extends VaadinServlet {
}

Yet another approach is to use the web.xml file. Below is an example of one:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
  id="WebApp_ID" version="3.0"
  xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>
        com.vaadin.flow.server.VaadinServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>

    <init-param>
      <param-name>pnpm.enable</param-name>
      <param-value>true</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>
Note
System Properties Override Servlet Parameters
When a system property and a servlet parameter have the same name, the system property is used, while the servlet parameter is ignored.

Properties Defined

The following table contains the properties that are defined in the com.vaadin.server.DeploymentConfiguration, com.vaadin.flow.server.Constants and com.vaadin.flow.server.InitParameters classes. They’re listed in alphabetical order. If you use Spring Boot, you should add the vaadin. prefix to them (e.g., change brotli to vaadin.brotli).

In the table Modes used are Development, Production, Runtime, Build and Bundle. Development and Production parameters are used in execution of the application in these modes. Runtime parameter changes functionality during execution and doesn’t depend on development/production modes. Build parameter changes build time functionality. Bundle parameter controls parts of frontend bundle creation.

Property Name

System Property

Description

Default Value

Mode

applicationIdentifier

vaadin.applicationIdentifier

Application identifier that’s generated by default based on the project build settings. The property is used only for the moment by the daily active users license model. It can be configured by developers to differentiate end-users distribution between the same applications running in a cluster — ones that have the same group and artifact IDs.

default-project-id

Runtime

brotli

vaadin.brotli

Determines whether pre-compressed Brotli files should be used if accepted by the browser. Brotli files are created during a production build. The property is used only in production mode. Set to false if you want to serve uncompressed static resources.

true

Runtime

closeIdleSessions

vaadin.closeIdleSessions

Closes the Vaadin session if no UI is active. A UI is considered active if it’s open on the client-side and has any activity — besides heartbeat requests. By default, heartbeat requests keep the Vaadin session open even when there isn’t any user interaction. Set to true to close idle sessions. See heartbeatInterval below.

false

Runtime

devmode.componentTracker.enabled

vaadin.devmode.componentTracker.enabled

Enable component tracking in development mode.

true

Development

devmode.devTools.enabled

vaadin.devmode.devTools.enabled

Parameter for enabling development tools. Production mode always evaluates as false.

true

Development

devmode.frontendExtraFileExtensions

vaadin.devmode.frontendExtraFileExtensions

Define additional frontend file extensions to copy from jar files to the application frontend/generated/jar-resources. Default extension copied are .js, .js.map, .ts, .ts.map, .tsx, .tsx.map, .css, and .css.map.

``

Development

devmode.hostsAllowed

vaadin.devmode.hostsAllowed

Defines the hosts allowed to access Vaadin development tools. A comma-separated list of allowed hosts should be provided as the value. The ? and wildcards can be used (e.g., 192.168.1.,172.17.?.*). Loopback addresses are always allowed, regardless of the value set here.

null

Development

devmode.liveReload.enabled

vaadin.devmode.liveReload.enabled

Enables live reload. When using a server-side live reload tool, the browser is refreshed after code is rebuilt on the server. Set to false to disable automatic reloading of the browser. This applies only to development mode.

true

Development

devmode.optimizeBundle

vaadin.devmode.optimizeBundle

Optimizes frontend resource bundles. All frontend resources in the classpath are included by default in the generated bundle in development mode. When set to true, the frontend build creates an optimized bundle by including only frontend resources that are used from the application entry points. It uses bytecode scanning, which increases application start-up time. Set to false to skip the optimization in production mode.

false

Build

devmode.output.pattern.timeout

vaadin.devmode.output.pattern.timeout

Defines the time to wait for the frontend build tool to output either the success or error string for completion.

60000 ms

Development

devmode.remoteAddressHeader

vaadin.devmode.remoteAddressHeader

The name of the custom HTTP header that contains the client IP address that is checked to allow access to the development mode server. The HTTP header is supposed to contain a single address, and the HTTP request to have a single occurrence of the header. If not specified, remote address are read from the X-Forwarded-For header

Development

devmode.sessionSerialization.enabled

vaadin.devmode.sessionSerialization.enabled

Enables session serialization. When session serialization is enabled, UI instances and registered StreamResource instances are serialized or deserialized when restarting the development server. When set to true, for example, access control information can be preserved during development so that you don’t need to log in for each change. This applies only to development mode.

false

Development

devmode.usageStatistics.enabled

vaadin.devmode.usageStatistics.enabled

Enables Vaadin to collect usage statistics that can guide further development. Statistics are collected based on features that are used in the application. No data is collected in production mode. Some usage statistics are collected through the web browser. See the client-side collector repository for instructions on how to opt out. This applies only to development mode.

true

Development

devmode.vite.options

vaadin.devmode.vite.options

Define extra options for Vite execution.

Development

disable.automatic.servlet.registration

vaadin.disable.automatic.servlet.registration

Disables automatic servlet registration that’s required by Vaadin applications. You must register Vaadin servlets if set to true.

false

Runtime

disable-xsrf-protection

vaadin.disable-xsrf-protection

Disables cross-site request forgery protection. The protection is enabled by default. You should keep it enabled — except for certain types of testing.

false

Runtime

eagerServerLoad

vaadin.eagerServerLoad

Enables the client-side bootstrap page to include the initial JSON data fragment.

false

Runtime

enableErrorHandlerRedirect

vaadin.enableErrorHandlerRedirect

If {@code true}, navigation error views implementing HasErrorParameter can be rendered for exceptions during RPC request handling.

false

Runtime

frontend.hotdeploy

vaadin.frontend.hotdeploy

Enables development using the frontend development server instead of an application bundle. This applies only to development mode. Hilla always forces frontend hotdeploy to true.

false

Development

heartbeatInterval

vaadin.heartbeatInterval

Sets the heartbeat interval time. UIs that are open on the client-side send a regular heartbeat to the server indicating that they’re still active even without ongoing user interaction. When the server doesn’t receive a valid heartbeat from a given UI within a certain amount of time, it removes that UI from the session. The interval value is expressed in seconds. See also closeIdleSessions.

300 seconds (i.e., 5 minutes)

Runtime

i18n.provider

vaadin.i18n.provider

Sets the fully-qualified name for the internationalization provider class. To translate strings for localization, the application should implement the I18NProvider interface and define the class name in the i18n.provider property. See the Localization documentation for details.

null

Runtime

launch-browser-delay

vaadin.launch-browser-delay

Defines how long to wait before opening a new browser tab for the staring application. The time is counted always from the latest application start that would try to open a tab.

30 min

Development

maxMessageSuspendTimeout

vaadin.maxMessageSuspendTimeout

Sets the maximum time in milliseconds that the client waits for predecessors of an out-of-sequence message, before considering them missing and requesting a full state resynchronization from the server. For example, when a server sends adjacent XmlHttpRequest responses and pushes messages over a low-bandwidth connection, the client may receive the messages out of sequence. Increase this value if your application experiences excessive resynchronization requests. However, be aware that it degrades the UX with flickering and loss of client-side-only states, such as scroll position.

5000 ms (i.e., 5 seconds)

Runtime

menu.access.control

vaadin.menu.access.control

Define a menu access control implementation by giving a Fully Qualified Name to the control class.

Runtime

node.download.root

vaadin.node.download.root

Base URL to download Node.js during build.

https://nodejs.org/dist/

Build

node.version

vaadin.node.version

Node.js version to get if one doesn’t exist.

See FrontendTools.DEFAULT_NODE_VERSION

Build

node.auto.update

vaadin.node.auto.update

If true framework installed Node.js is updated to nodeVersion if older version installed.

true

Build

npm.excludeWebComponents

vaadin.npm.excludeWebComponents

Excludes all Vaadin professional and core components from package.json. Material and Lumo themes are preserved. Excluded packages aren’t installed by npm, which makes development bundles smaller. This property alone doesn’t remove any Maven and Gradle dependencies. Supported also as a Vaadin Plugin property, npmExcludeWebComponents. See Optimize Bundle for more information.

false

Build

npm.postinstallPackages

vaadin.npm.postinstallPackages

Define post-install scripts that need to be executed after npm install completes.

Build

pnpm.enable

vaadin.pnpm.enable

Enables pnpm, instead of npm, to resolve and download frontend dependencies. It’s set by default to false since npm is used typically. Set it to true to enable pnpm. See Switching Between npm, pnpm and bun for more information.

false

Build

pnpm.global

vaadin.pnpm.global

Force use of system installed pnpm instead of a Flow managed one.

false

Build

bun.enable

vaadin.bun.enable

Enables bun, instead of npm, to resolve and download frontend dependencies. It’s set by default to false since npm is used typically. Set to true to enable bun. See Switching between npm, pnpm and bun for more information.

false

Build

build.folder

vaadin.build.folder

Build directory for application

${project.build.directory}

Build

pushLongPollingSuspendTimeout

vaadin.pushLongPollingSuspendTimeout

Sets the timeout in milliseconds for network requests when using long polling transport. If you have long polling enabled with a proxy that has a timeout, set pushLongPollingSuspendTimeout to less time than the proxy timeout for clients to reconnect.

-1 (i.e., no timeout)

Runtime

pushMode

vaaddin.pushMode

Enables server push. The permitted values are disabled, manual, and automatic. See Server Push for more information.

disabled

Runtime

pushServletMapping

vaadin.pushServletMapping

Specifies the servlet mapping used for bidirectional (i.e., "push") client-server communication. Some Java application servers require special context. For example, you can specify websockets with this.

""

Runtime

react.enable

vaadin.react.enable

Whether to use React Router, add React core dependencies, React integration helpers and Vaadin’s provided React components (i.e., @vaadin/react-components). Fallbacks to vaadin-router, excludes all React dependencies and adds Lit dependencies, if set to false. Vaadin plugin configuration for the reactEnable property needs to be set to match the configuration property value. See Hilla & React Dependencies for more information.

true

Runtime

requestTiming

vaadin.requestTiming

Includes basic timing information in responses that can be used for performance testing.

true for development mode; false for production mode

Runtime

require.home.node

vaadin.require.home.node

Force use of Vaadin installed Node.js instead of a globally installed Node.js version.

false

Build

syncIdCheck

vaadin.syncIdCheck

Enables synchronized ID checking. The synchronized ID is used to handle situations in which the client sends a message to a connector that has been removed from the server. It’s set to true, by default. You should only disable it if your application doesn’t need to stay synchronized, and suffers from a bad network connection.

true

Runtime

webComponentDisconnect

vaadin.webComponentDisconnect

Sets the number of seconds that a Vaadin Flow application embedded as a Web Component waits for a reconnect before removing the server-side component from memory.

300 seconds (i.e., 5 minutes)

Runtime

sessionLockCheckStrategy

vaadin.sessionLockCheckStrategy

When production mode is enabled, the Vaadin session lock check is done according to this setting. By default, the check is performed only if assertions are also enabled. This is to avoid the small performance impact of checking continuously the lock status. Alternative values are log to log a warning, or throw to fail with an IllegalStateException. The log option also logs a full stack trace, enabling you to determine any problematic calls to Vaadin UI components from background threads. This is since Vaadin Flow version 24.4.

assert

Runtime

Vaadin Plugin Properties

The following table contains the properties that are used only by the Vaadin Maven and Gradle Plugin, and are not applicable for deployment configuration:

Plugin Configuration

System Property

Description

Default Value

Mode

ciBuild

vaadin.ci.build

Determines whether npm ci is run, instead of npm i, for production frontend builds. If you use pnpm or bun, the install command runs with the --frozen-lockfile parameter. The build fails if the package.json and the lockfile have mismatching versions.

false

Build

forceProductionBuild

vaadin.force.production.build

Forces Vaadin Flow to create a new production bundle, even if there is already a usable pre-compiled bundle. This is required usually when creating an optimized production bundle, and to load component sources to the browser on demand — such as when opening a route where these components are used.

false

Build

frontendDirectory

Directory containing the project’s frontend files. Can be given as relative or absolute.

./src/main/frontend

Build

generatedTsFolder

Directory where any generated frontend files should be placed. By default, the directory is generated and positioned below frontendDirectory.

null

Build

javaSourceFolder

Source folder used for component scanning during development mode.

${project.basedir}/src/main/java

Development

javaResourceFolder

Resources source folder used for component scanning during development mode.

${project.basedir}/src/main/java

Development

npmFolder

Directory containing package.json.

${project.basedir}

Build

openApiJsonFile

Defines where the OpenAPI JSON file is generated if required for exported services.

${project.build.directory}/generated-resources/openapi.json

Build

projectBasedir

Directory containing pom.xml or build.gradle.

${project.basedir}

Build

resourceOutputDirectory

Directory to place resources that are not served from the application.

${project.build.outputDirectory}/META-INF/VAADIN/

Build

webpackOutputDirectory

Directory to generate served resources as index.js and other generated files.

${project.build.outputDirectory}/META-INF/VAADIN/webapp/

Build

skipDevBundleRebuild

vaadin.skip.dev.bundle

Prevents a frontend development bundle from being re-built, even if Vaadin Flow decides to use an existing compiled development bundle. This is mainly needed when the re-bundling checker in Vaadin Flow has problems leading to false re-bundling, and one needs a workaround while it’s being resolved.

false

Bundle

cleanFrontendFiles

vaadin.clean.build.frontend.files

Clears the generated frontend files after building a project for production. It keeps the generated files if they existed before the build, or if this parameter is set to false. When building a bundle in development mode, the generated files are removed unless they existed before the build.

true

Bundle

27BF72FB-1E23-42B0-B540-A602F9AD4571