Releases: vaadin/flow
Vaadin Flow 24.7.0.alpha2
Changes since 24.7.0.alpha1
Breaking changes
-
Change supported Node from 18 to 20
Commit · Pull requestNode 20 is the active LTS version for Node. Node 18 will be end of life soon and new libraries like React 19 support Node 20+
Fixes
-
Re-build production bundle if index.html changes
Commit · Pull request · IssueStores index.html hash in stats.json and forces production bundle to be re-built if file contents have changed. Changes to index.html do not trigger a dev bundle re-generation since in dev mode the file is served directly from the frontend folder.
-
Disable workbox developer logs by default
Commit · Pull request · Issue -
Handle logout from a background thread
Commit · Pull requestAllows AuthenticationContext.logout feature to be used from a background thread, handling the missing request by forcing the client to make an additional request. Applies the same logic used to support logout when using PUSH with websocket transport. References #11026
-
Fix role checking when using websocket push
Commit · Pull requestWhen using PUSH with websocket transport, the atmosphere wrapped request can be a no-op implementation whose isUserInRole method alwasy returns false, causing, for example, wrong access checking during navigation. This change falls back to Spring Securty for role checking when PUSH transport is websocket. It also fixes some tests in order to propagate the Spring Security context when starting Thread that perform UI operations. References psi#123 Part of #11026
-
Catch exceptions from detach calls
Commit · Pull request -
Ensure requestEnd clears Vaadin thread locals
Commit · Pull requestMakes sure that Vaadin thread locals are cleared even if something fails durung requestEnd execution. It also wraps Vaadin interceptors execution in a try/catch block to ensure all of them are invoked and that potential failures does not affect the continuation of requestEnd method.
-
Browser parsing
Commit · Pull requestAdded new opera userAgent string. Better logging for failures. Better matching for version string. Fixed android mistaken check. Part of #20610 Add isIPad Add testing userAgent strings from json file.
-
Fix redirect URL for PUSH with websocket transport
Commit · Pull request · IssueWhen PUSH is enabled with websocket transport, the redirect URL to be used after a successfull login is not correctly computed because it is based on the PUSH servlet mapping. This change detects the situation and computes the correct URL.
-
Appended path on fast navigate
Commit · Pull request · IssueWhen navigating in quick succession check that path starts with / as else react wll append to current url.
-
Complete client websocket future on open
Commit · Pull request · IssueCompleting the websocket future in onOpen event prevents the connection to hang indefintely when application run on low resources.
Vaadin Flow 24.6.0
All Changes since Vaadin Flow 24.5
Breaking changes
-
Upgrade minimum supported Gradle version to 8.7
Commit · Pull requestJackson 2.18 is incompatible with Gradle 8.4 because it contains classes compiled with Java 22. This change bumps Gradle minumum supported version to 8.7 that supports Java 22.
-
WebPush Subscription Wrapper and feature flag removal
Commit · Pull request
New features
-
Add drag image for DragSource
Commit · Pull request · Issue · DocsAdds
DragSource#setDragImage(ComponentDragImage )
andDragSource#setDragImage(Component dragImage, int offsetX, int offsetY)
. API is used to set image component as a drag image for drag source component. Follows specification of HTML Drag and Drop API for DataTransfer#setDragImage() method.
Examples:CardComponent card = new CardComponent(); // use Image component as a drag image card.setDragImage(new Image("/cards/ace_of_spades.png", "Ace of Spades"));
-
Extend WebPushMessage with the custom settings
Commit · Pull request · Issue · DocsAdds a Java API for setting the custom options as described in https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification#parameters.
Note that this isn't an experimental feature anymore.WebPushAction webPushAction = new WebPushAction("dashboard", "Open Dashboard"); WebPushOptions webPushOptions = new WebPushOptions(body, List.of(webPushAction), "This is my data", "https://example.com/my-icon.png"); webPush.sendNotification(subscription, new WebPushMessage(title, webPushOptions));
-
Enable easier override for SpringServlet
Commit · Pull request · Issue · DocsCan be done by providing a custom Spring configuration class, see linked docs for more details.
-
Add support for customizable projectFileExtensions
Commit · Pull request · Issue -
Opt-out web components from package.json
Commit · Pull request · DocsAdds new property
npm.excludeWebComponents
(ornpmExcludeWebComponents
in Maven configurations). By default, it'sfalse
and everything works as before.true
will exclude all Vaadin web component dependencies frompackage.json
for development mode (Vite/dev bundle) and production bundle build. Excluded dependencies are all Vaadin core components (e.g. button, grid, login, etc.) and commercial components (e.g. charts, rich-text-editor, etc.), but not lumo/material themes. -
Fire an event when all hotswap operations have completed
Commit · Pull request -
Generate PWA icons at build time
Commit · Pull request · IssueGenerates PWA icons during the production build, preventing the need to use AWT APIs at runtime and making first requests to the application faster. Also prevents potential issues caused by loading AWT native library in native images.
Changes since 24.6.0.rc1
Fixes
-
Disable workbox developer logs by default (#20718)
Commit · Pull request · Issue -
Handle logout from a background thread (#20688)
Commit · Pull requestAllows AuthenticationContext.logout feature to be used from a background thread, handling the missing request by forcing the client to make an additional request. Applies the same logic used to support logout when using PUSH with websocket transport. References #11026
-
Fix role checking when using websocket push (#20679)
Commit · Pull requestWhen using PUSH with websocket transport, the atmosphere wrapped request can be a no-op implementation whose isUserInRole method alwasy returns false, causing, for example, wrong access checking during navigation. This change falls back to Spring Securty for role checking when PUSH transport is websocket. It also fixes some tests in order to propagate the Spring Security context when starting Thread that perform UI operations. References psi#123 Part of #11026
-
Catch exceptions from detach calls (#20656)
Commit · Pull request -
Ensure requestEnd clears Vaadin thread locals (#20687)
Commit · Pull requestMakes sure that Vaadin thread locals are cleared even if something fails durung requestEnd execution. It also wraps Vaadin interceptors execution in a try/catch block to ensure all of them are invoked and that potential failures does not affect the continuation of requestEnd method.
-
Browser parsing (#20657)
Commit · Pull requestAdded new opera userAgent string. Better logging for failures. Better matching for version string. Fixed android mistaken check. Part of #20610 Add isIPad Add testing userAgent strings from json file.
Contributions 🏅
-
Calling VaadinService.access or accessSynchronously leaks UI ThreadLocals by @archiecobbs
Pull Request · Issue -
VaadinSessionScopes for all sessions are destroyed when any single session expires by @archiecobbs
Pull Request · Issue -
Add nodeVersion in gradle plugin settings by @mrk-andreev
Pull Request · Issue -
Add support to customizable the projectFileExtensions by @oliveryasuna
Pull Request · Issue
Vaadin Flow 23.5.11
Changes since 23.5.10
Fixes
-
Ensure requestEnd clears Vaadin thread locals (#20687)
Commit · Pull requestMakes sure that Vaadin thread locals are cleared even if something fails durung requestEnd execution. It also wraps Vaadin interceptors execution in a try/catch block to ensure all of them are invoked and that potential failures does not affect the continuation of requestEnd method.
Vaadin Flow 24.6.0.rc1
Changes since 24.6.0.beta8
Fixes
-
Fix redirect URL for PUSH with websocket transport (#20666)
Commit · Pull request · Issue -
Appended path on fast navigate (#20673)
Commit · Pull request · IssueWhen navigating in quick succession check that path starts with / as else react wll append to current url.
-
Complete client websocket future on open (#20587)
Commit · Pull request · IssueCompleting the websocket future in onOpen event prevents the connection to hang indefintely when application run on low resources.
-
Wrap UI closing to catch exceptions (#20645)
Commit · Pull request · IssueWhen session destroy is triggered, wraps each UI close/detach to catch exceptions, making sure session destroy listeners are called.
-
Prevent generated pwa icons to be added to manifest (#20639)
Commit · Pull requestGenerated PWA icons are served at runtime by PwaHandler, that also takes care of adding a subset of them to the web manifest for caching. However, the Vite inject-manifest-to-sw plugin adds all generated icons to the manifest with /pwa-icons path prefix making them pre-cached by the browser and potentially breaking pre-defined security rules. This change prevents generated icons to be added to the manifest, preserving the previous behavior.
Vaadin Flow 24.7.0.alpha1
Changes since 24.6.0.beta3
New features
-
Resend payload of reoccuring client request
Commit · Pull requestIf the client request contains the previous id and exactly the same message content respond with the same payload as previously.
Fixes
-
Prevent generated pwa icons to be added to manifest
Commit · Pull requestGenerated PWA icons are served at runtime by PwaHandler, that also takes care of adding a subset of them to the web manifest for caching. However, the Vite inject-manifest-to-sw plugin adds all generated icons to the manifest with /pwa-icons path prefix making them pre-cached by the browser and potentially breaking pre-defined security rules. This change prevents generated icons to be added to the manifest, preserving the previous behavior.
-
Wrap UI closing to catch exceptions
Commit · Pull request · IssueWhen session destroy is triggered, wraps each UI close/detach to catch exceptions, making sure session destroy listeners are called.
-
Service destroy listener exceptions
Commit · Pull requestRelated to #20577
-
Remove timeout for browser websocket connection for Vite
Commit · Pull request -
Enforce plugin-required dependencies and log incompatibilities
Commit · Pull request · IssueThe Flow Maven Plugin uses a class loader that combines project and plugin dependencies to ensure class scanning happens on runtime artifacts. However, plugin execution may fail if the project defines dependency versions incompatible with those used by the plugin. This change enforces the use of plugin-defined versions for certain dependencies not directly used by Flow at runtime. Additionally, it logs potential incompatibilities for other dependencies if the build fails.
-
Remove modal component on route refresh
Commit · Pull request · IssueModal components attached to the UI were not removed or replaced during self-navigation triggered by a route refresh. This change updates navigation handler to ensure modal components are removed and adds a new navigation trigger for route refresh to differentiate programmatic navigations (e.g., forward actions). It also modifies Hotswapper to require a full chain refresh when modal components are present.
-
Add vite-ping subprotocol to Vite websocket proxy
Commit · Pull request · Issue -
Include all component tracker locations
Commit · Pull requestSome filtering was already earlier moved to Copilot and handling everything in the same place is easier
-
Compute unique key for artifact
Commit · Pull requestComputes a unique key for maven artifacts when collecting dependencies for the Flow maven plugin isolated classloader.
-
Prevent hotswap failure if class is not found
Commit · Pull requestReferences #20389
-
Multiple fast navigate calls
Commit · Pull request · Issueand fast
navigate
calls throws exception due to faulty blocker state change. Add test view for manual testing. Test script doesn't fail on double click.
Vaadin Flow 24.6.0.beta8
Changes since 24.6.0.beta7
Fixes
-
Add React Router future flags for flow auto-generated routes file
Commit · Pull request -
Service destroy listener exceptions (#20622)
Commit · Pull requestRelated to #20577
-
Remove timeout for browser websocket connection for Vite (#20611)
Commit · Pull request
Vaadin Flow 24.5.9
Changes since 24.5.8
Fixes
-
Remove timeout for browser websocket connection for Vite (#20611)
Commit · Pull request -
Enforce plugin-required dependencies and log incompatibilities (#20601)
Commit · Pull request · IssueThe Flow Maven Plugin uses a class loader that combines project and plugin dependencies to ensure class scanning happens on runtime artifacts. However, plugin execution may fail if the project defines dependency versions incompatible with those used by the plugin. This change enforces the use of plugin-defined versions for certain dependencies not directly used by Flow at runtime. Additionally, it logs potential incompatibilities for other dependencies if the build fails.
Vaadin Flow 24.6.0.beta7
Changes since 24.6.0.beta6
Fixes
-
Enforce plugin-required dependencies and log incompatibilities (#20601)
Commit · Pull request · IssueThe Flow Maven Plugin uses a class loader that combines project and plugin dependencies to ensure class scanning happens on runtime artifacts. However, plugin execution may fail if the project defines dependency versions incompatible with those used by the plugin. This change enforces the use of plugin-defined versions for certain dependencies not directly used by Flow at runtime. Additionally, it logs potential incompatibilities for other dependencies if the build fails.
Vaadin Flow 24.6.0.beta6
Changes since 24.6.0.beta5
Fixes
-
Remove modal component on route refresh (#20540)
Commit · Pull request · IssueModal components attached to the UI were not removed or replaced during self-navigation triggered by a route refresh. This change updates navigation handler to ensure modal components are removed and adds a new navigation trigger for route refresh to differentiate programmatic navigations (e.g., forward actions). It also modifies Hotswapper to require a full chain refresh when modal components are present.
-
Add vite-ping subprotocol to Vite websocket proxy (#20578)
Commit · Pull request · Issue
Vaadin Flow 24.5.8
Changes since 24.5.7
Fixes
-
Remove modal component on route refresh (#20540)
Commit · Pull request · IssueModal components attached to the UI were not removed or replaced during self-navigation triggered by a route refresh. This change updates navigation handler to ensure modal components are removed and adds a new navigation trigger for route refresh to differentiate programmatic navigations (e.g., forward actions). It also modifies Hotswapper to require a full chain refresh when modal components are present.
-
Include all component tracker locations (#20568)
Commit · Pull requestSome filtering was already earlier moved to Copilot and handling everything in the same place is easier
-
Compute unique key for artifact (#20551)
Commit · Pull requestComputes a unique key for maven artifacts when collecting dependencies for the Flow maven plugin isolated classloader.
-
Prevent hotswap failure if class is not found (#20549)
Commit · Pull requestReferences #20389