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)
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)
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)
- Register runtime-loaded frontend resources for native image (#25892, #25890)
- 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)
- Log the init failure hidden by the offline stub (#25731)
- 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)
- Restart for a new Spring bean or entity the running app never had (#25595)
- Decode only percent-encoded escapes in decodeURIComponent (#25672, #25671)
- 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/hilla#5806)
- 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)
- Reject a client property value that the bound signal cannot hold (#25438)
- 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)