You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Solid 2: presence read on async derived store stays blank after resolution #3726
An in expression on a derived createStore stays blank after its pending source resolves. A sibling expression reading the source signal updates to resolved, but the presence expression neither shows present nor missing.
The component returns a pending promise from the store derivation, then sets the source signal to [1] and resolves that promise with [1] in the same timer callback. The read is inside <Loading>, which has finished showing its fallback.
Click Build. The To do lane initially contains “Review the proposal,” and the count reads All cards: 1.
Click Activity, then Board.
The count still reads All cards: 1, but the lane is empty.
The board view uses an async card source, a derived createStore, createOptimisticStore, and a keyed <For>. The count lives outside the view that is remounted. This shows the user-visible failure in a board-like setting; I have not established that it shares the same root cause as the direct presence-read repro above.
Fixed on next by #3789 (a036c226c) — thanks for the reproduction and the board playground.
The shape is pinned under L2, including the issue's setTimeout sequence, the held-landing variant, and the board shape from this thread (it was the held-landing variant; it passes).
Mechanism: on L2 a derive with a flight up is read tracked through pullFamily, so the parked reader is linked to the firewall node and re-runs in the landing's flush; under a hold it re-runs as the transaction's work and reveals at land.
Closing manually — auto-close did not fire because next is not the default branch.
Activity
GabbeV commentedon Sep 30, 2026
A more application-shaped repro: https://s.olid.uk/id/MrvPyNcpS1GI7r0LqJ8FEw
The board view uses an async card source, a derived
createStore,createOptimisticStore, and a keyed<For>. The count lives outside the view that is remounted. This shows the user-visible failure in a board-like setting; I have not established that it shares the same root cause as the direct presence-read repro above.test(signals): pin #3726 on L2 — derived store sync landing wakes par…
ryansolid commentedon Oct 5, 2026