July 22, 20197 min read
Authors: Michał Skóra - Front-end Developer
Both React and Angular, as well as their comparison, have been widely covered all over the Internet. Up till now, however, it hasn’t been exactly clear what choosing any of these frameworks can mean for your business. Have a look at the potential benefits of picking either React or Angular and possible threats that might stem from such decisions.
No matter their origin, though, the question remains: What specific types of apps are they suitable for, and why?
Let’s start from React. It works well whenever there’s a need for a quick implementation, prototyping, or creating a proof of concept. It’s mostly because React makes it possible to develop a functioning app relatively fast, which is why it’s often chosen by startups, smaller enterprises, and anyone with limited time and budget to bring their ideas to life.
Unlike Angular, React is only a library which provides the “view” in MVC architecture ("Model-View-Controller") and thus, gives you more freedom. It means, however, that you have to choose additional libraries in order to develop more advanced applications (responsible for routing, handling & validating forms, or integrating an API, just to name a few). Even though you can choose any of your own libraries as you see fit, it will take some time before you actually put them all together at the beginning. Plus, whenever necessary, you will have to take care of the updates and migrations by yourself. From a business perspective, it’s important to know that React offers significant flexibility and it’s often used in developing open web services, for example, e-commerce platforms or marketplaces.
Speaking of updates: it’s no secret that it’s Facebook that’s responsible for growing the so-called “React ecosystem”. It can be tricky, though. For example, whenever Facebook releases a new version of React that brings significant changes, it might take some time before the authors of libraries actually notice that and apply relevant changes as well to keep their libraries up-to-date.
As a result, this ecosystem can easily resemble… a Frankenstein. All individual parts are somehow connected and function well, but there may be a risk that these “stitches” which bind them together might break. Especially when a team of developers is inexperienced or they lack diligence.
Angular, on the other hand, is a proper framework that provides comprehensive solutions, which are regularly updated, fully-functioning, and compatible with one another. It’s being constantly developed by Google, which is also be seen as an advantage by many.
Besides, Angular is divided into many modules. It doesn’t mean that you have to use all of them at once - but you can easily download whichever module you need. Because of that, you also have control over the size of the app.
Every module is responsible for a different layer of the app. One of the examples can be Reactive Forms Module, which enables the development of complex forms. Naturally, it works perfectly with much simpler ones (consisting of only a few input fields) as well. The main advantage here is that you keep control of the form at all times - you can easily add new functionalities to it, such as custom form controls or asynchronous validation. This could be possible in React as well but would require much more work. Angular’s well-defined architecture makes it more structured and therefore more suitable for long-term projects and/or rotating teams.
Why are forms and their development important, though? Because they form an integral part of every bigger application. That’s precisely why it’s essential to estimate their number and complexity while choosing the right technology for your project.
Interestingly, Angular implies the adoption of a specific convention regarding the directory structure and the names of particular files & components. As a consequence, it’s much easier to keep a certain order within the project. Plus, whenever there are new developers on board, it makes it easier for them to get familiar with the project and start working on it almost immediately. It also makes a difference when the application is growing and thus, there’s increasingly more code in the repository.
React has no such convention, which means that each application has a different structure. Therefore, maintaining the style applied once internally by your team might be harder than you think - and definitely requires more commitment from all the developers. Actually, structuring a React project is what seems to be problematic for many. If that’s also your case - take a look at this website. You can immediately notice that there’s a lot of freedom and flexibility involved when it comes to React.
Luckily, we do have a defined coding style guide at Future Mind, that allows us to develop apps more easily.
React is a great choice for startups, or whenever there’s a need to develop small separate applications/widgets for your site. It’s been already used plenty of well-known companies, such as, Uber, Netflix, or Instagram. Uber, on their Uber Engineering blog, states that React fits the UberEATS use case very well thanks to the multi-platform support and because it could work well within their existing mobile infrastructure. Netflix has chosen React to increase the initial load, for its runtime speed and modularity that supports Netflix’s numerous A/B tests. However, in 2017 Netflix removed React from client-side, still keeping it on server-side. Instagram is built on React which shouldn't be surprising - after all, React has been developed by Facebook which has acquired Instagram.
Angular, on the other hand, may work better with different management systems (CMS, CRM, etc.), and more complex apps because Angular extends HTML’s syntax that simplifies the front-end development and allows for creating content management capability quickly. Among others, Angular offers reactive forms that are powerful and flexible. Angular’s simplicity and scalability might be the reason why so many media giants have decided to take advantage of it, including Forbes and The Guardian. The latter opted for Angular because it’s a good fit for developing rich web applications. Angular is also a framework of choice of PayPal that uses it in the PayPal Checkout system, including parent page, payment review page, sidebar, and adding credit card page.
Choosing Angular or React is like choosing between Messi or Ronaldo and between BMW and Mercedes. Both frameworks are mature and robust, both consist of many packages and have reliable support from their communities. Finally, both can be a good choice to build various web applications, including progressive apps.
As usual, the final choice should be influenced by the type of the application, its size & complexity, as well as time that can be spent on its development. The differences in the overall performance of both Angular and React are practically nonexistent. In the right hands, both tools can be powerful, reliable, and able to bring you closer to achieving your business goals. And we’re fully aware of that.
In short, you should consider React if you need a library that is:
fairly simple, relatively small,
easy to learn,
has 1-way data binding,
fast, thanks to the Virtual DOM
very scalable, a perfect choice for smaller projects because in React, they can be launched very fast, with minimum configuration.
On the other hand, you should consider Angular if you need a library that is:
quite complex but powerful and comprehensive,
harder to learn but giving lots of features and options,
has 2-day data binding,
also very scalable, especially for bigger projects, such as analytical and other complex dashboards, asynchronous single-page apps, etc.
At Future Mind, we believe that tools and technologies should be tailored to every project and its needs. Some of our clients work in Angular, others prefer React - that’s why we work with both technologies in parallel. We usually recommend Angular for complex applications, for example, analytical dashboards; while React for web projects that require lots of flexibility, i.e. e-commerce services. Below you can find a few examples of the applications we developed in both frameworks:
Connected Boat: A single-page application for fleet managers and an admin dashboard for a system’s owner.
HotelOga: A single-page application developed for a hotel that allows for managing its offers and, in addition, consists of a client’s pannel which lets them search for accommodation and to book it.
OriginTag: A single-page application which consists of a dashboard that displays OriginTag’s user's activity data, allows for creating campaigns, etc.
EpiWays: A single-page application which is a dashboard that shows the details about the doctors’ visits and medical conditions saved by patients in the app.
Gethome.pl: A real estate marketplace that presents offers from both primary and secondary markets.
Djar.com A real estate marketplace that focuses on properties located on Malta.
Szopi.pl: An e-commerce service that offers ordering grocery products from various popular stores in Poland, such as Lidl, Tesco, or Biedronka and then getting them delivered all together within a few hours.
As you can see, the goal is to meet the business assumptions of each client in an effective and seamless manner - which is why we can use both React and Angular, depending on your project. Why not discuss it with us, then?