Skip to content

signals: Add UC28-UC35 use cases for advanced Signal API features#263

Open
Artur- wants to merge 1 commit into
mainfrom
signals-new-signals
Open

signals: Add UC28-UC35 use cases for advanced Signal API features#263
Artur- wants to merge 1 commit into
mainfrom
signals-new-signals

Conversation

@Artur-
Copy link
Copy Markdown
Member

@Artur- Artur- commented May 15, 2026

Each use case is a small product scenario where the signal API feature is the natural tool, not a pure API demo:

  • UC28 Server log viewer — EffectContext.isBackgroundChange() pulses for server-driven inserts but not for user dropdown edits.
  • UC29 Profile auto-save — Signal.untracked keeps audit attribution stable when admins are swapped mid-session; Signal.unboundEffect ships audit entries without holding the session lock.
  • UC30 Catalog filter — Signal.cached lets grid + count badge + export button share one filter pass over 1 000 products.
  • UC31 Seat reservation — ValueSignal.replace gives one winner per seat under concurrent claim; update(old + 1) keeps the day's reservation tally consistent under burst admin traffic.
  • UC32 Mutable vs immutable form — same onboarding form bound to a JPA-style Customer (modifier+setter) and immutable CustomerDto (updater+withX); modify/update each fire one notification.
  • UC33 Stable selection — id-based equality on the selection signal stops the details pane's open animation from replaying when the server pushes a status update to the already-selected order.
  • UC34 Feature flag service — FeatureFlagService bean exposes Signal via asReadonly(); flips go through service methods.
  • UC35 Kanban column — ListSignal.moveTo preserves entry signal identity through reorders; insertAllFirst/insertAllAt bulk-insert with a single change notification.

HomeView lists the new category; styles.css gets a generic flash animation used by UC28.

Each use case is a small product scenario where the signal API feature
is the natural tool, not a pure API demo:

- UC28 Server log viewer — EffectContext.isBackgroundChange() pulses
  for server-driven inserts but not for user dropdown edits.
- UC29 Profile auto-save — Signal.untracked keeps audit attribution
  stable when admins are swapped mid-session; Signal.unboundEffect
  ships audit entries without holding the session lock.
- UC30 Catalog filter — Signal.cached lets grid + count badge +
  export button share one filter pass over 1 000 products.
- UC31 Seat reservation — ValueSignal.replace gives one winner per
  seat under concurrent claim; update(old + 1) keeps the day's
  reservation tally consistent under burst admin traffic.
- UC32 Mutable vs immutable form — same onboarding form bound to a
  JPA-style Customer (modifier+setter) and immutable CustomerDto
  (updater+withX); modify/update each fire one notification.
- UC33 Stable selection — id-based equality on the selection signal
  stops the details pane's open animation from replaying when the
  server pushes a status update to the already-selected order.
- UC34 Feature flag service — FeatureFlagService bean exposes
  Signal<Boolean> via asReadonly(); flips go through service methods.
- UC35 Kanban column — ListSignal.moveTo preserves entry signal
  identity through reorders; insertAllFirst/insertAllAt bulk-insert
  with a single change notification.

HomeView lists the new category; styles.css gets a generic flash
animation used by UC28.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant