Skip to content

Releases: vaadin/flow

Vaadin Flow 25.0.0-beta5

12 Nov 08:21
cf72357

Choose a tag to compare

Pre-release

Changes since 25.0.0-beta4

All changes

Breaking changes

  • Enable productionMode with Gradle's bootJar
    Commit · Pull request

    Flow Gradle plugin enable productionMode automatically when run with bootJar or bootBuildImage task. -Pvaadin.productionMode=false overrides automation.

Vaadin Flow 25.0.0-beta4

12 Nov 08:21
4d1ecd9

Choose a tag to compare

Pre-release

Changes since 25.0.0-beta3

All changes

Breaking changes

  • Remove elemental-json from flow-server
    Commit · Pull request

    Remove all elemental-json usage from flow-server module (excluding flow-client which still uses it for GWT). This removes internal APIs and updates all code to use Jackson 3 exclusively. Changes: - Delete JsonUtils.java and JsonSerializer.java (internal APIs) - Remove elemental-json bridge methods from JacksonUtils.java - Remove gwt-elemental dependency from flow-server/pom.xml - Update EventData documentation to remove elemental.json.JsonValue - Update VaadinServletContextInitializer package exclusions - Update RouterLinkView test to use Jackson ObjectNode - Update DefaultApplicationConfigurationFactoryTest to use JacksonUtils BREAKING CHANGE: Internal APIs JsonUtils and JsonSerializer have been removed. Applications should use Jackson 3 types (JsonNode, ObjectNode, ArrayNode) and JacksonUtils methods instead. The EventData annotation no longer supports elemental.json.JsonValue - use JsonNode instead.

  • NPM assets available under assets
    Commit · Pull request · Issue

    Copy all npm assets to sub folder assets in VAADIN/static and accept redirect for /assets/{filepath} to prepend VAADIN/static to the requested file. This reverts commit 9ae2190.

  • Change Dependency.toJson() to return Jackson ObjectNode
    Commit · Pull request

    Server-side code now uses Jackson's automatic bean serialization via valueToTree(). Client-side GWT tests use helper methods to manually construct elemental JSON when needed for testing.

New features

  • Add SignalPropertySupport helper
    Commit · Pull request · Issue

    Provides a SignalPropertySupport helper class that encapsulates the state management needed for making getXyz, setXyz, and bindXyz behave in the same way as Signal for Element properties.

  • Add Tailwind CSS support behind the feature flag
    Commit · Pull request · Issue

  • Add UI.ensureCurrent() to provide better error message if UI is not available
    Commit · Pull request

    Add a new UI.ensureCurrent() method that returns a non-null UI instance or throws IllegalStateException with a helpful error message guiding developers to use UI.access() for background threads. This provides a cleaner alternative to the UI.getCurrent() + null check pattern and makes code more explicit about requiring an active UI context.

Fixes

  • CssImport in webcomponentexporter should not show in document
    Commit · Pull request · Issue

    Any CssImport added to a WebComponentExporter should only be applied to the WebComponent and not apply to elements outside the component.

  • Wait for dev server in DevModeNoClassCacheIT to prevent flaky test
    Commit · Pull request

    The test was timing out waiting for the "last-span" element because it didn't wait for the Vite dev server to fully initialize before checking for DOM elements. Adding waitForDevServer() ensures the dev server, Spring Boot app, and view rendering complete before assertions.

  • Extract filename and content type from headers in StreamReceiverHandler for XHR uploads
    Commit · Pull request

    StreamReceiverHandler.doHandleXhrFilePost() was using hardcoded "unknown" values for both filename and content type, even though the headers were available in the request. This fix: - Extracts filename from X-Filename header (with proper decoding) - Extracts content type from Content-Type header - Creates reusable helper methods in TransferUtil to avoid duplication with the existing XHR upload handling code (from commit 1c777e1)

  • Use content type from header and name from X-Filename/Content-Disposition for XHR uploads
    Commit · Pull request

    Uses the filename from a X-Filename header (set by vaadin-upload). The filename is encoded using JavaScript's encodeURIComponent and decoded on the server using UrlUtil.decodeURIComponent (RFC 3986).

  • Flush outputStream after write
    Commit · Pull request

    transfer() method should call flush() on the OutputStream before returning to ensure all buffered data is actually written

  • Invalid generated javascript
    Commit · Pull request · Issue

  • Use ResourceProvider to search for frontend resources
    Commit · Pull request · Issue

    Using resource provider to search for frontend resources prevents potential issues with environment that use multiple classloaders, like Quarkus. Every environment can provide its own resource provider implementation that uses the best approach for loading resources from classpath.

  • Do not use undefined this.log
    Commit · Pull request

Vaadin Flow 24.9.5

10 Nov 07:35
bd93f19

Choose a tag to compare

Changes since 24.9.4

All changes

Fixes

  • Flush outputStream after write (#22660)
    Commit · Pull request

    transfer() method should call flush() on the OutputStream before returning to ensure all buffered data is actually written

  • Use ResourceProvider to search for frontend resources (#22627)
    Commit · Pull request · Issue

    Using resource provider to search for frontend resources prevents potential issues with environment that use multiple classloaders, like Quarkus. Every environment can provide its own resource provider implementation that uses the best approach for loading resources from classpath.

  • Respect spring.devtools.livereload.enabled property (#22624)
    Commit · Pull request · Issue

    When developers set spring.devtools.livereload.enabled=false, the application should not attempt to establish a WebSocket connection to the Spring Boot livereload server. This commit fixes the issue by checking the enabled property at the source (SpringDevToolsPortHandler) and propagating the result through the entire chain: - SpringDevToolsPortHandler: Only assigns port if livereload enabled - IndexHtmlRequestHandler: Only includes liveReloadPort in config if set - vaadin-dev-tools.ts: Only creates WebSocket connection if port exists

Vaadin Flow 24.8.12

10 Nov 07:35
6273b4a

Choose a tag to compare

Changes since 24.8.11

All changes

Fixes

  • Flush outputStream after write (#22660)
    Commit · Pull request

    transfer() method should call flush() on the OutputStream before returning to ensure all buffered data is actually written

  • Use ResourceProvider to search for frontend resources (#22627)
    Commit · Pull request · Issue

    Using resource provider to search for frontend resources prevents potential issues with environment that use multiple classloaders, like Quarkus. Every environment can provide its own resource provider implementation that uses the best approach for loading resources from classpath.

Vaadin Flow 25.0.0-beta3

31 Oct 16:02
46e8c23

Choose a tag to compare

Pre-release

Changes since 25.0.0-beta2

All changes

New features

  • Add varargs-based scrollIntoView API
    Commit · Pull request

    Allows doing component.scrollIntoView(ScrollIntoViewOption.Behavior.SMOOTH, ScrollIntoViewOption.Block.END, ScrollIntoViewOption.Inline.CENTER); without creating an intermediate options object. Consistent with the focus(...) API

  • Add preventScroll and focusVisible support to Focusable
    Commit · Pull request · Issue

    Add FocusOption... to focus so you can do e.g. focus(FocusOption.VISIBLE) or focus(FocusOption.NOT_VISIBLE, PreventScroll.ENABLED)

  • Add signal binding for attribute in Element
    Commit · Pull request · Issue

    Introduces bindAttribute(String attribute, Signal signal) method in Element to bind a Signal to attribute.

Fixes

  • The default for livereload in Spring Boot 4 RC1 is false
    Commit · Pull request

  • Update stylesheet when a referenced resource changes
    Commit · Pull request · Issue

  • Prevent AppShellRegistry validation failure for StyleSheet.Container
    Commit · Pull request · Issue

    When AppShellRegistry validates offending annotation on other compoent classes it ignore the StyleSheet annotation. However, if a component has multiple StyleSheet annotations on it, the validation fails. This change also ignores StyleSheet.Container annotation during validation

  • Respect spring.devtools.livereload.enabled property
    Commit · Pull request · Issue

    When developers set spring.devtools.livereload.enabled=false, the application should not attempt to establish a WebSocket connection to the Spring Boot livereload server. This commit fixes the issue by checking the enabled property at the source (SpringDevToolsPortHandler) and propagating the result through the entire chain: - SpringDevToolsPortHandler: Only assigns port if livereload enabled - IndexHtmlRequestHandler: Only includes liveReloadPort in config if set - vaadin-dev-tools.ts: Only creates WebSocket connection if port exists

Vaadin Flow 25.0.0-beta2

30 Oct 07:08
432c50a

Choose a tag to compare

Pre-release

Changes since 25.0.0-beta1

All changes

Breaking changes

  • WithStatusLabel now sets field invalid state for consistent visual feedback
    Commit · Pull request · Issue

    Previously, withStatusLabel() only updated the status label but did not set the field's invalid state, resulting in inconsistent visual feedback where fields would not show the red background indicator for validation errors. This fix ensures that withStatusLabel() also delegates to the binder's handleValidationStatus() method, which properly sets/clears the field's invalid state through handleError()/clearError(). This provides consistent visual feedback (red background + status label) across all validation scenarios: - Required field validation - Custom validator failures - Conversion errors - Multiple validators

  • Add aria-hidden="true" to hr component by default
    Commit · Pull request · Issue

    The "hr" element is announced as "Horizontal Splitter" by screen readers (e.g., VoiceOver on macOS), but in most cases it's used for visual purposes only. Adding aria-hidden="true" by default improves accessibility by preventing screen readers from announcing it. Users can still override this if needed by removing the attribute.

New features

  • Add signal binding to element text (#22406)
    Commit · Pull request · Issue

    Implements signal binding to element text.

  • Add inline Content-Disposition support with filenames (#21934)
    Commit · Pull request

    Add inline() methods to DownloadEvent for RFC 6266 compliant inline content disposition headers with filenames. Update all download handlers to include filenames when in inline mode, preventing browser UUID-based filenames. Add containsHeader() to VaadinResponse to prevent overriding custom headers. 🤖 Generated with Claude Code

  • Add Image constructor for byte array content
    Commit · Pull request · Issue

    Add a convenience constructor to Image class that accepts byte array content and an image name, simplifying the creation of images from in-memory data. The constructor automatically handles DownloadHandler creation, MIME type detection via URLConnection, and sets inline content disposition for proper browser display.

  • Add support for HTML element (#14882)
    Commit · Pull request · Issue

    Add native Vaadin Flow support for the HTML abbreviation element to improve accessibility and eliminate the need for custom workarounds. - Add ABBR constant to Tag interface - Create Abbr component extending HtmlContainer with ClickNotifier - Add comprehensive test suite via AbbrTest - Support for title attribute inherited from HtmlComponent The component provides three constructors for flexible usage: empty, text-based, and component-based initialization.

  • Add ElementEffect
    Commit · Pull request

    Adds ElementEffect that does exactly same that ComponentEffect did before, but with Element API. Refactored ComponentEffect to use ElementEffect. Part of #22395

  • Allow skipping Vaadin maven plugin execution during a build
    Commit · Pull request

    • Added skip parameter to FlowModeAbstractMojo with property "vaadin.skip" - Added early return in execute() method when skip=true - Added informative log message when skipping - Created integration test and unit test for skip functionality - Parameter can be used with: mvn clean install -Dvaadin.skip 🤖 Generated with Claude Code
  • Env variable and one time message to users for usage stats
    Commit · Pull request

    There is now a GLOBAL opt out in the form of the environment variable. Log message is shown only when executed for the first time.

Fixes

  • Set Content-Length header in InputStreamDownloadHandler (#22558)
    Commit · Pull request

    InputStreamDownloadHandler now properly sets the Content-Length HTTP header when provided in DownloadResponse, enabling browsers to display download progress and allowing TransferProgressListener implementations to calculate accurate progress percentages. This aligns behavior with FileDownloadHandler. 🤖 Generated with Claude Code

  • Reconcile remaining children to prevent double removal
    Commit · Pull request · Issue

  • Move CSS imports from @theme to bootstrap JS file
    Commit · Pull request · Issue

  • No empty first line in log
    Commit · Pull request · Issue

    Added message to not log with "" and throwable.

  • Store UI reference on start
    Commit · Pull request · Issue

    Store UI ref to have a correct ui for TransferProgress even when element is detached during transfer.

  • Fix glob pattern in runtime hints registration
    Commit · Pull request · Issue

    in order to match resources in subfolders. Also adds some basic test to ensure main resources are accepted

Chore

  • Replace glob package with Node.js built-in glob
    Commit · Pull request

    Replace the external glob package dependency with Node.js built-in globSync functionality (available since Node.js 22). Changes: - Remove glob dependency from 3 package.json files - Update imports from 'glob' to 'node:fs' in theme plugins - All glob usage patterns are compatible with built-in implementation 🤖 Generated with Claude Code 🤖 Generated with Claude Code

Vaadin Flow 2.13.0

13 Nov 12:40
02bb22c

Choose a tag to compare

No changes since 2.13.0-beta1

All changes since 2.12

New features

  • Component tracking and improved error message when node is moved to another UI
    Commit · Pull request

Fixes

Vaadin Flow 2.13.0-beta1

10 Nov 07:02
02bb22c

Choose a tag to compare

Pre-release

Changes since 2.12.3

All changes

New features

  • Component tracking and improved error message when node is moved to another UI
    Commit · Pull request

Fixes

Vaadin Flow 24.9.4

28 Oct 10:15
6ce1500

Choose a tag to compare

Changes since 24.9.3

All changes

Fixes

  • Set Content-Length header in InputStreamDownloadHandler (#22558) (#22564)
    Commit · Pull request

    InputStreamDownloadHandler now properly sets the Content-Length HTTP header when provided in DownloadResponse, enabling browsers to display download progress and allowing TransferProgressListener implementations to calculate accurate progress percentages. This aligns behavior with FileDownloadHandler. 🤖 Generated with Claude Code

  • No empty first line in log (#22523)
    Commit · Pull request · Issue

    Added message to not log with "" and throwable.

  • Store UI reference on start (#22532)
    Commit · Pull request · Issue

    Store UI ref to have a correct ui for TransferProgress even when element is detached during transfer.

  • Fix glob pattern in runtime hints registration (#22531)
    Commit · Pull request · Issue

    in order to match resources in subfolders. Also adds some basic test to ensure main resources are accepted

Vaadin Flow 24.8.11

28 Oct 10:15
4229429

Choose a tag to compare

Changes since 24.8.10

All changes

Fixes

  • Set Content-Length header in InputStreamDownloadHandler (#22558) (#22564)
    Commit · Pull request

    InputStreamDownloadHandler now properly sets the Content-Length HTTP header when provided in DownloadResponse, enabling browsers to display download progress and allowing TransferProgressListener implementations to calculate accurate progress percentages. This aligns behavior with FileDownloadHandler. 🤖 Generated with Claude Code

  • Store UI reference on start (#22532)
    Commit · Pull request · Issue

    Store UI ref to have a correct ui for TransferProgress even when element is detached during transfer.

  • Fix glob pattern in runtime hints registration (#22531)
    Commit · Pull request · Issue

    in order to match resources in subfolders. Also adds some basic test to ensure main resources are accepted