After learning about middleware in general, let's focus more on a specific implementation of the middleware pattern: the Redux store middleware.
While using a similar concept of middleware, Redux middleware solves different problems than, for example, express middleware. It provides a third-party extension point between dispatching an action and the moment it reaches the reducer.
Redux middleware can be used for logging, crash reporting, asynchronous APIs, routing, and much more.