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.