Changes since 24.4.0.beta1
Breaking changes
-
Rename createWebComponent method
Commit · Pull requestRename the createWebComponent function as the create gives the impression that the function is heavy. ---------
New features
-
Add alternative translate methods to I18NProvider
Commit · Pull request · IssueAdds static
I18NProvider#translate
methods for alternative way to get translation. Compares to calling getTranslation viaVaadinService.getCurrent().getInstantiator().getI18NProvider()
.translate
methods throws IllegalStateException without active VaadinService. -
Speedup startup time by excluding jars
Commit · Pull request · IssueOptimize class scanning of VaadinServletContextInitializer by excluding some commonly used jars and add support for vaadin.blocked-jar boolean property in META-INF/VAADIN/package.properties to exclude whole jar content from the class scanner.
-
Filter client routes by authentication and role
Commit · Pull requestAdd filtering of menu client routes by checking authentication and roles. Do not check for routes in ClientRoutesProvider as the results are generated from the same source data as the data read/generated by MenuRegistry. Part of #19321
-
Add MAU tracking for routing
Commit · Pull requestPart of vaadin/platform#6430 add tests revert it test This reverts commit 2998206. ---------
-
API for reloading current route target
Commit · Pull request -
Get menu views api
Commit · Pull request · IssueCreate MenuRegistry for getting automatic menu views for population.
-
Added HasLabelAsText interface to NativeButtonElement.
Commit · Pull request -
Filterable class scanning of JAR
Commit · Pull request · IssueThis change improves optimization of class scanning of
VaadinServletContextInitializer
by reading optional configuration file within a JAR dependency. Configuration file is a regular properties file that can containvaadin.allowed-packages
orvaadin.blocked-packages
to exclude/include packages being scanned byVaadinServletContextInitializer
. Package exclusion/inclusion effects only classes in the JAR/module whereMETA-INF/VAADIN/package.properties
is located at. Notice that this is only affecting the performance of the class scanning of Vaadin specific annotations and types and this feature is not meant to be used for excluding packages from the whole application. E.g. excludingVaadinServiceInitListener
in a Spring application is not stopping Spring and Vaadin initializing it anyway, although some time-consuming actions likeDevModeServletContextListener
would still exclude it for optimization.
Fixes
-
Add missing reflection hints for flow-components
Commit · Pull request · IssueConfigures additional reflection hints required by flow-components for native image.
-
Use maven project classpath to detect Hilla presence
Commit · Pull requestIf the project does not define the frontendHotdeploy property, the Flow maven plugins tries to detecte the correct value by analysing project files and looking for Hilla presence by checking for its classes in classpath. However, when FrontendUtils.isHillaUsed() method is called from the maven mojo it can return a wrong value, since Class.forName check is performed using the plugin classloader that do not contain Hilla artifacts. This change makes the mojo isFrontendHotdeploy() method using the project classpath to check for Hilla presence.
-
Add missing hints to fix native compilation
Commit · Pull request · Issues 19405, 19405 -
Prevent prepare-frontend to remove Hilla generated files
Commit · Pull request · Issue -
Do not warn about all vaadin. sysprops*
Commit · Pull requestintroduce new featureflag prefix ---------
-
Support route parameters in menu
Commit · Pull request · Issue -
Add reflection hints for VaadinRolePrefixHolder
Commit · Pull request · Issue -
Avoid blocking thread on ViteWebsocketConnection creation
Commit · Pull request · IssueIt may happen that the thread that is createing ViteWebsocketConnection gets blocked when trying to create the internal websocket client, because a message from Vite server may be received and forwarded to the browser websocket before the websocket client creation future is completed, leaving the browser request thread pending indefinitely. This change creates the websocket client asynchronously, but immediately closing the browser connection if the client connection cannote be established.
-
Ignore irrelevant whitespace for ts files
Commit · Pull request -
Do not set lastHandledNavigation on refresh
Commit · Pull request -
Add explicit dependency to JDK classes in vaadin-dev-server
Commit · Pull request · Issues 17159, 636Adds the Dependencies manifest entry to the vaadin-dev-server artifact to prevent runtime errors raised by FileWatcher when application is deployed in Wildfly.
-
Clear preseved chain cache for inactive UI
Commit · Pull requestPrevents potential memory leaks caused by UIs being retained by the preserve on refresh cache when the browser page is closed.
-
Provide specific package-lock.json for hybrid applications
Commit · Pull request · IssueThe package-lock.json provided by the pre-compiled dev-bundle contains no Hilla dependencies, slowing down the first frontend build. This change attempts to extract a package-lock.json file specific to the hybrid application from the bundle, possibly falling back on the standard one.
-
Set page title to documentTitleSignal
Commit · Pull request · IssueUIInternals#setTitle(String)
sets page title via JavaScript todocument.title
and optionallywindow.Vaadin.documentTitleSignal.value
where documentTitleSignal is expected but not limited to be Signal type with a value field. This allows Hilla main layout, when used, being kept in sync with the Flow page title even when set via PageTitle annotation or HasDynamicTitle interface. -
Change type of Menu order to double
Commit · Pull request · IssueChanging
Menu#order
type double andMenuData#order
type to Double to match it with Hilla'sViewConfig
typenumber
. -
Add warnings for unsupported feature flags
Commit · Pull request · IssueThere was no indication if you were using non-existent or unsupported feature flags at startup. This change brings log warnings about existence of such feature flags
-
Reload flow after hmr reload in dev mode
Commit · Pull request · IssueReset and reload flow when a template hrm reload happens.
-
Fix failure when Vite sends many messages in sequence
Commit · Pull requestSending multiple messages at the same time resulted in java.lang.IllegalStateException: The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state for called method which originates in calling
browserSession.getAsyncRemote().sendText
a second time before the complete callback for the first call has been called. Now the getBasicRemote() method is used instead which blocks until the message has been sent. -
Include system classpath elements when collecting
Commit · Pull request -
Prevent exception getting DevModeHandlerManager on application shutdown
Commit · Pull request · IssueDuring the destruction of the web applicationi context, the DevModeStartupListener's context destroy listener is invoked. This listener attempts to locate the DevModeHandlerManager to halt the Vaadin dev-server. However, this process could trigger an exception if the dependency injection container behind the Lookup mechanism has already been stopped. This commit addresses the issue by capturing a reference to the handler during web context start, eliminating the need for a lookup during destruction, thus preventing potential exceptions.
-
Include filesystem dependencies in gradle plugin class finder
Commit · Pull request · IssueGradle plugin builds a class finder upon the JAR files obtained through the project dependencies resolved artifacts, that however does not include filesystem dependencies. This change adds filesystem dependencis to the list of project JAR files provided to the class finder.
-
Make property change listener trigger on removeProperty
Commit · Pull request · IssueRemoving element property by calling com.vaadin.flow.internal.nodefeature.AbstractPropertyMap#removeProperty does not trigger property change listener because of com.vaadin.flow.internal.nodefeature.ElementPropertyMap#remove method is skipped due to AbstractPropertyMap#removeProperty method calls super: public void removeProperty(String name) { super.remove(name); }
-
Prevent embedded styles to leak main document
Commit · Pull request · Issues 12704, 19265When using an exported a themed Flow web-component, Lumo style may leak the embedding document, causing invalid CSS rules to be applied. This change prevents applying Lumo global imports when the theme is applied to a web-component.