Documentation versions (currently viewingVaadin 24)

Deploying a Vaadin Application to Heroku

How to deploy your Vaadin application to Heroku.

This tutorial shows you how to deploy a Vaadin application to the Heroku cloud platform. Heroku has a free-tier offering that can be used for non-commercial applications. You can find details of their free offerings on the Heroku website.

Heroku account required
To complete this tutorial, you need a Heroku account. You can sign up at

Step 1: Install and Set Up the Heroku CLI

To begin, download and install the Heroku CLI.

When it has been installed, log in to your account from a terminal window using the following command:

heroku login

Next, install Heroku’s Java plugin by issuing the following command:

heroku plugins:install java

Step 2: Download a Starter App

Download a minimal Vaadin project and unpack the downloaded zip into a folder on your computer.

Step 3: Add Java 11 Support

The starter project is on Java 11, whereas, by default, Heroku expects Java 8 projects. To ensure that Heroku runs a Java 11 environment, create a file under the project root directory with the following content:


If this doesn’t work, you can specify the Java version as a parameter when you run the deploy command (see Step 6: Deploy the Application):

heroku deploy:jar --jdk=11 ...

Step 4: Create a Production Build

Open the project directory from a terminal window, and enter the following command to generate a JAR file of your application:

mvn package -Pproduction

Step 5: Initialize a Heroku Application

From a terminal window, enter the following command to initialize a Heroku application:

heroku create --no-remote

This command creates an application with a randomly generated name. Take a note of the generated application name that appears in the logs. For example, in the following screenshot, the generated application name is blooming-beach-34155.

Heroku CLI log

Step 6: Deploy the Application

To deploy the application, run the following command from a terminal in your project’s root directory (replacing 'blooming-beach-34155' in the command with your application name, noted in the previous step):

heroku deploy:jar target/myapp-1.0-SNAPSHOT.jar --app blooming-beach-34155

When the deployment has completed, the application URL is displayed in the logs.