Documentation versions (currently viewingVaadin 23)

Deploying to Production

Deploying to a production server involves compiling and packaging the application to be suitable and optimized for the server.

Although you may have launched your server directly from your IDE during development, for production you need to deploy the application as a WAR file (Java Servlet) or JAR file that includes your application server (Spring Boot and other embedded servers).

By default, Vaadin applications are set up to run in development mode. This requires a bit more memory and CPU power, but enables easier debugging. When deploying your application to your users, you will want to switch to production mode instead.

The main difference between development and production mode is that, in development mode, Vaadin uses webpack to serve JavaScript files to the browser, instead of the Java server the application is running on. This is so that, if you change a JavaScript or CSS file, your changes are picked up and served automatically. When in production mode, you do not want this extra overhead, since the files will not change. It is more efficient to prepare JavaScript and CSS files once, during build, and let one server (the Java Server) serve all requests. At the same time, the client resources can be optimized and minified to reduce the load on the network and browser even further.


Production Build
Create an optimized build of your application for production deployment.
Servlet Container
Deploy your application to traditional servlet containers, such as Tomcat, Jetty or any Java/Jakarta EE server.
Spring Boot
Deploying a Spring Boot based application.
Cloud Providers
Learn how to deploy your application to third-party cloud hosting providers.
Docker Deployment
Deploy your Vaadin application using Docker
Guidance if you have problems taking Vaadin applications to production.