Changes since 25.2.0-alpha1
New features
-
Upgrade Vite 7 to Vite 8
Commit · Pull requestVite 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 · IssueWhen 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,SimpleElementBindingStrategyapplies the slot attribute to the DOM during initial bind of invisible elements. The attribute name is defined once inNodeProperties.SLOT_ATTRIBUTEand referenced by both server and client. -
Fix signal effect dispatching for test environments
Commit · Pull requestAdd 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 requestVaadin 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.