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
Async conditional memo stops reflecting its still-published branch #3461
After half a second, A shows 1, B shows 0, and Selected still shows 0.
Expected behavior
Selected should remain consistent with the published inputs. If A publishes 1 while B is 0, Selected should show 1; holding the overlapping updates together would also preserve consistency.
Fixed in #3464, merged to next as 0da94f97d — thanks for the reproduction.
Root cause: an async memo's landing (asyncWrite) trimmed its dependency tail unconditionally, before the write, so a landing that then got staged under a live hold dropped the input the committed frame still derived from (a in b() ? b() : a()); a later mainline a write no longer reached selected and committed beside the stale derivation. The landing now follows A30's gate — trims only when it published; a held landing leaves the tail for commitPendingNode — so the a write reaches selected, joins its hold, and the four values reveal as one frame. Pinned by tests/async-landing-deps-3461.test.ts and a jsdom port of your playground in @solidjs/web.
Activity
fix(signals): an async memo's held landing keeps the committed frame'…
ryansolid commentedon Sep 15, 2026