Vaadin Flow

Build modern web apps 100% in Java

Vaadin Flow is a unique framework that lets you build web apps without writing HTML or JavaScript. 

An easier way to build web applications

You don't need to think about requests, responses, and other low-level web development concepts with Vaadin Flow.

Much like building a traditional desktop application, you compose the UI from components, connect it to a data source and react to user events. The UI runs on the JVM without the need to expose REST services or come up with other ways to move data to the browser.

Flow apps are rendered in the browser as standard HTML. They work in all modern browsers and devices, no plugins required. 

    @Route("hello-world")
public class HelloWorld extends VerticalLayout {

    public HelloWorld() {
        TextField name = new TextField("Name");
        Paragraph greeting = new Paragraph("");

        Button button = new Button("Greet", event -> {
            greeting.setText("Hello " + name.getValue());
        });

        add(name, button, greeting);
    }
}
  

UI components included

Vaadin comes with an extensive set of beautiful UI components, like form inputs, dialogs, data grids and visualizations. You can extend components and create compositions directly in your Java code. Everything is built on open web standards and runs on all modern browsers (without plugins).

Supports real-time collaboration

Collaboration Engine provides features that enable your users to work together, in real-time, directly within the app. Show active users, implement a chat and allow multiple people to work on the same views with just a few lines of code.
ce-with-bg

Automated UI testing

Implement and automate UI testing with Vaadin TestBench. User simulated test allows you to catch any regressions or compatibility issues with all the major browsers before your users do.
testbench-intro

Visual UI building

Use Vaadin Designer to build UIs faster. The drag & drop functionality and external device preview feature enables you to quickly assemble a HTML template that you can implement for your Flow app.
vaadin-designer-1
Secure platform architecture
All of your UI logic resides on the server and is never exposed to attackers. Only one communication servlet is open to the outside world, reducing the attack surface to the absolute minimum. The framework performs form data validation on the server, which cannot be accessed with client-side attacks.
Streamlined designer and developer collaboration
The Vaadin components implement a customizable design system that streamlines your UX design and promotes UI-element reusability. The Vaadin design system base is available as a Figma library, allowing UX designers to create beautiful mockups that you can implement directly, without frustrating tweaks or hacks.
All devices with a single code base
Modern browser technologies allow you to deliver progressive web apps (PWAs) on all devices, from mobile to tablet and desktop, with a single code base. By writing and maintaining only one app, you can deliver more value to your users faster. Vaadin Flow apps become PWAs with one line of code.
See how it works

How Does Vaadin Flow work?

Your UI code runs on your web server. Flow handles the application state, client-server communication and UI updates in the browser.

Create your UI in Java

Build your UI from layouts and components in Java. When using the Java API, the components control their JavaScript counterparts in the browser. You do not need to know anything about the HTML or JavaScript—that runs under the hood.

Connect to data

Vaadin is built for data-intensive applications. Whether it is lazy-loading millions of database rows, or building big, complex forms quickly, Vaadin has the necessary tools. Connect to any database from the Java server.

React to events

To make applications interactive, Vaadin provides an event-driven programming model. User interaction triggers events, which are handled by event listeners. In the Java code, you can add your event listeners and modify the UI accordingly.
Create a project

Get started with Vaadin Flow

Create a project with our online configuration tool and download a project which you import to your local development environment. Alternatively, you can follow our tutorial on building modern web apps with Spring Boot and Vaadin.
Get started Read tutorial
Powerful data binding
You can bind plain Java objects to forms. Data binding supports both Bean Validation 2.0 (JSR 380) and custom validators.
Spring Boot
The primary Vaadin stack builds on top of Spring Boot. Manage your UI scope, views and navigation with Spring.
Easy server push
Enable server push with a single Java annotation. Update the UI changes immediately from a background thread or an event bus.
Scalability
Stateful server-side apps scale to thousands of concurrent users. Read the report.
Framework comparison
How does Vaadin Flow compare to Angular and React? Use the comparison page for an in-depth analysis.
Customizable look and feel
All Vaadin components come with a modern look and feel that can be easily adapted to your application.
Java EE and CDI
Use Java EE’s contexts and dependency injection via Vaadin's official integration library.
Never limited by the framework abstraction
Vaadin’s front-end engine builds on top of the W3C Web Components standard, which allows nearly unlimited customization.
Migrating from Swing
Vaadin’s programming model is similar to Swing, simplifying migration. Read the migration tutorial.

Considering Vaadin for your business?

Book a demo with a Vaadin expert to see how our unmatched stability, commercial tooling and dedicated support services can help your organization deliver better web apps faster.