Configuration Properties

Vaadin applications have configuration properties that change its behavior. Use either system properties or servlet initialization parameters to set them.

For Spring-based applications, there are Spring specific instructions available.

Using System Properties

When using Java’s system properties to set the Vaadin application parameters, the vaadin. prefix is needed to be specified before the parameter names. The following shows and example of setting the system property when executing a Maven goal from the command line:

mvn jetty:run -Dvaadin.frontend.url.es6= -Dvaadin.frontend.url.es5=

System properties can be configured for Maven plugin executions. For instance, the following example sets a Vaadin specific system property when the Jetty Maven plugin is run:


Using Servlet Initialization Parameters

Another alternative is to use servlet initialization parameters. You can use the Servlet 3.0 @WebServlet annotation, which requires you to configure your own servlet (otherwise it is done automatically by Vaadin with default parameter values):

@WebServlet(urlPatterns = "/*", name = "myservlet", asyncSupported = true, initParams = {
        @WebInitParam(name = "frontend.url.es6", value = ""),
        @WebInitParam(name = "frontend.url.es5", value = "") })
@VaadinServletConfiguration(productionMode = false)
public class MyServlet extends VaadinServlet {

Yet another approach is to use the web.xml file:

<?xml version="1.0" encoding="UTF-8"?>
  id="WebApp_ID" version="3.0"




System properties override servlet parameters
If you have both properties with the same name specified, the system one will be used.

Configuration Properties

The list contains the properties that are defined in com.vaadin.server.DeploymentConfiguration and com.vaadin.server.Constants classes, in alphabetical order.

Spring Boot
If you use Spring Boot then you should add the prefix vaadin., for example, vaadin.productionMode=true.

When set to true (the default is false), the session is be closed if no UI is active. Heartbeat requests are like any other request from the servlet container’s viewpoint. This means that as long as there is an open UI, the session never expires even though there is no user interaction. You can control this behavior by setting an init parameter named closeIdleSessions to true.


This is by default set to true, which means that if you are using some live reload tool on the server side the browser is refreshed automatically once code is reloaded on the server side.


Determines whether the VaadinSession instances of the users are serialized on server shutdown when running in development mode. The parameter is set to false by default so that only other HTTP session data is serialized/deserialized on development server restart. Enabling the property allows, for example, access control information to be retained during development, so that you do not need to log in again for each change.


By default, in development mode all frontend resources found on the class path are included in the generated webpack bundle. When set to true, creates an optimized bundle by including only frontend resources that are used from the application entry points (this is the default in production mode). Uses bytecode scanning which increases application startup time.


Configuration name for the parameter that determines if Vaadin should automatically register servlets needed for the application to work.


Cross-site request forgery protection. This protection is enabled by default, but it might need to be disabled to allow a certain type of testing. For these cases, the check can be disabled by setting the init parameter.


A location Vaadin searches web components' files in production mode when the request is coming from older browsers, not supporting es6, default web components' development language version.


A location Vaadin searches web components' files in production mode for requests from modern browsers.


Affects Flow applications only. UIs that are open on the client side send a regular heartbeat to the server to indicate they are still alive, even though there is no ongoing user interaction. When the server does not receive a valid heartbeat for a given UI, it will eventually remove that UI from the session.


I18N provider property. To use localization and translation strings the application only needs to implement I18NProvider and define the fully qualified class name in the property i18n.provider. Please consult Localization documentation.


Include polyfills for browsers that do not support ES6 to their initial page. For web components to work, extra libraries (polyfills) are required to be loaded, can be turned off if different versions or libraries should be included instead.


In certain cases, such as when the server sends adjacent XmlHttpRequest responses and push messages over a low bandwidth connection, messages may be received out of order by the client. This property specifies the maximum time (in milliseconds) that the client will then wait for the predecessors of a received out-order message, before considering them missing and requesting a full resynchronization of the application state from the server. The default value is 5000 ms. You may increase this if your application exhibits an undue amount of resynchronization requests (as these degrade the UX due to flickering and loss of client-side-only state such as scroll position).


Configuration name for the parameter that determines if Vaadin should use bundled fragments or not.


This flag can be used to enable pnpm instead of npm for resolving and downloading frontend dependencies. By default it is false and npm is used, but setting it to true enables pnpm. See how to switch between npm and pnpm.


Turns application to work in production mode. Production mode disables most of the logged information that appears on the console because logging and other debug features can have a significant performance impact. Development mode JavaScript functions are not exported, push is given as a minified JavaScript file instead of full size and static resources are cached. See Deploying to Production for more information.


Affects Flow applications only. When using the long polling transport strategy, it specifies how long it accepts responses after each network request. Number of milliseconds.


Affects Flow applications only. The permitted values are "disabled" or "manual". See Server Push for more information.


Affects Flow applications only. The URL to use for push requests. Some servers require a predefined URL to push. See Server Push for more information.


If true, in each response the server includes some basic timing information. This can be used for performance testing.


Returns whether the sending of URL’s as GET and POST parameters in requests with content-type application/x-www-form-urlencoded is enabled or not.


Returns whether sync id checking is enabled. The sync id is used to gracefully handle situations when the client sends a message to a connector that has recently been removed on the server. Default is true.


This flag can be used to enable the server-side bootstrapping mode which was used in Vaadin 14 and earlier version.