Releases: vaadin/flow
Vaadin Flow 25.0.0-alpha14
Changes since 25.0.0-alpha13
Breaking changes
-
Remove ComponentEffect.format
Commit · Pull request · Issue -
Jackson for last elemental use
Commit · Pull requestUse Jackson in all places except flow-server/shared and flow-client
New features
- Commercial Banner Update: Styles & Accessibility
Commit · Pull request - Remove legacy frontend folder fallback
Commit · Pull request · Issue - Extract Signal interface for simple computed signals
Commit · Pull request · Issue
Fixes
-
Fix npm assets for dev bundle
Commit · Pull request · Issuetiming when making a devBundle.
-
Log creating dev bundle differently
Commit · Pull requestLog the dev bundle creation at a earlier time. Closes #16038
-
Copy all frontend resources from JAR files
Commit · Pull request · IssueFrontend resources in JAR files are filtered to only copy a hard-coded set of file types like JS, TS, CSS, etc. Since the resources are collected only from specific folders, the filter is most likely unecessary and also makes it impossible to use fronted frameworks that rely on custom extensions (e.g. Vue). This change removes the file extension filter, allowing all files in META-INF/frontend and META-INF/resources/frontend to be copied in the frontend generated folder.
-
Do not run any Maven goals automatically in Eclipse / VS Code (#13302)
Commit · Pull requestIt seems like especially VS Code can start running
prepare-frontend
over and over again in some cases which will interfere with an externally runningmvn spring-boot:run
process that will continuously restart because of an updatedtarget/classes/META-INF/VAADIN/config/flow-build-info.json
There should be no need nowadays to runprepare-frontend
from Eclipse at all as it is run through the dev server if needed. -
Array type should be serializable
Commit · Pull requestNot depending on what type array is given to Serializable... the copied array should be of type Serializable[] to enable adding Element to it.
-
Move map from AbstractSignal to Signal
Commit · Pull request · Issue -
Preserve './' prefix in import path normalization (#22173)
Commit · Pull requestThe normalizePath method was removing the './' prefix when normalizing paths, causing spurious warnings about missing prefixes for generated JavaScript files. This fix preserves the original './' prefix after path normalization to prevent these unclear warning messages. 🤖 Generated with Claude Code
-
Optimize Element API for small datasets
Commit · Pull request · IssueReduces usage of Stream API in executeJs and callJsFunction methods for improved performance with small datasets. These methods are usually used with one to few objects in the dataset, they can be called a lot depending on a number of active sessions. This change replaces Stream API usage with Array API, Arrays.copyOf, and System.arraycopy.
-
Fix init location computation
Commit · Pull request · IssueFlow client computes the initial location to be sent to the server by getting the current location and removing the document base URI part. However, the process performs an URL decode only for the location causing replacement to fail if the web application context path contains URL encodable characters. This change makes sure that both texts are URL decoded before performing the replacement. It also ensure that the regex based on document baseURI is correctly escaped.
-
Try activate or download a license when 7-day trial expires
Commit · Pull requestCurrently Flow redirects to /pricing which doesn't lead to proKey download even if a user signs in and starts the commercial trial. Flow should instead try to download a license with the license checker's vaadinComIntegration.openBrowserAndWaitForKey method. Basically same as for the first splash screen.
Vaadin Flow 24.7.13
Changes since 24.7.12
Fixes
-
Copy all frontend resources from JAR files (#22264)
Commit · Pull request · IssueFrontend resources in JAR files are filtered to only copy a hard-coded set of file types like JS, TS, CSS, etc. Since the resources are collected only from specific folders, the filter is most likely unecessary and also makes it impossible to use fronted frameworks that rely on custom extensions (e.g. Vue). This change removes the file extension filter, allowing all files in META-INF/frontend and META-INF/resources/frontend to be copied in the frontend generated folder.
-
Array type should be serializable (#22254)
Commit · Pull requestNot depending on what type array is given to Serializable. The copied array should be of type Serializable[] to enable adding Element to it.
-
Optimize Element API for small datasets (#22196)
Commit · Pull request · IssueReduces usage of Stream API in executeJs and callJsFunction methods for improved performance with small datasets. These methods are usually used with one to few objects in the dataset, they can be called a lot depending on a number of active sessions. This change replaces Stream API usage with Array API, Arrays.copyOf, and System.arraycopy.
-
Fix init location computation (#22225)
Commit · Pull request · Issue -
Fix faulty javadoc for acceptNullValues (#22187)
Commit · Pull request · IssueacceptNullValues that mistakenly says that true throws an exception.
Vaadin Flow 24.9.0
Changes since 24.9.0-rc2
All changes since previous release
New features
-
7-days free trial without registration
Docs (in draft)
This allows new users to start using Vaadin commercial products right away without any registration on vaadin.com by clicking on the button that is on the trial splash screen shown by Vaadin application. Also allows to run in production without a license but with commercial banner by adding-Dvaadin.commercialWithBanner
to the production build.Related sub-features:
-
Try to download license key when log in from splash screen
Commit · Pull request
When pressing the login button on the splash screen, redirects the user to the vaadin.com license validation endpoint and polls license server to download a license key. If the license key is available the application browser page gets reloaded. Otherwise an error message is shown. -
Add base license checker init listener
Commit · Pull request
Provides a basic VaadinServiceInitListener implementation to perform license checking of a specific product at startup. License checking is executed only in development mode. In case of missing license keys it will either delegate the check to the Vaadin Dev Server, or open a browser to allow sign in and download a key if the dev server is disabled. -
Enable premium features when building with banner
Commit · Pull request -
Add commercial banner for embedded Flow components
Commit · Pull request -
Add pre-trial splash screen
Commit · Pull request
Shows a splash screen when a commercial component is detected at runtime in development mode, but there are no license keys available. The splash screen prevents the user from interacting with the application and it allows either starting a pre-trial or to log in to the vaadin.com account and download a license key. After starting a pre-trial, the page is reloaded to make the application usable. If the per-trial period has expired, the splash screen presents a button that forwards to the vaadin.com website to extend the trial. -
Show watermark in production mode
Commit · Pull request
Shows a watermark component at runtime for watermarked applications running in production. The watermark component is added to the bundle at build time and activated if needed at runtime. -
Allow production build with watermark
Commit · Pull request
Adds a configuration that allows to build watermarked applications with commercial components when no license key can be found. -
Update pre-trial splash screens with a new design (#22164)
Commit · Pull request
-
-
Commercial Banner Update: Styles & Accessibility (#22253)
Commit · Pull request -
Added new style methods
Commit · Pull requestAdd methods to better cover commonly used css properties.
-
Add a short method to SortDirection enum
Commit · Pull request · IssueThe SortDirection enum only provides name(), getOpposite() methods. This change introduces a new method called getShortName() which returns shortened version of SortDirection. This short names can be useful in the SQL queries etc.
-
Add Flow component for code Html element #20832
Commit · Pull request -
Add convenient API to set items (#21979)
Commit · Pull request · IssueAdd convenient API to set items with ListDataView#setItems(Collection).
-
Add Exception to DownloadResponse and TransferContext (#22066)
Commit · Pull request · IssueAdds DownloadResponse#exception and TransferContext#exception of type java.lang.Exception. Updates DownloadHandlers to fill exception automatically in case of IOException (or RuntimeException, or error in DownloadResponse for InputStreamDownloadHandler).
-
Assets using NpmPackage (#22027)
Commit · Pull request · Issue -
Clarify SignalEnvironment details (#22116)
Commit · Pull request -
Make signal environment init optional (#22074)
Commit · Pull request · IssueAlso removes the duplicate staticMocks variants in VaadinServiceSignalsInitializationTest
Deprecations
-
Deprecate VaadinWebSecurity (#21838)
Commit · Pull request · Issue -
Hierarchical data provider related classes and methods
Vaadin Flow 24.9.0-rc2
Changes since 24.9.0-rc1
Fixes
-
Try activate or download a license when 7-day trial expires (#22227)
Commit · Pull requestCurrently Flow redirects to /pricing which doesn't lead to proKey download even if a user signs in and starts the commercial trial. Flow should instead try to download a license with the license checker's vaadinComIntegration.openBrowserAndWaitForKey method. Basically same as for the first splash screen.
-
Handle exceptions from effect and compute callbacks (#22148)
Commit · Pull request · IssueEffect exceptions are handled gracefully by logging the exception and allowing processing to continue. For an error, the effect is additionally also disabled so that it will no longer be run. Exceptions from computed signals are cached and re-thrown when reading the signal value.
-
Fix faulty javadoc for acceptNullValues (#22187)
Commit · Pull request · IssueacceptNullValues that mistakenly says that true throws an exception.
Vaadin Flow 25.0.0-alpha13
Changes since 25.0.0-alpha12
Breaking changes
-
Drop lumo imports from theme plugin
Commit · Pull request -
NodeChange to use Jackson
Commit · Pull requestCloses #21154
Fixes
-
Fix faulty javadoc for acceptNullValues
Commit · Pull request · IssueacceptNullValues that mistakenly says that true throws an exception.
-
Release no longer visible items from memory
Commit · Pull request · IssueThis change ensures that items are removed from the HierarchicalDataCommunicator's cache and properly disposed of in both KeyMapper and DataGenerator once they move out of the viewport. Without this, such features as ComponentRenderer can cause high memory usage on the client side because the Flow client continues to retain references to DOM elements that are no longer visible.
-
Make access denied a warning
Commit · Pull requestMake the access denied issue when paren layout access is denied a warning log instead of a debug log.
-
Log available component styles
Commit · Pull requestLog the component styles that are not applied with missing flag. WARN com.vaadin.flow.server.frontend.TaskUpdateThemeImport - Theme 'app-theme' contains component styles, but the 'themeComponentStyles' feature flag is not set, so component styles will not be used for vaadin-radio-button.css vaadin-text-field.css
-
Handle exceptions from effect and compute callbacks
Commit · Pull request · IssueEffect exceptions are handled gracefully by logging the exception and allowing processing to continue. For an error, the effect is additionally also disabled so that it will no longer be run. Exceptions from computed signals are cached and re-thrown when reading the signal value.
Vaadin Flow 24.9.0-rc1
No changes since 24.9.0-beta3
Vaadin Flow 25.0.0-alpha12
Changes since 25.0.0-alpha11
Breaking changes
-
Use Jackson in flow-data package
Commit · Pull request -
Use Jackson in RpcDecoders
Commit · Pull request
New features
-
Update pre-trial splash screens with a new design
Commit · Pull request -
Add flattened hierarchy support to TreeDataProvider
Commit · Pull requestPart of #21879
Fixes
-
Skip pre-trial validation when clicking on Log in or Sign up
Commit · Pull request -
Mulimodule reload time tests
Commit · Pull requestreload time tests.
-
Reaload time test
Commit · Pull requestthat used elemental instead of jackson for eventData
-
Mapping of ArrayNode
Commit · Pull requestTransform ArrayNode to JsonArray correctly. Handle NullNode correctly.
-
Don't let signals fail service init
Commit · Pull requestWhile we allow ourselves to be less careful with changes related to signals while the feature is behind a feature flag, we want to prevent mistakes or e.g. version mismatches from causing problems. We cannot do the whole initialization only when the flag is enabled since that removes our possibility of providing useful message if trying to use the feature without the flag enabled.
-
Handle elemental and jackson
Commit · Pull request -
Component styles feature flag not working in Gradle projects
Commit · Pull request
Vaadin Flow 24.9.0-beta3
Changes since 24.9.0-beta2
New features
- Update pre-trial splash screens with a new design (#22164)
Commit · Pull request
Fixes
-
Skip pre-trial validation when clicking on Log in or Sign up (#22156)
Commit · Pull request -
Don't let signals fail service init (#22139)
Commit · Pull requestWhile we allow ourselves to be less careful with changes related to signals while the feature is behind a feature flag, we want to prevent mistakes or e.g. version mismatches from causing problems. We cannot do the whole initialization only when the flag is enabled since that removes our possibility of providing useful message if trying to use the feature without the flag enabled.
Vaadin Flow 25.0.0-alpha11
Changes since 25.0.0-alpha10
Breaking changes
-
ElementData to Jackson
Commit · Pull request · Issue -
Remove deprecated APIs
Commit · Pull request -
Upgrade to React 19
Commit · Pull requestRemoves the React 19 feature flag and always uses React 19.
-
Remove @polymer/polymer dependency by default
Commit · Pull request · IssueRemoves @polymer/polymer dependency from default package.json if polymer-template module is not found from the project. Module is not included by default.
-
Centralize hierarchy management server-side
Commit · Pull request · Issues 21876, 21877The PR refactors HierarchicalDataCommunicator so that hierarchy management (expanded items, hierarchical cache) is centralized on the server side instead of being shared between client and server. This makes the client a simple consumer of flattened data lists, which significantly reduces the client-side complexity and opens the door for in troducing flat data providers to support fetching flattened data directly from the data source. Key changes HierarchyMapper and HierarchicalCommunicationController have been replaced with the new concept, Cache. This new class provides a system for storing data in a hierarchical structure while enabling access in a flattened format for client-side consumption. setRequestedRange and setParentRequestedRange have been replaced with a single setViewportRange which spans all hierarchy levels. Caveats setViewportRange does not currently remove items from Cache and KeyMapper when they move out of the viewport. However, the previous version also only removed items from KeyMapper while keeping them in HierarchyMapper, so item instances actually continued to remain in memory. I feel this could be optimized separately if needed. setViewportRange currently always sends the full viewport to the client even when some items are already present on the client-side. I plan to address this separately, see #21989 refresh(T item) currently also sends the full viewport on every item refresh. I plan to address this separately, see #21989 Test coverage The PR aims at providing test coverage for all core functionality and public APIs. Individual tests for internal APIs such as Cache will be added separately. The refactoring successfully passes all TreeGrid ITs, see #7676 Depends on refactor: remove deprecated HierarchicalDataCommunicator APIs #21965
New features
-
Enable client-side logging in production via localStorage flag (#17935)
Commit · Pull requestAllow dynamic control of browser console logging in production mode by checking localStorage for "vaadin.browserLog" flag. Developers can now enable client-side logging in production using: localStorage.setItem('vaadin.browserLog', 'true') This helps with debugging production issues without requiring JAR modifications or rebuilds. � Generated with Claude Code
-
Clarify SignalEnvironment details
Commit · Pull request -
Make signal environment init optional
Commit · Pull request · IssueAlso removes the duplicate ___staticMocks variants in VaadinServiceSignalsInitializationTest ---------
-
Introduce flattened hierarchy format
Commit · Pull requestThe PR introduces a new getHierarchyFormat() method to HierarchicalDataProvider. It can be configured to return either HierarchyFormat#NESTED (default) or HierarchyFormat#FLATTENED (new). The selected format defines in what way the data provider returns hierarchical data and how HierarchicalDataCommunicator should fetch and render it.
Fixes
-
Log "Connection remotely closed" IOException at debug level
Commit · Pull request · IssueChanges the log level from ERROR to DEBUG for the specific IOException that occurs when a client connection dies during push communication. This reduces noise in logs, especially during integration tests.
-
Filename encoding of download
Commit · Pull request · IssueApplies utf-8 encoding by default in Content-Disposition header for DownloadEvent.
Vaadin Flow 23.6.5
Changes since 23.6.4
Fixes
-
Log "Connection remotely closed" IOException at debug level (#22102)
Commit · Pull request · IssueChanges the log level from ERROR to DEBUG for the specific IOException that occurs when a client connection dies during push communication. This reduces noise in logs, especially during integration tests.
-
Fixed high CPU usage due to pending JS commands (#22024) (#22035)
Commit · Pull request · IssueField "pendingJsInvocations" should be a Set instead of a List in order to avoid O(n^2) operations. This greatly improves performance in situations where many fields are updated constantly and the JS command queue becomes very large. (cherry picked from commit dfe8763)