Answer
NgRx solves complex application state management problems, especially in large apps where multiple components need shared state.
You should use NgRx when many components read and update global state, require time-travel debugging, offline caching, immutability, or predictable unidirectional data flow.
Small apps do not need NgRx; services or BehaviorSubjects are sufficient.