You can think of ngrx as a client-side messaging system. The user clicks a button, and the app sends a message (for example, dispatches an action). The app state changed because of this button click, and the ngrx Store sends a message to the subscriber(s), emitting the next value into an observable stream .