Every Angular application I have worked on in the last few years had the same three kinds of state:
URL state — the page number, the active filter, the selected tab.
Client state — what the user typed, what is expanded, what is selected.
Server state — the thing you fetched, and everything that can go wrong while fetching it.
And every application handled them three completely different ways. ActivatedRoute and a Router.navigate call for the first. Signals or a store for the second. A service returning an Observable, plus a loading boolean, plus an error field, plus a subscribe somewhere, for the third.






