Changes since 25.0.0-beta9
Breaking changes
-
Move FileIOUtils to more appropriate package
Commit · Pull request -
Move ExecutionFailedException to frontend package
Commit · Pull requestIt is related only to FallibleCommand which is in .frontend
New features
-
Add download-offline-license Maven goal
Commit · Pull requestAdd a new Maven goal that provides a URL for downloading an offline license key. Unlike download-license which opens a browser and downloads the license automatically, this command displays a machine-specific URL that users can visit to manually download an offline license. The offline license is tied to the machine's hardware ID and must be saved to ~/.vaadin/offlineKeyV2.
-
Add reflection hints for ClientCallable types
Commit · Pull request · IssueAdds a Spring AOT processor that scans application code for ClientCallable annotated methods and registers reflection hints for native build for method return type and parameter types.
-
Add ColorScheme.Value.SYSTEM for intuitive system preference support
Commit · Pull request · IssueAdd SYSTEM enum constant to ColorScheme.Value that provides a more intuitive name for developers wanting to follow system color scheme preferences. This addresses the confusion around LIGHT_DARK and DARK_LIGHT naming. SYSTEM maps to the CSS value "light dark" (same as LIGHT_DARK), supporting both light and dark modes while defaulting to light when system preference cannot be determined.
-
Optimize StyleSheet css for production build
Commit · Pull request · IssueMinify and inline imports for css imported using StyleSheet annotation.
Fixes
-
Avoid "leaking" experimental features to stable interfaces
Commit · Pull requestNote, might be still binary incompatible, but at least shouldn't for users to implement this yet.
-
Ignore bundling for Lumo utilities in live updater
Commit · Pull request -
Import resolution when no Theme
Commit · Pull requestis no (a)Theme available in the project. normalizePath works correctly. Closes #22725
-
Convert null signal value to blank in bindText
Commit · Pull request · IssueElement.setText(String) already converts null to blank. This change makes bindText to work in the same way with null signal value.
-
Do not log an error if the user aborts an upload
Commit · Pull request -
Allow non-Serializable beans in Element.callJsFunction
Commit · Pull requestElement.callJsFunction was incorrectly using Serializable[] for parameter storage and System.arraycopy to copy Object[] arguments. This caused ArrayStoreException when passing non-Serializable objects like plain beans or records. Changed to use Object[] instead, matching the implementation pattern used in Element.executeJs and Page.executeJs, which correctly support all Jackson-serializable types including non-Serializable beans. Added test to verify beans can be passed to callJsFunction.
-
Ensure themes stylesheets pattern is relative to context root
Commit · Pull request · IssueAura and Lumo stylesheets are loaded by the servelt container so they should not be potentially prefixed by the Vaadin servlet URL mapping.
-
Clean comments from content
Commit · Pull request · IssueClean the comments from the css content before collecting imports to not handle commented out imports.
-
Add reflection hints for Dependency class
Commit · Pull request · IssueIn previous Flow versions, Dependency class had a toJson method that created an elemental JsonObject to be sent to the client as JSON. However, the method has been removed and replaced by Jackson serialization. This causes wrong JSON serialization in native executables because reflection is required, but metadata is not stored for the Dependency class. This change adds the missing reflection hint for the Dependency class. It also replaces a useless JSON to string to JSON conversion.
-
Ensure route annotation is on component class
Commit · Pull request · IssueThrows an exception at startup if a Route annotation is put on a class that does not extend Component.