# Data flow — solidjs/solid

> Canonical page: https://codevetter.com/unpack/solid/data-flow

# Data flow — solidjs/solid

Scanned commit b25c557754f2ced0d86490e6dbfded9b1745b663 (2026-09-04). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Reactive reads create dependency edges, and setters propagate invalidation through computation and effect queues. Stores translate property access and path updates into the same signal machinery, while resources translate asynchronous results into state and Suspense notifications. Server rendering uses hydration context to associate resources and fragments, and static generation adds a subprocess and filesystem output boundary.
- createSignal allocates SignalState with value, observers, observerSlots, and comparator; its getter binds readSignal and its setter delegates to writeSignal. — [packages/solid/src/reactive/signal.ts#L229-261](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L229-L261)
- readSignal records bidirectional dependency slots between the active Listener and the signal, resolves stale memos, and chooses tentative values during a running transition. — [packages/solid/src/reactive/signal.ts#L1302-1338](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L1302-L1338)
- writeSignal applies equality filtering, marks observers stale, queues pure computations separately from effects, and marks downstream memo consumers pending. — [packages/solid/src/reactive/signal.ts#L1341-1375](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L1341-L1375) [packages/solid/src/reactive/signal.ts#L1686-1696](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L1686-L1696)
- runComputation installs a computation as Owner and Listener during its callback and restores both afterward; cleanNode removes dependency edges, child scopes, and cleanup callbacks. — [packages/solid/src/reactive/signal.ts#L1402-1437](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L1402-L1437) [packages/solid/src/reactive/signal.ts#L1700-1737](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L1700-L1737)
- Store proxy reads lazily allocate per-property signal nodes only when tracking requires them; nested wrappable values receive proxies, while ownKeys subscribes to the self node. — [packages/solid/store/src/store.ts#L138-152](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/store/src/store.ts#L138-L152) [packages/solid/store/src/store.ts#L165-196](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/store/src/store.ts#L165-L196)
- setStore batches updatePath/updateArray against the unwrapped object; setProperty mutates or deletes a property and notifies property, existence, array-length, and self observers. — [packages/solid/store/src/store.ts#L228-260](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/store/src/store.ts#L228-L260) [packages/solid/store/src/store.ts#L276-343](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/store/src/store.ts#L276-L343) [packages/solid/store/src/store.ts#L546-551](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/store/src/store.ts#L546-L551)
- A resource source is memoized when callable; load obtains its current key, invokes the consumer fetcher untracked, records its promise, and sets pending or refreshing state. — [packages/solid/src/reactive/signal.ts#L617-634](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L617-L634) [packages/solid/src/reactive/signal.ts#L696-742](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L696-L742)
- Resource loadEnd accepts a completion only when its promise matches pr, then completeLoad updates value/state/error and decrements subscribed Suspense contexts. — [packages/solid/src/reactive/signal.ts#L649-674](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L649-L674) [packages/solid/src/reactive/signal.ts#L677-692](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L677-L692)
- Server resources are keyed by sharedConfig context IDs; asynchronous load stores resolved data in ctx.resources, calls notifySuspense, and passes values or promises to ctx.serialize. — [packages/solid/src/server/rendering.ts#L447-478](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/server/rendering.ts#L447-L478) [packages/solid/src/server/rendering.ts#L499-545](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/server/rendering.ts#L499-L545) [packages/solid/src/server/rendering.ts#L617-624](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/server/rendering.ts#L617-L624)
- Hydration consumes deterministic context IDs: createComponent advances into a child context, client resources look up serialized values, and web hydrate first enables hydration behavior. — [packages/solid/src/render/hydration.ts#L19-47](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/render/hydration.ts#L19-L47) [packages/solid/src/render/component.ts#L97-113](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/render/component.ts#L97-L113) [packages/solid/src/reactive/signal.ts#L644-648](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/src/reactive/signal.ts#L644-L648) [packages/solid/web/src/index.ts#L46-49](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/web/src/index.ts#L46-L49)
- provideRequestEvent stores an AsyncLocalStorage instance on globalThis under RequestContext and runs the supplied callback with its request event; it rejects non-server use. — [packages/solid/web/storage/src/index.ts#L1-11](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid/web/storage/src/index.ts#L1-L11)
- Static generation passes entry/output/url into a Node child process; writeToDisk dynamically imports the entry, calls its default export with the URL, creates the output directory, and writes returned HTML. — [packages/solid-ssr/static/index.js#L10-25](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid-ssr/static/index.js#L10-L25) [packages/solid-ssr/static/writeToDisk.js#L4-11](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid-ssr/static/writeToDisk.js#L4-L11) [packages/solid-ssr/examples/ssg/index.js#L1-7](https://github.com/solidjs/solid/blob/b25c557754f2ced0d86490e6dbfded9b1745b663/packages/solid-ssr/examples/ssg/index.js#L1-L7)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
