github vaadin/platform 25.2.0-beta1
Vaadin 25.2.0-beta1

pre-release6 hours ago

Upgrading · Docs · Get Started

This is a pre-release for the Vaadin 25.2. We appreciate if you give it a try and report any issues you notice.

Notable Changes in Vaadin 25.2

Flow

Geolocation

New Java API for the browser Geolocation API — useful for "find a store near me", courier tracking, and location-stamped forms. Geolocation.getPosition(...) for one-shot reads, Geolocation.watchPosition(...) for continuous tracking exposed as a signal. Watches auto-stop on detach. Results use sealed types (GeolocationPosition / GeolocationError, plus GeolocationPending for the watcher) so permission-denied, unavailable, and timeout are handled exhaustively. (Live demo)

Clipboard

New Java API for writing text and HTML to the clipboard from a button click or context-menu action. Bind via Clipboard.onClick(component), then .writeText(...), .writeText(field, ...), or .write(ClipboardContent.create().text(...).html(...)). Success/error callbacks available. The per-gesture browser trust requirement is handled for you.

Experimental: client-side triggers and actions

An early framework for binding client-side triggers (DOM events, signals, timers) to actions that run in the browser without a server round-trip unless they need to report back. It is kept package-internal while the API matures and isn't yet meant for general use.


Design System

AI-powered Charts and Grids (Pro)

Preview release. AI-assisted Charts and Grids.

New in existing components

  • Multi-Select Combo Box — collapse all chips into a single overflow chip (setCollapseChips(true)).
  • Combo Box — auto-scroll to and focus the selected item on open (setFocusSelectedItem(true)), plus new scrollToIndex().
  • Menu Bar and Context Menu — items support tooltips; disabled items can show them via a feature flag.
  • Breadcrumbs — new component (Lumo + Aura themes), with overflow collapse.
  • Dashboard — fixed row height support.
  • PopovernoTabFocus to skip the popover in tab order.

Now stable (was Preview)


Copilot

See the Vaadin Copilot documentation.

  • Annotate and comment on views — leave comments on any view, attach components for context, and either act on them or hand them to the built-in AI. Comments are saved in a readable project file for async, AI-assisted workflows.
  • Customizable components palette — add and reorder named sections, collapse or hide unused ones. Setup is remembered per project.
  • More edit-mode polish — redesigned edit-context indicator with sticky header, icon gallery (including menu-item icons), refined alignment and properties panels, compact theme, and new-version notifications.

Testing

Load testing with TestBench (Pro)

Turn existing TestBench (or Playwright) E2E tests into k6 load tests. The toolchain runs your test through a recording proxy, captures the traffic, and generates a k6 script that handles Vaadin specifics (JSESSIONID, CSRF/Hilla CSRF, UI/Push IDs, dynamic node IDs).

Highlights:

  • Maven plugin (testbench-converter-plugin): k6:record, k6:convert, k6:run, plus start/stop-server mojos.
  • HAR-timing-aware think-time injection for realistic user simulation.
  • Declarative ramp-up / steady / ramp-down profiles instead of fixed VU counts.
  • Custom thresholds (p95/p99/abortOnFail) and response checks.
  • Optional warm-up run before measured load.
  • HTML report + JSON results, CSV-backed value collections.

📖 Docs · ⏯️
Example project

Browserless testing

Browserless tests gain:

  • Multi-user / multi-tab tests against one shared app in a single test.
  • JUnit 5 extensions — no base class required.
  • Playwright-style typed locator API; find fields by label.
  • Geolocation simulator for positions, permission states, errors, and watch
    sessions — no real device needed.

Breaking Changes

Flow

  • Gradle: vaadinPrepareFrontend no longer runs in processResources during development builds; the dev server prepares the frontend at runtime. Restore the old behavior with alwaysExecutePrepareFrontend = true.
  • @StyleSheet: bare relative paths now resolve against context:// (see Styling above). Absolute and protocol-prefixed values pass through unchanged.

Design System

  • Master-Detail Layout and Slider have API changes since their 25.1 preview.
  • Master-Detail Layout: expand replaced by expandMaster / expandDetail; overlayContainment value renamed "viewport""page".
  • Default i18n is now exposed via a static getter (not a mixin parameter) across app-layout, avatar, avatar-group, crud, dashboard, date-picker, login, menu-bar, message-input, multi-select-combo-box, rich-text-editor, side-nav, time-picker, upload, and others.

Testing

  • Browserless Spring testing support moved to its own module.
  • Browserless lookup methods $ / $view renamed to find / findInView.

Changelogs

Official add-ons and plugins:

Don't miss a new platform release

NewReleases is sending notifications on new releases.