github vaadin/flow 25.2.0-alpha2
Vaadin Flow 25.2.0-alpha2

latest releases: 25.1.1, 24.9.15, 24.10.1...
pre-release7 hours ago

Changes since 25.2.0-alpha1

All changes

New features

  • Upgrade Vite 7 to Vite 8
    Commit · Pull request

    Vite 8 replaces esbuild and Rollup with Rolldown (Rust-based bundler). - Bump vite to ^8.0.0 and @vitejs/plugin-react to ^6.0.0 - Replace build.rollupOptions with build.rolldownOptions - Replace optimizeDeps.esbuildOptions (no longer needed, target already set in build.target) - Remove esbuild config (Rolldown preserves legal comments by default) - Remove manualChunks workaround (Rolldown handles CJS differently, the commonjsHelpers circular dependency workaround is not needed) - Replace RollupOutput with RolldownOutput in service worker plugin - Remove esbuild install.js from vaadin-dev-server install-deps script

Fixes

  • Preserve slot attribute for initially invisible elements
    Commit · Pull request · Issue

    When a component is set invisible before being attached, Flow's client-side binding skips all attribute binding. This means structural attributes like "slot" are never applied to the DOM, breaking CSS selectors that depend on them (e.g. Aura theme's structural selectors for AppLayout drawer). On the server side, StateNode.collectChanges() now emits the slot attribute even for invisible nodes, without consuming the feature's change tracker so the full attribute set is still sent on visibility change. On the client side, SimpleElementBindingStrategy applies the slot attribute to the DOM during initial bind of invisible elements. The attribute name is defined once in NodeProperties.SLOT_ATTRIBUTE and referenced by both server and client.

  • Fix signal effect dispatching for test environments
    Commit · Pull request

    Add registerFirst() to SignalEnvironment so test environments can take priority over VaadinServiceEnvironment for effect dispatching. Add inner UI.getCurrent() check in ElementEffect's dispatched effect lambda so effects run directly on the test thread (where UI.getCurrent() matches the target UI) instead of going through ui.access(), which would enqueue to the session's pending access queue without executing.

  • Detect incompatible Jackson version at startup
    Commit · Pull request

    Vaadin requires Jackson 3.1+ but Spring Boot 4.0.3 and earlier ship Jackson 3.0 which has incompatible API changes. This caused a cryptic NoSuchMethodError at runtime. Adding an early check in VaadinService.init() surfaces a clear error message with remediation steps instead.

Don't miss a new flow release

NewReleases is sending notifications on new releases.