Angular introduced a new reactive primitive called signals with the release of Angular 16.
Signals are synchronous, fine-grained, and easy to use reactive values that notify dependents when their value changes.
Computed signals in Angular allow you to create derived signals similar to computed properties in other reactive frameworks.
Signals are suitable for managing local UI state, creating computed values, and simpler reactivity, while observables are better for dealing with asynchronous data, composing multiple async streams, and integrating with RxJS-based libraries.