Redux is an open source JavaScript library that is commonly used with React. The main goal of redux is to centralize your application state in a way that makes it easy to store, manage and update.

Redux does this by creating one large object which stores the entire applications state, instead of each component being siloed and having its own individual state all components share a global state.

When creating an application in React it is possible to do it entirely without Redux, however as the app grows and becomes more complex so does the state management which can result in increased errors for your application.

Even though Redux may not be necessary for smaller apps, for larger apps with multiple components all making changes to the state Redux can be a useful library.

By having a centralized location to access and manipulate state means you can reduce complexity and have more control over your state, in addition to this using Redux can make sharing and passing data between components easier.