Vaadin Flow 25.4.0-alpha1
Pre-release
Pre-release
Changes since 25.3.0-beta2
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
@JavaScriptfor 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
@vaadinpackages 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
@RouteScopedto keep beans for PreserveOnRefresh (#370, #369)
Fixes
- Restore app shell title after deferred
@PreserveOnRefreshreload (#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
@Pushannotation 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)