React is a JavaScript user interface construction library that works well for:
Developing web apps with dynamic and complicated user interfaces.
creating reusable UI elements that may be used in other applications.
creating single-page applications with dynamic content updates that don't require a page reload.
The Virtual DOM's effective updating mechanism allows it to handle large volumes of data updates.
React, on the other hand, might be less suitable for:
Websites that are simple, stagnant, and have no interaction. Other libraries or simple HTML, CSS, and JavaScript may be a better fit in such circumstances.
Web sockets may be a better choice for applications that need real-time updates, such as chat or gaming apps.
When creating mobile apps, React Native is a better option.
Server side rendering only, as React is designed to run on the client side.
Unity is excellent for 2D and 3D games and educational experiences. It is well-suited for VR and AR development. It is also a great platform for mobile games. It is less-suited for non-game purposes (although it can certainly be used for those as well), or educational experiences. It is also less-suited for AR experiences that are highly complex, where you will probably want to write the native code in Android Studio or Xcode, as the case may be. It is theoretically less-suited for cases where performance is a huge concern as well, although, in my experience, performance has never been a problem.
React is fantastic for building performant user interfaces. Our web app is snappy and great for our customers.
React has the philosophy of doing one thing and doing it well which is the view layer of the application. This makes it incredibly intuitive and flexible for developers to use.
React has lead the way in being able to write modular and structured code. It is a drastic improvement since the days of spaghetti jQuery code.
React has an unmatched community. The amount of tools and libraries available is fantastic, and there plenty of solutions available online for common problems.
Unity is a multiplatform game engine. It has more than 20 options for exporting your game, ranging from desktop, mobile, console, web and, lately, VR and AR. Unity was one of the first game engines able to export games playable on internet browsers and it helped to cement the World Wide Web as a place fit for gaming.
Unity has a very smooth learning curve for beginners. It is easy to start and soon you are seeing some tangible results of your efforts. The game engine has all sorts of helpers and shortcuts to facilitate some frequent tasks in game development.
Another of Unity's advantage is the access to Assets Store from within the game engine, allowing the user to import instantly objects, scripts and textures from the store into their projects. Such easy access to these elements from inside a project greatly enhances speed production and is particularly helpful to beginners.
Debugging React is challenging. Bugs in react code generate stack traces internal to React and it is often totally unclear how it relates to the code you actually wrote.
Relating your React elements to corresponding DOM elements is difficult. The intentional separation of virtual and actual DOM also makes it difficult to map the elements to the structures in the DOM. This is partially ameliorated by the use of the React dev tool, which provides a DOM-like view of the React elements, but the tool still does not provide a direct correspondence with the DOM that is often necessary to figure out why something isn't right.
Because JSX is React-specific and not a language feature, a special compilation process is necessary to convert JSX code to normal JS. Coming from a C++ background, compiling things doesn't bother me, but many JS developers are used to a less structured development.
React is just a bit of a different animal. I was avoiding it for the longest time. I thought for sure I would land on Vue or something else with a more approachable and familiar appearance. But after taking an online course in React, I started realize what people were raving about (and complaining about) and decided to implement it at our office for one of our products.
It's actually incredibly easy to use given the complex tasks you have. Once you learn the various windows it becomes second nature. Compared to something like Blender (which I would probably rate as a 2 on usability), the learning curve of Unity is a breeze! The only improvements I can think of would be to streamline some common workflows so you don't have to dig through menus to find them.
Since it's open-source and very popular, the community support for React and related tools and libraries is excellent. There are a lot of people using the same tools, and so issues tend to get fixed quickly and "recipes" are easy to come by. And since it's backed by Facebook, they have a dedicated engineering team working on the progression of React.
I have not had to use Unity's support extensively. This is likely because there is so much documentation and so many classes available for free online. Due to this, there is little need for support. They were very responsive when I requested educational licensing. Setting it up and providing it all quickly.
While this is a widely contested debate with various blog posts and benchmarks all over the place, its really a personal choice to determine what works for the team. Coming from a Angular 1.x background, I decided to try a new framework when Angular 2.x was announced and at that time React is gaining popularity and Vue hasn't taken off yet. Compared to Angular 1.x and Vue (hybrid of React and Angular) that split the logic from the html templates, I loved the way React breaks code into components using the jsx syntax. In my mind, this allows for cleaner components and easier maintenance
We love utilizing unreal engines but we seem to have a better use case for the architectural visualization side of things. This has given us the ability to find better more photo-realistic assets from not only the marketplace but 3rd party sites that have a unity bases file to work off of.