Skip to main content

Start here

What RxAngular is

RxAngular is a reactive toolkit for Angular, split across five focused packages: state, template, cdk, isr, and eslint-plugin. It is a complement to modern Angular: signals, zoneless change detection, and native control flow do the everyday work, and RxAngular fits the narrower spots where they are an awkward fit, namely shared and async-heavy state, high-performance rendering of large live lists, concurrent scheduling, and incremental static regeneration. This page orients you before you pick a package; each section below links out to the package that owns the detail.

The five packages — reach for this when…

State and Template are the two journeys most readers travel. CDK is the helper layer underneath them: the substrate of render strategies, coercing, and transformations that most consumers never import directly. isr and eslint-plugin are standalone tools you add when you have the specific need.

PackageReach for it when…npm (2026-07-02)Angular peer
@rx-angular/stateyou need global/shared, complex-derived, or async-heavy state (signals already cover local state)v21.1.1^21.0.0
@rx-angular/templateyou need high-performance rendering — large live lists, concurrent scheduling, reactive suspense/error/completev21.2.0^21.0.0
@rx-angular/cdkyou are building on the primitives (render strategies, coercing, transformations) — the helper layerv21.1.0^21.0.0
@rx-angular/isryou run Angular SSR and want Incremental Static Regenerationv21.0.1@angular/ssr ^21.0.0
@rx-angular/eslint-pluginyou want to enforce reactive discipline / keep a codebase zoneless-readyv3.0.0eslint >=8

If you are unsure where to begin: reach for State first if your question is about data, and Template first if your question is about rendering. The other three are additive.

Signals-first positioning

Signals first

For local component state, Angular signals are the default — reach for signal(), computed(), and linkedSignal() first. RxState complements signals; it earns its place for global/shared state, complex derived state, and async-heavy orchestration (multi-source connect, actions, effects) bridged into signals — not as a replacement for signals. See Reactive state: global vs local, RxState + signals.

Angular is zoneless by default (v21), and signals are the default for local state. RxAngular is positioned around that reality: it does not replace signal(), computed(), or native @if/@for, and it does not ask you to bring back Zone.js. It adds value where native Angular is a poor fit (shared/async state, scheduled rendering, and the reactive template context) and bridges into signals at the edges. For the split of when a signal is enough and when RxState complements it, see Reactive state: global vs local, RxState + signals.

Install / Angular peer-version matrix

Install only the package you need; each is independent:

npm install @rx-angular/state
npm install @rx-angular/template
npm install @rx-angular/cdk
npm install @rx-angular/isr # also needs @angular/ssr
npm install @rx-angular/eslint-plugin --save-dev

Every package peers on Angular ^21 (isr peers @angular/ssr ^21; eslint-plugin peers eslint >=8). One currency caveat: there is no v22-targeted release yet; all peers are ^21 despite Angular 22 shipping in June 2026. On an Angular 21 baseline the packages are current; if you are already on Angular 22, confirm peer compatibility before adopting.

For anything deeper than this orientation, follow the package links above. The detail lives there.