Vaadin 15.0.0
Vaadin consists of a set of web components, a Java web framework, configurable themes, tools and a set of app starters.
Visit vaadin.com to get started.
New and Noteworthy
Here are the highlighted new and improved features in Vaadin 15. To see the full list of bug fixes and improvements, check Included Projects and Change Log.
Vaadin for TypeScript
In Vaadin 15 we introduce Vaadin for TypeScript as an alternative to Java;
When creating applications with Vaadin, developers can choose to write client-side code in TypeScript so that they can stay close to the target platform (the browser), it is easy to use any of the native Web platform features directly (including Service Workers and offline support), and the code is automatically type-checked. Vaadin 15 also provides a type-safe and secure way to access data from backend. See quick start guide from vaadin.com
Note: Using endpoints requires Spring Boot.
Client-side Router
Vaadin 15 includes Vaadin Router, the client-side router for Web Components.Vaadin Router is in use by default for all apps. See more from vaadin.com.
Faster and more reliable frontend dependency management by using pnpm
Faster and more reliable builds when updating the platform version. Biggest effect is when there are frontend dependency changes and when multiple projects/modules are updated. Vaadin 15 has npm in use by default and pnpm can be taken into use optionally. See instructions from vaadin.com.
Support
Vaadin 15 is supported for one month after Vaadin 16 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.
Java Web Framework
- Vaadin Flow (3.0.0)
- Vaadin Spring Addon (13.0.0)
- Vaadin CDI Addon (12.0.0). You can use the add-on with V10+, see https://github.com/vaadin/cdi#using-with-vaadin-10 for instructions.
- Maven Plugin for Vaadin (15.0.0)
- Gradle plugin for Flow (1.2)
- Vaadin Multiplatform Runtime (Prime)
Projects marked as (Pro) are available for users with Pro or Prime subscriptions. Everything else is free and open source.
Components
- Vaadin Accordion (Flow integration 3.0.0, web component v1.0.1)
- Vaadin App Layout (Flow integration 3.0.0, web component v2.0.4)
- Vaadin Button (Flow integration 3.0.0, web component v2.2.2)
- Vaadin Checkbox (Flow integration 3.0.0, web component v2.2.12)
- Checkbox
- Checkbox Group
- Vaadin Combo Box (Flow integration 4.0.0, web component v5.0.10)
- Vaadin Context Menu (Flow integration 4.0.0, web component v4.3.15)
- Vaadin Custom Field (Flow integration 4.0.0, web component v1.0.11)
- Vaadin Date Picker (Flow integration 3.0.0, web component v4.0.7)
- Vaadin Details (Flow integration 3.0.0, web component v1.0.1)
- Vaadin Dialog (Flow integration 3.0.0, web component v2.2.1)
- Vaadin Form Layout (Flow integration 3.0.0, web component v2.1.7)
- Vaadin Grid (Flow integration 5.0.0, web component v5.5.1)
- Grid
- Tree Grid
- Grid Context Menu
- Vaadin Icons (Flow integration 3.0.0, web component v4.3.1)
- Vaadin Item (web component v2.1.1)
- Vaadin List Box (Flow integration 3.0.0, web component v1.2.0)
- Vaadin Login (Flow integration 3.0.0, web component v1.0.1)
- Vaadin Menu Bar (Flow integration 2.0.0, web component v1.0.5)
- Vaadin Notification (Flow integration 3.0.0, web component v1.4.0)
- Vaadin Ordered Layout (Flow integration 3.0.0, web component v1.1.0)
- Horizontal Layout
- Vertical Layout
- Flex Layout
- Vaadin Progress Bar (Flow integration 3.0.0, web component v1.1.2)
- Vaadin Radio Button (Flow integration 3.0.0, web component v1.2.4)
- Radio Button
- Radio Button Group
- Vaadin Select (Flow integration 3.0.0, web component v2.1.7)
- Vaadin Split Layout (Flow integration 3.0.0, web component v4.1.1)
- Vaadin Tabs (Flow integration 3.0.0, web component v3.0.5)
- Vaadin Text Field (Flow integration 3.0.0, web component v2.5.4)
- Text Field
- Text Area
- Password Field
- Big Decimal Field
- Email Field
- Integer Field
- Number Field
- Vaadin Time Picker (Flow integration 3.0.0, web component v2.0.6)
- Vaadin Upload (Flow integration 3.0.0, web component v4.2.2)
- Vaadin Board (PRO) (Flow integration 4.0.0, web component v2.1.1)
- Vaadin Charts (PRO) (Flow integration 8.0.0, web component v6.2.4)
- Vaadin Confirm Dialog (PRO) (Flow integration 3.0.0, web component v1.1.6)
- Vaadin Cookie Consent (PRO) (Flow integration 3.0.0, web component v1.1.2)
- Vaadin Crud (PRO) (Flow integration 3.0.0, web component v1.1.0)
- Vaadin Grid Pro (PRO) (Flow integration 3.0.0, web component v2.0.6)
- Vaadin Rich Text Editor (PRO) (Flow integration 3.0.0, web component v1.1.1)
Themes
Router
- Vaadin Router (v1.7.1)
Tools
- Vaadin Designer (Pro) (Release notes)
- Vaadin TestBench (Pro) (6.2.1)
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.
Manually changing Vaadin version for Java projects
Add the following contents to your project pom.xml.
<dependencyManagement>
...
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-bom</artifactId>
<version>15.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
</dependencyManagement>
Read more about upgrading to Vaadin 15 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 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
Breaking Changes in Flow 3.0.0:
- The list of supported browsers is updated to match the next LTS target (IE11, Safari 12 and older, Edge 18 and older are no longer supported)
- The APIs deprecated in Flow 2.x are removed
- Property synchronization methods in
Element
are replaced with similar API inDomListenerRegistration
:getSynchronizedPropertyEvents
,getSynchronizedProperties
,removeSynchronizedPropertyEvent
,removeSynchronizedProperty
,addSynchronizedPropertyEvent
,addSynchronizedProperty
,synchronizeProperty
. - JavaScript execution APIs
executeJavaScript
andcallFunction
inElement
andPage
are replaced with similarly named methods that give access to the return valueexecuteJs
andcallJsFunction
: - Miscellaneous
Element
methods:Element(String, boolean)
,addEventListener(String, DomEventListener, String...)
- Device and platform detection methods
WebBrowser#isIOS()
,WebBrowser#isIPad()
,BrowserDetails#isSafariOrIOS()
,BrowserDetails#isIOS()
,BrowserDetails#isIPad()
are replaced with method inExtendedClientDetails
:isIPad()
,isIOS()
- Methods
JsModule#loadMode()
andPage#addJsModule(String, LoadMode)
for setting the load mode of JsModule are removed since it does not function with JavaScript modules. - The construction methods
BeforeEvent(NavigationEvent, Class<?>)
andBeforeEvent(Router, NavigationTrigger, Location, Class<?>, UI)
inBeforeEvent
are replaced withBeforeEvent(NavigationEvent, Class, List)
andBeforeEvent(Router, NavigationTrigger, Location, Class, UI, List)
- Methods
getUrl()
,getUrlBase()
andgetRoutes()
inRouter
are replaced with methodsgetUrl()
,getUrlBase()
andgetAvailableRoutes()
inRouterConfiguration
. Theresolve()
method inRouter
is replaced with theresolve()
method inRouteUtil
. ThegetRoutesByParent()
method inRouter
is removed and has no replacement. ServletHelper
is replaced withHandlerHelper
ExecutionCanceler
is replaced withPendingJavaScriptResult
- The
getBodyAttributes
method inAbstractTheme
,Lumo
andMaterial
is replaced withgetHtmlAttributes
- The
removeDataGenerator
method inHasDataGenerators
andCompositeDataGenerator
is removed in favor of using the registration returned fromaddDataGenerator(DataGenerator)
- The methods
preventsDefault
andstopsPropagation
inShortcutRegistration
are replaced withisBrowserDefaultAllowed
andisEventPropagationAllowed
- The
safeEscapeForHtml
method inVaadinServlet
is removed in favor of usingorg.jsoup.nodes.Entities#escape(String)
- The static method
getInstance
inApplicationRouteRegistry
is removed in favor of the instance method. - The protected instance method
getApplicationUrl
fromVaadinServlet
is removed
- Property synchronization methods in
Bower support dropped
Bower (compatibility mode) support has been dropped from Vaadin 15. Bower (compatibility mode) and WebJars are still fully supported in Vaadin 14 (LTS).
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.
Known limitations in 3.0.0 (to be fixed in 3.0.x)
- When using the Vaadin Multiplatform Runtime navigation from Vaadin 15 to Vaadin 7/8 views is broken
- The BeforeEnter.rerouteTo() Java API cannot re-route to TypeScript views
- The pnpm mode works only when the usage statistics collection is enabled
- Links to StreamResources require an extra router-ignore attribute to work
Vaadin Gradle Plugin
- Vaadin Gradle Plugin does not currently work with Vaadin 15.
OSGi support
OSGi does not work in V15.
Migrating from Vaadin 8
Migrating from Vaadin 10-14
Reporting Issues
We would appreciate it 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:
- If you encounter an issue when using the HTML/JS API of a component or the component renders incorrectly, the problem is likely in the web component. The web component repositories are named like https://github.com/vaadin/vaadin-button
- If you encounter an issue when using the Java API of a component, the problem is likely in the Flow integration of the web component. The Flow component integration repositories are named like https://github.com/vaadin/vaadin-button-flow
- 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