For one it's a curse, for another it's a blessing: the freedom that React offers.
While fully-fledged frameworks like Angular provide very clear guidelines about how an application should be structured and also provide their own methods for data management, services and business logic, React follows more of a "bring your own" pattern - meaning as much as that you can use whichever tools you might already be using.
As already mentioned at the beginning of this book, React is just a library for the development of user interfaces (Small anecdote on the side: This sentence is one of the few lines of documentation I quoted in this book that hasn't changed in the course of working on this book ;)). In the world of classical MVC (Model View Controller) architecture, so to speak, React only touches on the view layer. If you look for extended state management, if you want to develop a multilingual application or if you need client-side routing out-of-the-box, React alone will often not make you happy.
But there is a very valuable and active ecosystem that has evolved around React, with tools that integrate well with a React setup and give developers the choice of choosing from multiple tools to find the one that best suits their personal needs. If none fits at all, this is usually not a problem. React offers a variety of functions and APIs that allow for the possibility to develop a robust, own solution.
With such a great and vast ecoystem around a single library, you might lose track as to which additional tools are actually useful. I want to dedicate some time and effort in this chapter to outline the most common tools and libraries which have proven to be effective in the daily work with React. Most of these have thousands of starts on GitHub and are installed ten thousand times or more via npm.