github vaadin/flow 25.1.0
Vaadin Flow 25.1.0

latest release: 25.0.9
5 hours ago

Vaadin Flow 25.1 introduces production-ready reactive UI state management aka Signals API, along with the free browser-less testing framework (aka old commercial UI unit testing) and various other enhancements and bug-fixes.

Breaking Changes

Signal API Changes

  • Enforce signal reads in computed signals and effects
    Commit · Pull request

    Signals now enforce reactive context requirements when reading values in computed signals and effects.

  • Standardize signal callback interfaces
    Commit · Pull request

  • Move component-bound effect to Signal public API
    Commit · Pull request

  • Remove WritableSignal interface and simplify signal API
    Commit · Pull request

    Simplified the signal API by removing the WritableSignal interface and consolidating functionality.

  • Rename Signal value()/value(T) to get()/set(T)
    Commit · Pull request

    Renamed signal methods for clarity and consistency with Java conventions.

  • Restructure signals package for clarity between shared and local signals
    Commit · Pull request

  • Merge signals module into flow-server
    Commit · Pull request

    The separate signals module has been merged into flow-server for better integration.

  • Rename Binder.Binding.value() to valueSignal() and return signal
    Commit · Pull request

    Reworks Binding.value() to return a ValueSignal instead of the raw value.

  • Rename getValidationStatus() to validationStatusSignal()
    Commit · Pull request

    Renames the Binder method to better reflect that it returns a Signal.

  • Make localeSignal() read-only on VaadinSession and UI
    Pull request

    The locale signal is now read-only to prevent accidental modifications. Use setLocale() to change the locale.

  • Split computed into separate cached and direct versions
    Pull request

    Signal.computed() now creates a cached computed signal by default. For non-cached behavior, use Signal.computedDirect().

Component and API Changes

  • Make wrapperElement field private
    Commit · Pull request

    The wrapperElement field is now private and moved to UIInternals.

  • Prevent lumo utility classes from being imported automatically
    Commit · Pull request · Issue

  • Set proper value of isFromClient when using Focusable focus() and blur()
    Commit · Pull request

    The isFromClient flag now properly reflects the origin of focus/blur events.

  • BeforeEvent target as extends Component
    Commit · Pull request

Browser Compatibility

  • Update old browser check to verify compatibility with Vaadin 25+
    Commit · Pull request · Issue

    Updated browser compatibility check to ensure Popover API availability, required for Vaadin 25 web components.

New Features

Signal-Based Reactive Programming

Component Signal Bindings

Data Binding and Validation

Data Components

  • Add protected API to regenerate data in viewport
    Commit · Pull request

    Added protected refreshViewport method to DataCommunicator and HierarchicalDataCommunicator.

  • Implement getItems(offset, limit) in DataView
    Commit · Pull request · Issue

    Added efficient query-based item retrieval with offset/limit support.

  • Add Element.flashClass() for CSS animation-based visual feedback
    Commit · Pull request

    Add a flashClass(String) method to Element that temporarily applies a CSS class to trigger an animation, then auto-removes it when the animation ends.

Browserless Testing

  • Add browserless mode flag to suppress dev server warnings in browerless tests
    Commit · Pull request

File Uploads

Spring Integration

  • Improve SpringInstantiator
    Commit · Pull request · Issue

    Better handling of multiple beans using Spring's resolution logic (Primary, Fallback, etc.).

Build and Development

  • BuildFrontend incremental build
    Pull request

    Frontend builds now support incremental compilation for faster development cycles.

  • Retain local signal values during hotswap
    Pull request

    Signal state is preserved during hot reload, improving development experience.

  • Content-hash cache busting for Stylesheet URLs
    Pull request

    Stylesheet URLs now include content hashes to ensure cache invalidation when files change.

  • Preserve scroll position of all scrollable elements after hot-swap
    Pull request

    Scroll positions are maintained across hot reloads for better developer experience.

  • Add git pre-commit hook for automatic code formatting
    Commit · Pull request

  • Disable client statistics
    Commit · Pull request

  • Delegate no-routes handling to Copilot
    Commit · Pull request

  • Auto-load Aura theme CSS when no AppShellConfigurator exists
    Commit · Pull request

  • Add local web components plugin to vite.generated.ts
    Pull request

    Better support for local web component development.

  • Apply ElementEffect once when created
    Pull request

    Optimizes effect execution during initialization.

  • Skip ElementEffect callback on reattach when no signals changed
    Pull request

    Improves performance by avoiding unnecessary effect re-execution.

Component API Improvements

  • Move HasOrderedComponents methods to HasComponents
    Pull request

    HasOrderedComponents is now deprecated; use HasComponents instead.

Other Features

Testing Improvements

This release includes extensive migration to JUnit 5 (Jupiter) across the codebase, improving test maintainability and leveraging modern testing features. Multiple test modules have been migrated including flow-data, flow-dnd, flow-lit-template, flow-polymer-template, flow-polymer2lit, flow-build-tools, flow-plugins, and vaadin-dev-server.

Dependency Updates

  • ⚠️ Spring Boot updated to 4.0.4, this patch version is important to use because of Jackson compatibility.
  • Node.js updated to 24.14.1
  • Jackson updated to 3.1.0
  • TestBench updated to 10.1.0
  • JAXB updated to 4.0.7
  • Byte Buddy updated to 1.18.5
  • NullAway updated to 0.13.1
  • JUnit Jupiter updated to 6.0.3
  • Spotless Maven Plugin updated to latest version
  • Frontend dependencies updated to latest versions

Thanks For Contributions!

@knoobie @patrick-audit @AB-xdev @OriginalFelix @sgpublic @lycoris106


For more details, see the full comparison on GitHub.

Changes since 25.1.0-beta1

Don't miss a new flow release

NewReleases is sending notifications on new releases.