React Query is a library for fetching data in a React application. Since React is a UI library, there is no specific pattern for data fetching. What we typically do is make use of useEffect hook for data fetching and useState hook to maintain component state like loading, error or resulting data. If the data is needed throughout the app, we tend to use state management libraries. But what is important to note here is that most of the state management libraries are good for working with client state. State like theme for the application or whether a modal is open. They are not great for working with asynchronous or server state. This is because server state is very different to client state. Client state is persisted in your app memory and accessing or updating it is synchronous. Server state on the other hand is persisted remotely, in a database perhaps and requires asynchronous APIs for fetching or updating. Also, server state unlike client state has shared ownership. Data can be updated by someone else without your knowledge which can quickly lead to UI data that is not in sync with the remote data. It becomes even more challenging when you have to deal with caching, deduping multiple requests for the same data, updating stale data in the background, performance optimizations when it comes to pagination and lazy loading etc. If you have to cater to all these in an application, it requires significant time and effort to do it all by yourself. Or, you can take the smarter approach and use a library which makes handling all these scenarios a walk a in the park. And you've probably guessed it, that library is React Query. I will even go to the extent of saying, even if you dont have complex requirements like the ones stated here, watch this series and give React Query a try for your data fetching needs because you'll not want to go back. That is how amazing this library is. Well if I've convinced you, here are some of the features we are going to be implementing in this series with the react query package. We are going to learn how to make basic queries, how to poll data, work with react query dev tools, how to create reusable query hooks for data fetching, how to query by id, parallel queries, dynamic queries, dependent queries, infinite queries and paginated queries. We also need to keep in mind that server state is not just fetching. It also needs updating. We will learn how to update data using mutations, how to invalidate queries when a mutation is successful, optimistic updates and we will wind up the series with a video on how to setup an axios interceptor and work with RQ. By the end of this series, you'll have a really good knowledge of React Query and data fetching in react. Hopefully, you will also be in a position to recommend this library at work and will be something your teammates appreciate as well.