ng-signal-query

August 5, 2026 ยท View on GitHub

npm version License: MIT Angular Sponsor

Server state for Angular, built on signals. Queries, mutations, infinite scroll, caching and SSR hydration โ€” with no observer layer underneath, because the cache entry is a signal.

๐Ÿ“– Docs and interactive playground โ†’

npm i @ali7040/ng-signal-query

What's distinctive

Mutation concurrency strategies. Overlapping mutate() calls resolve the way you choose, with semantics borrowed from the RxJS flattening operators:

// Double-click proof. No disabled flag, no debounce.
const submit = createMutation({
  mutationFn: (order: Order) => api.place(order),
  concurrencyStrategy: 'exhaust',
});
StrategyRxJSBehaviour
mergemergeMapEvery call runs, in parallel (default)
concatconcatMapQueued, and kept in order
switchswitchMapLatest wins, earlier discarded
exhaustexhaustMapFirst wins, the rest ignored

See them run on a live timeline โ†’

Request cancellation. Every fetcher receives an AbortSignal, and superseded requests are actually aborted:

const users = createQuery({
  key: ['users'],
  fetcher: ({ signal }) => fetch('/api/users', { signal }).then(r => r.json()),
});

Queries sharing a key also share a single in-flight request.

How it compares to TanStack Query

TanStack Query is the reference implementation for this problem and, for most teams, still the right answer. The comparison table is honest about both directions โ€” including enabled, select, placeholderData, persistence and offline support, which it has and this does not yet.

Documentation

Contributing

Issues and pull requests are welcome โ€” several are tagged good first issue. See the contributing guide.

Repository layout

projects/signal-query/     the published library
projects/signal-query/examples/   runnable examples
src/                       demo application shell

Common commands:

npm start          # serve the demo app
npm run build:lib  # build the publishable library
npm test           # run the test suite

The website lives in a separate repository: ng-signal-query-site.

License

MIT โ€” see LICENSE.