Skip to main content
TanStack Query for Angular provides signals-based primitives for fetching, caching, and updating asynchronous data in Angular applications. It leverages Angular’s modern signals API and supports zoneless mode.
This package is currently experimental and requires Angular 16+.

Installation

Setup

Provide TanStack Query in your application:

With Custom Configuration

Core Inject Functions

injectQuery

Fetch and cache data with the injectQuery function:
injectQuery returns a signal-based result. Access properties like data(), isLoading(), and error() as signals.

Reactive Queries with Signals

Angular Query automatically tracks signal dependencies:
The function passed to injectQuery runs in a reactive context. When signals change, the query automatically updates.

injectMutation

Perform side effects with mutations:

injectInfiniteQuery

Implement infinite scrolling:

Signals Integration

Signal-Based Results

All query results are signals:

Enabled Queries with Signals

Zoneless Support

Angular Query works seamlessly in zoneless mode:
Angular Query uses signals internally, making it fully compatible with Angular’s zoneless change detection.

Advanced Features

Query Options Factory

injectMutationState

Track all mutations globally:

injectIsFetching

Show a global loading indicator:

Dependency Injection

Custom Injector

Outside Injection Context

TypeScript

Full TypeScript support with type inference:

SSR Support

For Angular Universal (Server-Side Rendering):

Pending Tasks Integration

Angular Query automatically integrates with Angular’s pending tasks for SSR:

DevTools

Install the Angular Query DevTools:
Setup:

Angular-Specific Patterns

Services Integration

RxJS Integration

Use lastValueFrom to convert RxJS observables to promises for use with TanStack Query.

Migration Tips

From Angular HTTP Client

Performance Optimization

Signal Equality

Structural Sharing

Angular Query uses structural sharing by default to minimize signal updates: