What's difficult about building an application? Obviously, you can do anything with plain, vanilla JS, but things start getting hairy when you try to keep the UI and the state of the application in sync. You call services, you get data. Data must be reflected in several places, HTML elements must be changed, added, or removed, and so on—this is where the complexity lies.
So far, we've been working only with state in components, and you could very well keep doing so: your top level component's state will include everything you need, and you'd be able to manage by passing everything you need as props to the components below. Of course, as your application grows, this won't scale very well. What's the tipping point? Redux is a tool to manage state, but its own developers suggest that you should use their package if and...