github vaadin/platform 18.0.0.rc1
Vaadin 18.0.0.rc1

latest releases: 24.6.0.alpha3, 23.5.10, 24.5.4...
pre-release3 years ago

Vaadin 18.0.0.rc1

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
    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
    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.

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 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 from flow-server to flow-polymer-template artifact.
    • LitTemplate related classes are now moved from flow-server to flow-lit-template artifact.
    • Uses annotation is now deprecated, because Polymer template support is deprecated.
  • AppShellRegistry method getTitle() is removed
    It was broken and could not work. Instead, if needed, use getUI().getUIInternals().getAppShellTitle().

  • Having the @Theme annotation on Flow views or router layouts will not be allowed anymore, it should be on AppShellConfigurator 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
    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
    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
    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
    The value property of BinderNode now has optionally undefined 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

Components

Vaadin flow components

All listed components' Java integration follow the Vaadin version 18.0.0.rc1

Vaadin Web Components

Themes

  • Vaadin Lumo theme (v1.6.0)
  • Vaadin Material theme (v1.3.2).

Router

Tools

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).

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>18.0.0.rc1</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    ...
</dependencyManagement>

<repositories>
    <repository>
        <id>vaadin-prereleases</id>
        <url>https://maven.vaadin.com/vaadin-prereleases</url>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>vaadin-prereleases</id>
        <url>https://maven.vaadin.com/vaadin-prereleases</url>
    </pluginRepository>
</pluginRepositories>

Known Issues and Limitations

This is the prerelease version of Vaadin 18 for evaluating a number of new features and bug fixes. The API in this prerelease version is not considered final and may change based on user feedback.

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 using Anchor to link a StreamResource download.

Migrating from Vaadin 8

See the migration guide

Migrating from Vaadin 10-14

See the migration guide

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:

  1. 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).
  2. Issues that are not component-specific (e.g. requests for new components) or encompass multiple components should be posted in vaadin-flow-components repository.
  3. 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
  4. If you encounter an issue with Designer, the repository is https://github.com/vaadin/designer
  5. If you encounter an issue with TestBench, the repository is https://github.com/vaadin/testbench

Don't miss a new platform release

NewReleases is sending notifications on new releases.