While building out a React application I started to realize it gets really difficult to share data through numerous components. That is when Redux works its best by giving a Developer easy access to the application state. This also means the Developer can send error reports directly to a server because using only React you will have a tough time tracking state while debugging. I can’t count how many times Redux has made my debugging less stressful by using the Redux DevTools to see actions and state changes. Not only does Redux come with all of these great features it also provides great convenience for the Developer and User. Another reason Redux is a go-to when building out a React application is that React tends to have a complex UI. Having a complex UI contributes to giving the Developer a hard time managing data through the components. Redux does have some cons as well. For instance, because the state is immutable in Redux a reducer updates the state by returning a new state every time it updates which uses a substantial amount of memory. Lastly, I see Redux as a great go-to when building out a React application for the sole purpose of its practicality with knowing when the state changes and where data is being sent from.