LotusToastContainer toast auto-dismiss timer is not reset in a fixed slot, so a fast burst can hide a toast before it's read #80

Closed
opened 2026-09-12 01:51:31 -04:00 by jared · 0 comments
Owner

Severity: low · Type: ux · Confidence: medium

Location: src/app/features/toast/LotusToastContainer.tsx:44-52, src/app/state/toast.ts:47-71

Problem

Each ToastCard has its own independent 4s auto-dismiss timer started on mount. The queue is capped at MAX_TOASTS = 5 and eviction drops the oldest non-sticky toasts once the cap is exceeded, but there's no minimum "seen" time — if 5+ non-sticky message toasts arrive in a very short burst (e.g. rejoining after being offline and several rooms all light up while the window is focused), older toasts near the 4s mark can be evicted by the cap logic before the user has had a chance to read them, in addition to their own timer independently expiring. This is a minor readability issue rather than a functional bug.

How to trigger

While the app window is focused, trigger 6+ near-simultaneous notification-worthy events across different rooms (e.g. reconnect after being offline in several active rooms).

Suggested fix

When evicting for the cap, prefer dropping toasts that have already been visible for some minimum time, or extend the auto-dismiss timer for toasts that are visually still in view when new ones are appended.


Filed from the September 2026 client audit (branch lotus @ 4bea4895).

**Severity:** low · **Type:** ux · **Confidence:** medium **Location:** `src/app/features/toast/LotusToastContainer.tsx:44-52`, `src/app/state/toast.ts:47-71` ### Problem Each `ToastCard` has its own independent 4s auto-dismiss timer started on mount. The queue is capped at `MAX_TOASTS = 5` and eviction drops the oldest *non-sticky* toasts once the cap is exceeded, but there's no minimum "seen" time — if 5+ non-sticky message toasts arrive in a very short burst (e.g. rejoining after being offline and several rooms all light up while the window is focused), older toasts near the 4s mark can be evicted by the cap logic before the user has had a chance to read them, in addition to their own timer independently expiring. This is a minor readability issue rather than a functional bug. ### How to trigger While the app window is focused, trigger 6+ near-simultaneous notification-worthy events across different rooms (e.g. reconnect after being offline in several active rooms). ### Suggested fix When evicting for the cap, prefer dropping toasts that have already been visible for some minimum time, or extend the auto-dismiss timer for toasts that are visually still in view when new ones are appended. --- _Filed from the September 2026 client audit (branch `lotus` @ 4bea4895)._
jared added this to the Audit 2026-09 · Medium & Low milestone 2026-09-12 01:51:31 -04:00
jared added the priority: lowuxarea: notifications labels 2026-09-12 01:51:31 -04:00
jared self-assigned this 2026-09-12 01:51:31 -04:00
jared closed this issue 2026-09-12 20:29:08 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#80