What is it?
What makes it so useful?
It's very quick to start building out components, and helps bring clarity to designs as you can break down a more complicated user interface into individual components. Once you do that, you can see areas for code and component re-use, and thus overall it lends itself to helping you end up with a more structured and clean codebase.
Additionally, for React Native, it's great for building out cross-platform apps. Essentially you're using the same codebase, while you might have iOS and Android specific views or code, largely by building both in parallel with React Native, you can re-use a lot of logic, and some abstracted view elements and functionality, saving you time and money delivering on both platforms. It also makes it much quicker to add new features to both apps, and to keep platform feature parity.
What do I use it for?
Its extensibility means that I can use it for pretty much any type of web app or native mobile app, but it's main use is on the web for interactive frontend apps, and on mobile for being able to quickly build out cross-platform native applications.
Real world examples of our React and React Native apps in action