I wish Angular dropped their weird compiler that's tight coupled to tsc and moved into more pluggable approach so you can use it with whatever TS compiler. App and unit test cold build times are still crap, but at least with a coding agent you care about this less.
Or has sanity reached the Angular ecosystem by now?
I would be more happy if it would be just one of those..
Promised - async
Observables - streams
Signals - reactivity
Until this release (if you only use stable features) using forms meant dealing with observables too, even if you just want to read data when submitting a form and validating some data on change/blur.
And often you’ll find that your data from promises, observables and signals need to interact with each other, which can be annoying.
Fortunately the situation with signals and their async usage is improving, and iirc the Angular team wants to make rxjs optional, but until it is Angular can be a confusing mess on some points.
Regarding angular I agree, rxjs was a bad choice for data management, and before signals arrived I abandoned rxjs in favor of mobx in my angular projects. However you could roll your own http client, we used axios, and using DI it’s a drop in replacement.
> Signals - reactivity
The r in rx stands for reactive.
I suppose we can say that there are different kinds of reactivity. Signals is one kind. Observables à la rxjs is a different kind (the whole model of programming with rxjs was referred to as "functional reactive programming"). Observables are push-based. Signals, as I heard, are a more complex primitive, which, under the hood, is push-pull.
React's reactivity model may be crap; but this doesn't make it non-existent.
Since react doesn’t have a true reactive model, you need to subscribe to changes manually (use effect) to create computations, while in signals it’s a primitive (computed).
I actually created a lib that operates signals over reacts state management (https://roypeled.github.io/react-logic/), so I removed the boilerplate to create a true reactive system.
If you want, you can create reactive system just from JS primitives, using callbacks. But that doesn’t make JS reactive by nature.
How do you mean? Since the render function reruns during every update to state/props, derived/computed values can be calculated from the updated state/props during rendering.
"The react in react stands for reactivity, however it is not." [because] "Its entire state management is not reactive"
React is primarily an UI library, not full state management library. And its UI is reactive.
For the rest, RxJS is cool where you actually need it and want it.
I still use RxJS, but mostly in the top-level component and/or service who orchestrate between data, url state and api responses. Those top-level page usually keep the default change detection instead of the 'on-push' strategy).
Regardless signals is also fine, we have ways now to interop between rxjs to signal for those looking for it:
https://angular.dev/api/core/rxjs-interop/toSignal
Personally the http client workflow is fine. Usually lives in a service and exposes the needed values in any form we want.