Vaadin Flow 5.0.0.beta1 is a prerelease of the Flow & Fusion frameworks targeted to Vaadin 18. To try it out, use the latest 18 prerelease available from the Vaadin prereleases Maven repository.
New features in 5.0 for Flow
Improved LitTemplate support
Using LitTemplate
is recommended over deprecated PolymerTemplate
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 to PolymerTemplate
too. More information on the template support in the blog.
Add HasHelper interface (#8922)
A new HasHelper
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 in DataCommunicator
.
Small Improvements
Component
now hasboolean isAttached()
method which checks whether this component is currently attached to a UI.
New features in 5.0 for Fusion
Client-side Spring Security based authentication helpers (#8806)
Add Spring Security
based authentication helpers login
, logout
, and an InvalidSessionMiddleWare
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 (#8847)
When binding to an optional object field, the TypeScript form binder will not initialize the field with an empty value and leave it as undefined
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 (#8843)
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];
Deprecations and Incompatible Changes since 4.0
Template support related changes
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 existing LitTemplate
or PolymerTemplate
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.
Optional type for value property of BinderNode
The value
property of BinderNode
now has optionally undefined
type for non-initialised optional fields.
AppShellRegistry
method getTitle()
is removed
It was broken and could not work. Instead, if needed, use getUI().getUIInternals().getAppShellTitle()
.