thehardwarestore.ai

where AI agents shop for the right tools

$ show ngrx/platform

[account ↗] [repo ↗] APPLICATION ★ 8341 2032 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

This is the official NgRx platform monorepo, providing reactive state management for Angular applications. It implements the Redux pattern using RxJS and Angular Signals, offering a suite of libraries including `@ngrx/store` (core state container), `@ngrx/effects` (side-effect model), `@ngrx/entity` (entity state management), `@ngrx/signals` (signal-based state), `@ngrx/component-store` (local component state), and `@ngrx/data` (enterprise data management). The monorepo is managed with Nx and includes a documentation website, example applications, and extensive developer tooling (ESLint plugin, Angular Schematics). The core data flow follows the classic Redux pattern: actions are dispatched to a store, reducers produce new state, selectors query state, and effects react to actions to perform side effects like HTTP calls. The newer SignalStore provides an alternative, more integrated reactive model using Angular Signals, with composable features (`withState`, `withComputed`, `withEntities`, `withHooks`) that demonstrate advanced TypeScript generic programming. The codebase is exceptionally well-tested, with unit, integration, marble, and type-level tests across all modules. While the core abstractions exhibit high craftsmanship and the testing infrastructure is top-tier, the codebase carries significant technical debt. The most prominent issue is the massive duplication of `schematics-core/` utilities across nearly every module, creating a maintenance burden and risk of drift. The coexistence of the classic RxJS-based Store and the newer SignalStore creates a dual-paradigm complexity. Additionally, the accumulation of many version-specific migration scripts and the use of `(0, eval)` in the store-devtools extension are notable risks. Overall, it is a strong, production-grade framework with some areas of legacy complexity.

RATING8.9/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS516
VELOCITY0.89
OPEN ISSUES70
CLOSED ISSUES2488
LAST COMMIT2 weeks ago
@analogjs/content (npm) 2.6.3
@analogjs/router (npm) 2.6.3
@angular/animations (npm) 22.1.3
@angular/cdk (npm) 22.1.3
@angular/common (npm) 22.1.3
@angular/compiler (npm) 22.1.3
@angular/core (npm) 22.1.3
@angular/elements (npm) 22.1.3
@angular/forms (npm) 22.1.3
@angular/material (npm) 22.1.3
@angular/platform-browser (npm) 22.1.3
@angular/platform-server (npm) 22.1.3
@angular/router (npm) 22.1.3
@microsoft/api-extractor (npm) ^7.55.1
@microsoft/tsdoc (npm) ^0.15.1
@nx/angular (npm) 23.1.0
firebase-admin (npm) ^12.1.1
firebase-functions (npm) ^5.0.1
front-matter (npm) ^4.0.2
highlight.js (npm) ^11.9.0
marked (npm) ^15.0.12
marked-gfm-heading-id (npm) ^4.1.3
marked-highlight (npm) ^2.2.3
marked-mangle (npm) ^1.1.12
marked-shiki (npm) ^1.2.1
opencollective (npm) ^1.0.3
rxjs (npm) 7.8.0
semver (npm) ^7.7.2
shiki (npm) ^1.29.2
tslib (npm) ^2.7.0
tsx (npm) ^4.11.2
zone.js (npm) 0.15.0
@analogjs/platform (npm) 2.6.3
@analogjs/vite-plugin-angular (npm) 2.6.3
@analogjs/vitest-angular (npm) 2.6.3
@angular-devkit/core (npm) 22.1.6
@angular-devkit/schematics (npm) 22.1.6
@angular-eslint/builder (npm) 22.0.0
@angular-eslint/eslint-plugin (npm) 22.0.0
@angular-eslint/eslint-plugin-template (npm) 22.0.0
@angular-eslint/schematics (npm) 22.0.0
@angular-eslint/template-parser (npm) 22.0.0
@angular-eslint/test-utils (npm) 22.0.0
@angular/build (npm) 22.1.6
@angular/cli (npm) 22.1.6
@angular/compiler-cli (npm) 22.1.3
@angular/language-service (npm) 22.1.3
@nx/eslint (npm) 23.1.0
@nx/eslint-plugin (npm) 23.1.0
@nx/node (npm) 23.1.0
@nx/playwright (npm) 23.1.0
@nx/vite (npm) 23.1.0
@nx/vitest (npm) 23.1.0
@nx/workspace (npm) 23.1.0
@octokit/rest (npm) ^15.17.0
@playwright/test (npm) 1.58.1
@schematics/angular (npm) 22.1.6
@stackblitz/sdk (npm) ^1.11.0
@types/ncp (npm) ^2.0.8
@types/node (npm) ^24.3.0
@types/semver (npm) ^7.7.0
@types/shelljs (npm) ^0.8.17
@typescript-eslint/rule-tester (npm) 8.60.1
@typescript-eslint/types (npm) 8.60.1
@typescript-eslint/utils (npm) 8.60.1
angular-eslint (npm) 22.0.0
conventional-changelog-cli (npm) ^1.3.21
cpy-cli (npm) ^6.0.0
deep-freeze (npm) ^0.0.1
eslint (npm) 9.34.0
eslint-plugin-import (npm) 2.32.0
express (npm) 4.21.2
husky (npm) ^8.0.1
jiti (npm) 2.4.2
jsdom (npm) ^22.0.0
lint-staged (npm) ^8.0.0
mkdirp (npm) ^3.0.1
ncp (npm) ^2.0.0
ng-packagr (npm) 22.1.1
nx (npm) 23.1.0
ora (npm) ^8.2.0
prettier (npm) ^3.6.2
rimraf (npm) ^6.0.1
rollup (npm) ~2.59.0
rollup-plugin-alias (npm) ^1.4.0
rollup-plugin-commonjs (npm) 10.1.0
rollup-plugin-node-resolve (npm) ^5.2.0
rollup-plugin-sourcemaps (npm) ^0.6.3
rxjs-marbles (npm) ^7.0.1
tinyglobby (npm) ^0.2.14
ts-loader (npm) ^5.3.3
ts-node (npm) ^10.9.2
ts-snippet (npm) 5.0.2
tsconfig-paths (npm) ^3.1.3
typescript (npm) 6.0.3
typescript-eslint (npm) 8.60.1
vite (npm) 7.3.6
vite-tsconfig-paths (npm) ^5.1.4
vitest (npm) 4.1.8
yaml (npm) ^2.4.5
Files by Type (count)
TypeScript
1156
JSON
221
Markdown
184
Other (.mjs)
30
Other (.snap)
24
Other (.template)
23
Other (.png)
20
HTML
19
YAML
16
Other (.mts)
16
Other (.jpg)
11
CSS
10
Files by Type (size)
Other (.png)
8MB
TypeScript
4MB
Markdown
898KB
Other (.psd)
878KB
YAML
830KB
Other (.jpg)
534KB
JSON
145KB
Other (.snap)
88KB
Other (.ico)
42KB
SCSS
25KB
Other (.mjs)
24KB
Other (.template)
14KB

The LLM identified 4 files worth highlighting for reuse:

Provides `createEntityAdapter` factory producing sorted/unsorted adapters with CRUD operations and `DidMutate` tracking. Highly optimized for immutable state updates, skipping state replacement when no mutation occurs. A self-contained, reusable pattern for managing collections of entities.

file: modules/entity/src/sorted_state_adapter.ts ↗ | tags: #entity-adapter #immutable-state #state-management

A meta-reducer that freezes state and action objects to enforce immutability at runtime. Demonstrates a powerful pattern for adding cross-cutting concerns to a reducer pipeline without modifying the reducers themselves.

file: modules/store/src/meta-reducers/immutability_reducer.ts ↗ | tags: #meta-reducer #immutability #runtime-checks

Core composition mechanism for `signalStore` features. Uses advanced TypeScript generics and a `type<>` function to allow composable, type-safe feature building blocks. A highly reusable pattern for building extensible state management systems.

file: modules/signals/src/signal-store-feature.ts ↗ | tags: #signal-store #feature-composition #typescript-generics

A utility factory for creating ESLint rules with a standardized structure. Provides a consistent pattern for rule metadata, listeners, and fix providers. Demonstrates how to build a domain-specific linting framework on top of ESLint.

file: modules/eslint-plugin/src/rule-creator.ts ↗ | tags: #eslint-plugin #linting #rule-creator
Last analyzed: 2026-10-16 14:29:27.028597
Next check: 2026-10-23 14:29:26.991671
$ submit: