In Svelte 4, $: rows = resolve_rows() where resolve_rows reads other reactive values ($store, $: derived_var) inside its body gives the statement NO tracked dependencies beyond the function reference. The compiler orders reactive statements topologically by identifiers referenced in the expression, so the statement can run before $: metro = ... it implicitly depends on, and never re-runs when those values change. Symptom: stale/initial values rendered while sibling markup using the same store directly shows fresh values. Fix: pass every reactive dependency as an argument named in the reactive expression: $: rows = resolve_rows($view, metro). Related gotcha in the same build: a Svelte store whose VALUE is an object with mutable internal state (e.g. a worker client with .state) never notifies on internal changes; a reactive guard like $store?.state === 'idle' will not wake up when the state flips, so dropped work is never retried. Serialize such work in an explicit drain loop instead of gating on the store.
lesson
Svelte reactive statements ignore dependencies hidden inside function bodies
No signals yet