Vaadin 18.0.1
Vaadin consists of a set of web components, a Java web framework, configurable themes, tools and a set of app templates.
Visit vaadin.com to get started.
New and Noteworthy Since Vaadin 17
Here are the highlighted new and improved features in Vaadin 18. To see the full list of bug fixes and improvements, check Included Projects and Change Log.
Flow
Features
-
Improved LitTemplate support
UsingLitTemplate
is recommended over deprecatedPolymerTemplate
for doing layouts with HTML and UI logic in Java. It is recommended to use TypeScript for the template and this has been updated to the examples in the documentation. Starting from Vaadin 18, the initial attribute values in the template are reflected to the server side state when@Id
mapping components. This applies toPolymerTemplate
too. More information on the template support in the blog. -
Add HasHelper interface
A newHasHelper
interface has been added to be used for field components that have a "helper" feature (such as TextField), i.e. a slot below/above input fields for supplying additional information or content related to the field. -
Supporting undefined item count for
ComboBox
and delaying count call until dropdown is opened
Starting from V18,ComboBox
works without defining a item count query, or it can delay the count query until the drop down is opened due to changes inDataCommunicator
.
Breaking Changes
-
Template support
Future of template support is described here: https://vaadin.com/blog/future-of-html-templates-in-vaadin
The changes in Flow 5.0 do not require changing existingLitTemplate
orPolymerTemplate
based components. In case you have existing workaround placed for handling the initial attribute values for template-mapped-components, those workarounds should not be needed anymore.PolymerTemplate
related classes are now deprecated and moved fromflow-server
toflow-polymer-template
artifact.LitTemplate
related classes are now moved fromflow-server
toflow-lit-template
artifact.Uses
annotation is now deprecated, because Polymer template support is deprecated.
-
AppShellRegistry
methodgetTitle()
is removed
It was broken and could not work. Instead, if needed, usegetUI().getUIInternals().getAppShellTitle()
. -
Having the
@Theme
annotation on Flow views or router layouts will not be allowed anymore, it should be onAppShellConfigurator
instead. This is now consistent with the@PWA
annotation and cleaner anyway since you can only have one@Theme
per application anyway. -
AbstractListDataView
now requires an extra constructor argument - a callback, which is invoked each time when the component's filter and/or sorting changes through the data view API.
Fusion
Features
-
Client-side Spring Security based authentication helpers
AddSpring Security
based authentication helperslogin
,logout
, and anInvalidSessionMiddleWare
for handling session expiration. This feature makes it easier to write a single-page application (SPA) with a custom login view. -
Support TypeScript form binding with optional fields and objects
When binding to an optional object field, the TypeScript form binder will not initialize the field with an empty value and leave it asundefined
unless there are bindings to the nested fields. This feature is necessary when e.g., binding an object field to a Combobox. -
Simpler CSS import for TypeScript views and CSS
@import
support
This feature gives us a nice DX of importing styles to TS views like:
import styles from './list-view.css';
@customElement('list-view')
export class ListView extends LitElement {
static styles = [Lumo, styles];
Breaking Changes
- Optional type for value property of BinderNode
Thevalue
property ofBinderNode
now has optionallyundefined
type for non-initialised optional fields.
Components
Features
- Field helpers
- Slot below/above input fields for supplying additional information or content related to the field.
- AutoOpenDisabled
- mode for ComboBox, DatePicker, TimePicker, DateTimePicker that prevents dropdown from opening automatically on focus
- new component: vaadin-avatar
- Avatar and AvatarGroup components. Being able to show users with name, abbreviations and image. AvatarGroup is a collection of Avatars with the possibility to truncate it to a certain number of visible avatars.
Breaking Changes
- Flow components versioning has changed, now all components are released at once with Vaadin Platform sharing the same version.
Support
Vaadin 18 is supported for one month after Vaadin 19 has been released. The latest LTS (long term support) version is Vaadin 14. More details of our release model are available on our roadmap page.
Vaadin also provides commercial support and warranty.
Included Projects and Change Log
Vaadin includes the following projects. Release notes with detailed change logs for each project are linked below.
Projects marked as (Pro) are available for users with Pro or Prime subscriptions. Everything else is free and open source.
Java Web Framework
- Vaadin Flow (5.0.1)
- Vaadin Spring Addon (15.0.0)
- Vaadin CDI Addon (12.0.1). You can use the add-on with V10+, see https://github.com/vaadin/cdi#using-with-vaadin-10 for instructions.
- Maven Plugin for Vaadin (18.0.0)
- Gradle plugin for Flow (1.2)
- Vaadin Multiplatform Runtime (Prime)
Components
Vaadin flow components
All listed components' Java integration follow the Vaadin version 18.0.1
Vaadin Web Components
- Vaadin Accordion (web component v1.2.0)
- Vaadin App Layout (web component v2.2.0)
- Vaadin Avatar (web component v1.0.1)
- Vaadin Button (web component v2.4.0)
- Vaadin Checkbox (web component v2.5.0)
- Checkbox
- Checkbox Group
- Vaadin Combo Box (web component v5.4.6)
- Vaadin Context Menu (web component v4.5.0)
- Vaadin Custom Field (web component v1.3.0)
- Vaadin Date Picker (web component v4.4.1)
- Vaadin Date Time Picker (web component v1.4.0)
- Vaadin Details (web component v1.2.0)
- Vaadin Dialog (web component v2.5.2)
- Vaadin Form Layout (web component v2.3.0)
- Vaadin Grid (web component v5.7.7)
- Grid
- Tree Grid
- Grid Context Menu
- Vaadin Icons (web component v4.3.1)
- Vaadin Item (web component v2.3.0)
- Vaadin List Box (web component v1.4.0)
- Vaadin Login (web component v1.2.0)
- Vaadin Menu Bar (web component v1.2.0)
- Vaadin Notification (web component v1.6.0)
- Vaadin Ordered Layout (web component v1.4.0)
- Horizontal Layout
- Vertical Layout
- Flex Layout
- Vaadin Progress Bar (web component v1.3.0)
- Vaadin Radio Button (web component v1.5.1)
- Radio Button
- Radio Button Group
- Vaadin Select (web component v2.4.0)
- Vaadin Split Layout (web component v4.3.0)
- Vaadin Tabs (web component v3.2.0)
- Vaadin Text Field (web component v2.8.2)
- Text Field
- Text Area
- Password Field
- Big Decimal Field
- Email Field
- Integer Field
- Number Field
- Vaadin Time Picker (web component v2.4.0)
- Vaadin Upload (web component v4.4.1)
- Vaadin Board (PRO) (web component v2.2.0)
- Vaadin Charts (PRO) (web component v7.0.0)
- Vaadin Confirm Dialog (PRO) (web component v1.3.0)
- Vaadin Cookie Consent (PRO) (web component v1.2.0)
- Vaadin Crud (PRO) (web component v1.3.0)
- Vaadin Grid Pro (PRO) (web component v2.2.2)
- Vaadin Rich Text Editor (PRO) (web component v1.3.0)
Themes
Router
- Vaadin Router (v1.7.2)
Tools
- Vaadin Designer (Pro) (Release notes)
- Vaadin TestBench (Pro) (6.4.0)
Getting Started with Vaadin
App starters
The best way to get started with Vaadin is to go to https://vaadin.com/start and pick an app template for the technology stack you’re interested in.
Note
Vaadin 18 starters are not available just yet in vaadin.com. You can use Vaadin 14 starter and manually change Vaadin version (see instructions below).
Maven Archetypes
Maven is the de-facto build tool for Java web applications. Major IDEs also support Maven out of the box and most often you'll be using Maven via your favorite IDE. There is currently one Maven archetype available, the vaadin-archetype-application
which corresponds to the project base for Flow. The version of the archetype should match the platform version. After you have Maven installed, you can quickly create and run a Vaadin app with the following command:
mvn -B archetype:generate \
-DarchetypeGroupId=com.vaadin \
-DarchetypeArtifactId=vaadin-archetype-application \
-DarchetypeVersion=18.0.0\
-DgroupId=org.test \
-DartifactId=vaadin-app \
-Dversion=1.0-SNAPSHOT \
&& cd vaadin-app \
&& mvn package jetty:run
Manually changing Vaadin version for Java projects
Add the following dependency to dependencyManagement in pom.xml.
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-bom</artifactId>
<version>18.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Read more about upgrading to Vaadin 18 from vaadin.com.
Note: Vaadin 15 is compatible with Spring 5.2.0 or newer, and Spring Boot 2.2.0 or newer. See more info from vaadin.com.
Supported Technologies
Operating Systems
Development is supported with the following operating systems:
- Windows
- Linux
- macOS
Desktop Browsers
- Evergreen versions of the following browsers on :
- Chrome on these operating systems:
- Windows 7, Windows 8.1, Windows 10 or later
- macOS 10.9 (OS X Mavericks) or later
- 64-bit Ubuntu 14.04+, Debian 8+, openSUSE 13.3+, or Fedora Linux 24+
- Firefox on these operating systems
- Windows 7, Windows 8.1, Windows 10 or later
- macOS 10.9 (OS X Mavericks) or later
- Any Linux with the following packages:
- GTK+ 3.4 or higher
- GLib 2.22 or higher
- Pango 1.14 or higher
- X.Org 1.0 or higher (1.7 or higher is recommended)
- libstdc++ 4.6.1 or higher
- Latest Firefox ESR is supported (starting from Firefox ESR 68)
- Safari on macOS 10.15 or later (starting from Safari 13, available also for macOS 10.14.5 and 10.13.6)
- Edge on Windows 10 or later. Note: Vaadin 15 supports only Edge Chromium and does not provide support for EdgeHTML.
- Chrome on these operating systems:
Mobile Browsers
The following built-in browsers in the following mobile operating systems:
- Safari starting from iOS 13
- Google Chrome evergreen on Android (requiring Android 4.4 or newer)
Development environments
Any IDE or editor that works with the language of your choice should work well. Our teams often use Eclipse, IntelliJ, Atom and Visual Studio Code among others (including Emacs and Vim).
Vaadin Designer supports the following IDEs:
- Eclipse Java EE versions: Photon, 2018 and 2019.
- JetBrains IntelliJ IDEA 2017, 2018 and 2019. Community or Ultimate edition.
Java
Vaadin supports version 8 and 11 of any JDK or JREs. More about Java support in FAQ.
Application Servers
Vaadin Flow requires Java Servlet API 3.1 (JSR-340) or newer. It is tested on:
- Apache Tomcat 8.0.x, 8.5, 9
- Apache TomEE 7.0.4->
- Oracle WebLogic Server 12.2.1
- IBM WebSphere Application Server 8.5 Liberty Profile and 9
- RedHat JBoss EAP 7
- WildFly 14, 15, 16
- Jetty 9.4
- Payara Server
- Payara Micro
Supported Node.js and npm versions
Node.js version 10.x for the npm mode.
Breaking changes
This lists products that have breaking changes from V14
Known Issues and Limitations
Flow
- The Template-in-Template feature has some limitations
- Links matching the context do not result in browser page load by default, instead they are handled with application routing. To opt-out, set the
router-ignore
attribute on the anchor element. This opt-out is needed for cases when native browser navigation is necessary, e. g., when usingAnchor
to link aStreamResource
download.
OSGi support
OSGi does not work in V15.
Migrating from Vaadin 8
Migrating from Vaadin 10-14
Migrating from Vaadin 17
Update the Vaadin version in the build files, and check if the project is using any of the breaking changes mentioned in the 'New and Noteworthy' section above.
In addition, in the case of using the now deprecated PolymerTemplate in views, we encourage to migrate to LitTemplate.
Reporting Issues
We appreciate if you try to find the most relevant repository to report the issue in. If it is not obvious which project to add issues to, you are always welcome to report any issue at https://github.com/vaadin/platform/issues.
A few rules of thumb will help you and us in finding the correct repository for the issue:
- Bug tickets and enhancement requests that are specific to a certain Vaadin component should be posted in the component's Web Component repostory (e.g. https://github.com/vaadin/vaadin-button for Button).
- Issues that are not component-specific (e.g. requests for new components) or encompass multiple components should be posted in vaadin-flow-components repository.
- If you encounter an issue with Flow which does not seem to be related to a specific component, the problem is likely in Flow itself. The Flow repository is https://github.com/vaadin/flow
- If you encounter an issue with Designer, the repository is https://github.com/vaadin/designer
- If you encounter an issue with TestBench, the repository is https://github.com/vaadin/testbench