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
2.0.0 | untrack still tracks with uninitialized async read. [docs or api improvements ] #3007
untrack( asyncDep() ) propagates the NotReady error to the owner
and owner reruns when asyncDep is first resolved.
we should consider adding a simple way for the user to opt out of Loading failure
and provide the non reactive fallback value.
createSignal(()=>{// this will truly be untrack, getColor() resolving will not rerun this functionconstcolor=untrack(()=>getColor(),"red")returncolor})
the change might be a low priority, and will depends widely on how untrack is being used in the wild.
to see if it is worth adding, only current consideration if we are not adding this now, but may in the future
is the 2nd parameter of untrack can be an option object
either way docs wording for untrack should cover the exception tracking for uninitialized async read..
Thanks — you're right that this needs documenting, and the docs site is the correct home for it. Tracking that here: solidjs/solid-docs#1635.
To confirm the behavior is intended: untrack opts out of dependency tracking, not of async settlement. A NotReadyError from an uninitialized async read propagates to the owner regardless — the owner suspends and re-runs once the source first resolves. Those are two separate mechanisms, and untrack only ever addresses the first.
On the untrack(fn, fallback) suggestion: we're not going to add it. A fallback overload would let a computation silently commit a value derived from data that was never real ("red" when the actual color is still loading), which is exactly the class of stale-seed bug 2.0's async model is designed to make impossible. Opting out of settlement is a boundary/latest concern, not an untrack concern, and the existing primitives (isPending, latest, loading boundaries) cover the legitimate cases.
Activity
ryansolid commentedon Aug 17, 2026
Thanks — you're right that this needs documenting, and the docs site is the correct home for it. Tracking that here: solidjs/solid-docs#1635.
To confirm the behavior is intended:
untrackopts out of dependency tracking, not of async settlement. ANotReadyErrorfrom an uninitialized async read propagates to the owner regardless — the owner suspends and re-runs once the source first resolves. Those are two separate mechanisms, anduntrackonly ever addresses the first.On the
untrack(fn, fallback)suggestion: we're not going to add it. A fallback overload would let a computation silently commit a value derived from data that was never real ("red" when the actual color is still loading), which is exactly the class of stale-seed bug 2.0's async model is designed to make impossible. Opting out of settlement is a boundary/latest concern, not an untrack concern, and the existing primitives (isPending,latest, loading boundaries) cover the legitimate cases.Closing in favor of the docs issue.