github vaadin/flow 25.4.0-alpha1
Vaadin Flow 25.4.0-alpha1

pre-release5 hours ago

Changes since 25.3.0-beta2

All changes

Breaking changes

  • Stop exporting Spring dependencies at compile scope (#25927)
  • Update default Node.js to v26.9.0 and require Node.js 26 as the minimum (#25775)
  • Set base Java version to 21 (#490)
  • Set base Java version to 21 (#211)
  • Instantiator.init() replaced with InstantiatorFactory (#429)
  • Migrate to Jakarta EE 9 / Servlet (#83)
  • Migrate to Jakarta EE 9 / Servlet 5 (#396)
  • Bump min required java version to jdk 11 (#379)

New features

  • Theme plain HTML elements app-wide behind vaadin.themedHtml (#25809)
  • Add toString to ListDataProvider and TreeDataProvider (#25984)
  • Run element-bound framework JavaScript from the bundle (#25853)
  • Add type attribute to @JavaScript for runtime ES modules (#24239)
  • Start apps through the server plugin their build runs (#25794)
  • Run the page level framework JavaScript from the bundle (#25858)
  • Call a function on an element without compiling JavaScript (#25852)
  • Support variadic methods in a JavaScript definition (#25877)
  • Run page level declared JavaScript without compiling it in the browser (#25799)
  • Run declared JavaScript without compiling it in the browser (#25749)
  • Add opt-in Keycloak role mapping to VaadinSecurityConfigurer (#25627)
  • Keep a UI alive for its ongoing transfers and terminate them when the session is invalidated (#25431, #25409)
  • Add Vaadin-aware expired session handling (#25625)
  • Add Server-Sent Events as a push transport option (#24484)
  • Exclude @vaadin packages from the minimum frontend package age (#25620)
  • Add Element.sizeSignal() for tracking element size (#23618)
  • Add a playable game to the PWA offline page (#25526)
  • Add ExtendedClientDetails.getBrowserTime() returning an Instant (#25480)
  • Implement PageTitleGenerator in QuarkusInstantiator (#308)
  • Add PageTitleGenerator support to CdiInstantiator (#519)
  • Configure spotless maven plugin for code formatting (#513)
  • Support minimumFrontendPackageAgeDays in embedded plugin (#284)
  • Add DetachEvent listener to CdiVaadinServletService (#498)
  • Add reflection hints for ClientCallable types (#244, #243)
  • Add embedded Vaadin plugin (#215)
  • Detect specific Executor for VaadinService (#203)
  • Detect specific Executor for VaadinService (#470)
  • Make VaadinServiceEnabled bean unremovable by default (#202, #147)
  • Add support for native image build (#189, #157)
  • Added codestart (#119)
  • Retain routescoped parentlayouts on route change (#394)
  • Enable bean discovery when bean-discovery-mode="annotated" (#397, 303, 391)
  • Make Vaadin PUSH functionality work (#69, #5)
  • Implement pseudo scopes (#33, #26)
  • Set system messages and error handler using CDI beans (#30, #20)
  • Add remaining CDI normal scopes: RouteScoped, UIScoped, VaadinSessionScoped (#25, #13)
  • Fire session init/destroy and ui init events via bean manager (#29, #21)
  • Add VaadinService scope (#22, #13)
  • CDI injection support for Routes (#12)
  • Add ResourceProvider (#8, #vaadin/flow9713)
  • Reimplement @RouteScoped to keep beans for PreserveOnRefresh (#370, #369)

Fixes

  • Restore app shell title after deferred @PreserveOnRefresh reload (#26026)
  • Find the main class again after it moves to another package (#25959, #25954)
  • Keep resource edits made since app start when re-seeding (#25958, #25956)
  • Provide TypeScript 6 alongside the native compiler (#25911, #25416)
  • Ignore a configured Node version too old to run the frontend build (#25649)
  • Qualify the forwarding controller injected into the root mapping (#25914, #25913)
  • Keep query parameters and hash of queued navigation (#25910, #25907)
  • Invalid blocker state transition: unblocked -> proceeding (#25861)
  • Push a sibling module's edited stylesheet, not its stale jar-resources copy (#25912, #25909)
  • Keep the Quarkus build extension out of the rest of the build
  • Register runtime-loaded client helpers for native image (#347, #346)
  • Register runtime-loaded frontend resources for native image (#25892, #25890)
  • Register JavaScript definition proxies for native image (#345, #344)
  • Register JavaScript definition proxies for native image (#25889, #25885)
  • Drop development entries from production token file (#25871)
  • Hide an attribute with a null bound value from getAttributeNames (#25818)
  • Wait for the deployment to answer and explain missing views (#25737)
  • Build the frontend for the browsers that Vaadin supports (#25777)
  • Stop pnpm from reinstalling before the postinstall script (#25779, 21662, 24333)
  • Read the before setting npm resolves a minimum release age into (#25757)
  • Let ThemeList.add accept a space separated value again (#25753)
  • Warn when inert LocationChangeEvent mutators are called (#25740, #25739)
  • Apply app shell @Push annotation before UI init listeners run (#25724, #25718)
  • Keep the hmr line on a mixed change-set (#25730, #25579)
  • Name the frontend directory setting correctly, and tighten its tests
  • Tolerate a missing storage on the context state path too
  • Address the reliability findings in the imported Quarkus code
  • Log the init failure hidden by the offline stub (#25731)
  • Emit only the generated files packaging does not pick up (#339, #332)
  • Keep dev bundle sourcemaps usable in the usage statistics Vite plugin (#25708, #16679)
  • Keep the css sourcemap chain intact when rewriting theme urls (#25710)
  • Keep production sourcemaps usable when the i18n plugin rewrites a chunk (#25691, #16679)
  • Log unchecked failures of the frontend clean task (#336, #333)
  • Align embedded Vaadin plugin adapter with flow-maven-plugin (#334, 327, 328, 329, 330, 331)
  • Restart for a new Spring bean or entity the running app never had (#25595)
  • Decode only percent-encoded escapes in decodeURIComponent (#25672, #25671)
  • Address the reliability findings in the imported CDI code
  • Recognise the nested jars of Spring Boot when looking up the token file (#25681)
  • Respond 401 instead of redirecting sub-resource requests to the login view (#25593)
  • Declare @preact/signals-react as a dev dependency (#25657)
  • Detect the project folder of a Gradle module from the classpath (#25632, #25630)
  • Skip the shortcut owner token when the owner is the UI (#25631, #25624)
  • Recompile the app when a reactor sibling leaves the loop (#25465)
  • Find a JetBrains Runtime under ~/.vaadin/jdk (#25589)
  • Compile with -parameters and -g like a Maven build (#25587, #25560)
  • Parse a query string given to UI.navigate(String) (#25591, #25563)
  • Guard a service worker registration without a push manager (#25612, #25611)
  • Make ThemeList a live view of the theme attribute (#25590)
  • Apply a message's stylesheet removals before its adds (#25594, #25566)
  • Ask the dev server whether a frontend change compiles (#25466)
  • Treat a null Query sort order list as empty (#25586)
  • Make the dev-loop skill load before the first edit (#25524)
  • Keep push connections open while the service is starting (#25485, #25482)
  • Add support for AppShell stylesheets in service worker precache (#25047, #vaadin/hilla5806)
  • Rebundle when the bundle misses a template source (#25484)
  • Rebuild the frontend bundle when PWA offline settings change (#25512, #25491)
  • Allow custom PWA paths in Spring Security (#25501, #25493)
  • Serve the PWA offline stub as same-origin frameable (#25504, #25492)
  • Converge the Arquillian versions in the CDI tests
  • Reject a client property value that the bound signal cannot hold (#25438)
  • Sanitize the effective POM the CDI tests deploy from
  • Leave default PWA icons out of a bundle with a custom icon path (#25489, #21411)
  • Ignore a response that has no request to end (#25469, #25467)
  • Register UI event listeners through UIInitListener (#530)
  • Register UI event listeners through UIInitListener
  • Adapt plugin adapter to nullable minimumFrontendPackageAgeDays
  • Bind route scope to window name only for @PreserveOnRefresh (#527, #526)
  • Use vaadin.version property for extension dependency in codestart (#317, #316)
  • Default Push dispatch to worker thread (#288)
  • Fix compilation errors (#282)
  • Check session lock in VaadinSessionScopedContext.isActive() (#499, #495)
  • Preserve route-scoped beans for proxied views (#277, #276)
  • Add support for nodeFolder in embedded plugin (#256)
  • Add reflection hints for LitTemplateParserFactory (#253, #252)
  • Adapt to Flow changes (#246)
  • Adapt to changes in Flow base plugin interfaces (#245)
  • Add reflection hints for Dependency class (#242, #239)
  • Make instantiator lookup all defined VaadinServiceInitListener beans (#235, #234)
  • Use window name to detect presence of extended client details (#493)
  • Use window name to detect presence of extended client details (#226)
  • Prevent failure when analyzing classes in default package (#223, #222)
  • Create TaskCleanFrontendFiles before frontend build starts (#220, #219)
  • Handle missing reflection hints (#214)
  • Prevent startup failures on non-Jakarta EE compliant environments (#477, #476)
  • Add native hint for feature flags file (#198)
  • Add replacement for VaadinSpringDataHelpers in native build (#195, #194)
  • Try using bean manager to instantiate components (#193, #192)
  • Make gitignore file added to codestart (#184)
  • Provide default MenuAccessControl instance (#460)
  • Provide default MenuAccessControl instance (#176, #175)
  • Index optional dependencies (#172)
  • Use quarkus compatible classloader
  • Fix serialization issues (#438, 436, 437)
  • Updates after removal of deprecated Flow code (#92)
  • CDI 4.0, removed DeltaSpike, switched to Weld Junit extension (#425, #414)
  • Make sure annotated endpoints works along Vaadin PUSH (#86, #78)
  • Add RouterLayout as bean classes (#85, #75)
  • Set load-on-startup for automatically registered Vaadin servlets (#84)
  • Set load-on-startup for automatically registered Vaadin servlet (#398)
  • Throw on not existing scope only if bean creation is requested (#393, #390)
  • Fixes on user servlet registrations (#58)
  • Upgrade to CDI 2 for Java 11 support (#380)
  • Disable dev mode gizmo to not use web-sockets (#43)
  • Use quarkus integration tests and generate screenshots on failure (#39, #23)
  • Implement getActiveContextualStorages properly for RouteScope context (#376, #375)
  • Recognize HasErrorParameter classes as beans (#31, #24)
  • Recognize HasErrorParameter classes as beans (#24)

Don't miss a new flow release

NewReleases is sending notifications on new releases.