Skip to main content

@rx-angular/eslint-plugin

A set of ESLint rules that keep an Angular codebase zoneless-ready and enforce RxState discipline. The plugin flags the imperative change-detection calls, Zone-critical APIs, layout-thrashing calls, and RxState anti-patterns that get in the way of reactive, performant, Zone-less Angular, so they surface in the linter instead of in production.

Get started

What the rules cover

  • Change-detection discipline: no hand-rolled detectChanges/markForCheck; no layout-sensitive APIs that force style recalculation.
  • RxState discipline: no imperative RxState calls inside reactive methods; no subscriptions outside the constructor.
  • Zoneless readiness: the six no-zone-* rules flag Zone-patched browser, RxJS, and NgZone.run* APIs. They are legacy-guarded: a no-op once the app runs zoneless (Angular v21+). See Zoneless & how Zone.js affected change detection.
  • Value-semantics hygiene: flags Lodash cloneDeep/isEqual in favour of native equivalents.

Explore