# 0003. Use Angular Signals + Standalone (no NgModules, no NgRx)

- **Status:** Accepted
- **Date:** 2026-05-26
- **Deciders:** Loma Group Platform
- **Related:** [`knowledge/patterns/angular-signals.md`](../../knowledge/patterns/angular-signals.md), [`apps/web-angular/README.md`](../../apps/web-angular/README.md)

## Context

Angular 19 ships first-class Signals + Standalone Components. The team has used NgRx historically; it was always heavier than the problem.

## Decision

- All components are **Standalone**.
- All state is **Signals** (`signal`, `computed`, `effect`).
- A feature owns a **facade** service (signals + write API). Components inject the facade and read its signals.
- **No NgRx**, no Redux pattern.
- `ChangeDetectionStrategy.OnPush` everywhere.
- HTTP through `BaseApiService` — components do not inject `HttpClient`.

## Alternatives considered

| Option                                         | Why rejected                                                                   |
| ---------------------------------------------- | ------------------------------------------------------------------------------ |
| NgRx                                           | Heavy for our scale; harder onboarding; ceremony out of proportion to benefit. |
| Pure RxJS state (`BehaviorSubject` everywhere) | Works but signals are first-class + simpler to read.                           |
| Akita / Elf                                    | Yet another store dependency; signals are now the platform answer.             |

## Consequences

### Positive

- Less ceremony per feature.
- Reactivity is built into the framework — no `OnPush + async pipe` gymnastics.
- New devs ramp faster.

### Negative

- We lose NgRx DevTools (signal devtools exist but are newer).
- Best practices still settling; we capture ours in `knowledge/patterns/angular-signals.md`.

### Neutral

- RxJS is still useful for cancellation + complex streams; we use both deliberately.

## Compliance

N/A.

## References

- Angular Signals RFC + 17/18/19 release notes
