Vaadin Quickstart
Before you start
That's how long this takes.
Liberica, Temurin, or any modern JDK
IntelliJ IDEA, VS Code, Eclipse, or NetBeans
Download your starter
Go to start.vaadin.com and click Download. You'll get a ready-to-run Spring Boot + Vaadin project as a .zip.
The defaults are fine for this quickstart — you don't need to change anything.
Bookmark it: start.vaadin.com is a configurator, not a tutorial — experienced Vaadin developers use it as their default way to start any new project.
Open it in your IDE
Unzip the file and open the project folder in your IDE.
IntelliJ IDEA
File → Open… and select the unzipped folder. IntelliJ detects the Maven project and imports dependencies automatically.
Visual Studio Code
Install the Extension Pack for Java, then File → Open Folder… and select the unzipped folder.
Eclipse
File → Import → Existing Maven Project and select the unzipped folder.
NetBeans
File → Open Project… and select the unzipped folder. NetBeans recognizes the Maven project and resolves dependencies automatically.
Enable Hotswap
Hotswap applies your code changes to the running application without restarting it — no rebuild, no lost state. It's the difference between a slow Java workflow and a fast one.
Turn it on now! Install the Vaadin plugin for your IDE and use it to start the application:
IntelliJ IDEA
Open http://localhost:8080 in your browser. First start takes ~30 seconds while Maven downloads dependencies.
Visual Studio Code
Install the Vaadin extension from the VS Code marketplace, then run Run with Vaadin from the command palette.
Open http://localhost:8080 in your browser. First start takes ~30 seconds while Maven downloads dependencies.
NetBeans
Install the Vaadin plugin from the NetBeans plugin portal, then right-click the project → Run with Vaadin.
Open http://localhost:8080 in your browser. First start takes ~30 seconds while Maven downloads dependencies.
Why a plugin? It launches the JVM with the right agent for hotswap. Running with plain mvn spring-boot:run works, but you'll lose hotswap and have to restart for every change.
Make your first change
Create a new class MainView.java in src/main/java/com/example/
(next to the Application class)
package com.example;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.html.H1;
import com.vaadin.flow.component.html.Paragraph;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
@Route("")
@PageTitle("Hello, Vaadin!")
public class MainView extends VerticalLayout {
public MainView() {
add(new H1("Hello, Vaadin!"));
var nameField = new TextField("What is your name?");
add(nameField);
var greeting = new Paragraph();
greeting.setVisible(false);
add(greeting);
add(new Button("Say Hello", event -> {
greeting.setText("Hello, %s!".formatted(nameField.getValue()));
greeting.setVisible(!nameField.isEmpty());
}));
}
}
Save the file. Switch back to your browser — the new UI appears without a reload.
Make a change without writing code
Vaadin Copilot is a visual, AI-empowered development tool built into dev mode. You can inspect components, drag-and-drop, edit themes, or just ask in plain English.
In your running app, open Copilot: ⇧ + ⌘ ⌘ on Mac ⇧ + Ctrl Ctrl on Windows / Linux
(Hold Shift and press ⌘ or Ctrl twice in quick succession.)
Click the AI assistant icon in the Copilot toolbar and try!
Copilot prompt:
Add a date-of-birth field with a date picker, and validate that the user is at least 18.
Copilot edits your Java source directly — re-runs hotswap — and your app updates in place. Open MainView.java in your IDE: the new field is right there in the code.
First-time AI use: Copilot will prompt you to sign in with a free Vaadin account. The visual tools (drag-drop, theme editor, inspector) work without sign-in.
You're All Set! Where to next?
You just built a full-stack web app in Java.
Pick your next step. Build something real, explore the components, or ship to production.