github vaadin/flow 25.1.0-alpha5
Vaadin Flow 25.1.0-alpha5

latest releases: 24.4.17, 24.8.16
pre-release17 hours ago

Changes since 25.1.0-alpha4

All changes

Breaking changes

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

    Restructures the signals package to clearly separate shared (cluster-capable) signals from local (UI-only) signals, and keeps implementation internals in dedi impl packages. - Rename shared signal classes with Shared prefix: ValueSignal → SharedValueSignal, NumberSignal → SharedNumberSignal, NodeSignal → SharedNodeSignal, ListSign SharedListSignal, MapSignal → SharedMapSignal - Introduce local ValueSignal (renamed from ReferenceSignal) in com.vaadin.signals.local as a lightweight, non-serializable signal for UI bindings - Move shared signals to com.vaadin.signals.shared package with their internals in com.vaadin.signals.shared.impl - Keep core API interfaces (Signal, WritableSignal, BindingActiveException) in root com.vaadin.signals package - Keep implementation classes (Effect, ComputedSignal, Transaction, UsageTracker, TransientListener) in com.vaadin.signals.impl since they are not public API - Update all javadoc examples to use local ValueSignal for UI binding patterns New package structure com.vaadin.signals/ ├── Signal, WritableSignal, BindingActiveException (core API) ├── impl/ (implementation internals) │ ├── Effect, ComputedSignal, Transaction │ ├── UsageTracker, TransientListener ├── local/ (UI-local signals) │ └── ValueSignal ├── shared/ (cluster-capable signals) │ ├── SharedValueSignal, SharedNumberSignal │ ├── SharedListSignal, SharedMapSignal │ ├── SharedNodeSignal, AbstractSignal │ └── impl/ (shared signal internals) │ ├── SignalTree, StagedTransaction │ └── TreeRevision, Snapshot, ... ├── function/ (functional interfaces) └── operations/ (operation types) Rationale The restructuring provides: - Clear naming: class names indicate whether a signal is local or cluster-capable - Simpler defaults: local ValueSignal for common UI binding use cases - Proper encapsulation: implementation classes like Effect and Transaction stay in impl packages, separate from the public API

New features

  • Add bindChildren method to HasComponents mix-in
    Commit · Pull request

    Adds a bindChildren default method to the HasComponents mix-in interface. It also changes ComponentEffect::bindChildren to return a Registration to remove the binding, and throw if add/remove methods are used while a binding is in effect.

  • Add Anchor(DownloadHandler, Signal), Anchor(String, Signal)
    Commit · Pull request

  • Add FieldSet::bindLegendText
    Commit · Pull request

Fixes

  • Tailwind styles and add-on css import
    Commit · Pull request · Issues 23082, 23218

    Collect jar-resource and StyleSheet css as imports into tailwind.css Now tailwind knows to go through said files and where they are located.

  • Fix race condition when closing CombineUsage subscriptions
    Commit · Pull request

    There's a race between the signal tree lock and the UsageTracker subscription lock because notifying about a change holds the signal lock when trying to acquire the subscription lock. Closing the subscription does on the other hand hold the subscription lock while trying to acquire the signal lock. This is fixed by releasing the subscription lock in the close() code path before calling into signal code. This remains safe by ensuring that only one thread actually performs the close operation.

Don't miss a new flow release

NewReleases is sending notifications on new releases.