Last updated: 13.04.2020
The goal of this article is not to find the best technology, but to compare, highlight, and clarify few misconceptions. We’ll also focus on what is important instead of minor details that do not really matter in the long-term.
You should be aware that the comparison between these two technologies cannot be fully covered. Angular comes with a complete framework (MVC), while React is a fronted-library with lots of open-source packages to integrate with. One is about a monolithic structure (Angular), like a box of tools that comes with everything you need, while the other (React) doesn’t come with everything, but have lots of good options to integrate with.
- What are the key differences between Angular and React?
- What makes TypeScript so special?
- How popular are these technologies?
- What is the current open-source status?
- Which technology do companies use the most?
- Do static typed languages influence code quality and development time?
Future sections will be added based on demand from the comments.
Here’s a quick side-to-side comparison between Angular (left) and React (right).
One thing that is really great about React in terms of performance is the Virtual DOM, which you’ve probably heard about a couple of times. If not, don’t worry, I’ll explain it!
Let’s say you want to update a user’s birth date within a block of HTML tags.
It only updates the part that is required by seeing the differences between the previous and current HTML version. Its a similar approach to how GitHub operates when detecting changes in the file.
It will update the whole tree structure of HTML tags until it reaches the birth date.
It may not matter for the problem described above. However, if we deal with 20–30 asynchronous data requests on the same page (and for every page request we replace the whole HTML block), it will influence performance as well as user-experience.
But first, back to the beginning…
We’ll need to know a bit of history (context) because it provides insight into how things may shape up in the future.
It’s not because the language was poorly written, but because it has a different purpose. It was built to handle the asynchronous nature of the web, such as user interaction, event-binding, transitions/animations, and so forth. It’s a different animal with different instincts.
As Google Trends reveal, Angular and React are two of the most popular web technologies in 2020.
In May 2018, the popularity between Angular and React shifted leaving React more popular in terms of search hits. This does not classify which one is better than the other. But shows an indication what people find more interesting on the web. One thing to keep in mind is that Angular may have more search hits than shown in Google Trends thus people still use AngularJs when searching for Angular.
In short, both technologies are growing, and the future looks bright. That means you don’t have to worry if one technology will not receive support anymore.
It’s important that we do not neglect history in terms of what happened between AngularJS and Angular, because history is a form of indication on what may happen in the future. But if you have some experience with Angular and AngularJS, then you’ll most likely see why the decisions was made for the better. Just to mention, such things can happen to any frameworks out there, including React. That is a part of how the business world operates.
React has over 100,000 stars, along with 1200 contributors and close to 300 issues waiting to be resolved.
React has an a time-to-market advantage, since it was released 3 years prior to Angular. And that means it has faced lots real-world problems, gone through critical tests, and overall has developed into an adaptable and flexible fronted-library which many love.
When it comes to Angular, at first glance, we can clearly see that Angular has 6 times more issues than React (not good). However, we must not forget that Angular is a much larger framework, and also has fewer developers using it (currently) because it was released in 2016.
- Stars: 60.000
- Contributors: 1100
- Issues: 3000
- Stars: 150.000
- Contributors: 1400
- Issues: 500
React was initially developed at Facebook for Facebook to optimize and ease the development of components. An article written by Chris Cordle points out that React has a higher usage at Facebook than Angular has at Google.
So who uses which technology?
- CVS shop
- Google Express
If you know of any large (well-known) companies using Angular, please share with a link.
As I mentioned, it can be misleading to only compare Angular and React without focusing on the core language each one emphasizes (according to their docs).
Note! The aim this section is not to decide whether we’ll choose Angular or React. But clarify few misconceptions between statically- vs dynamically-typed languages that has been going on for a while, backed with research.
In general, TypeScript provides a smooth transition for programmers with an object-oriented programming (OOP) background. It is important to notice that TypeScript was released in the period of ES5, and during that time, ES5 was not a class-based OOP language.
In short, the closest you could come to classes and objects back then was through prototype inheritance. And as we know, this was a difficult transition for most developers with an OOP background. So the ideal decision was of course choosing something you felt comfortable and familiar with, which was likely TypeScript.
A statically typed language basically means that you can define the variable type (string, number, or array etc). You may ask why this is important. Here’s a real world analogy I’ve setup (creativity at its best).
Let’s say you want to refuel your car with gas. One thing that is important is to fuel with the right gas — petrol or diesel. And if you don’t know, you may need to buy a new car.
Of course, the severity is not like that with coding, however, in some cases it may be. Think about it. If you work with a large application, you would like to know the argument and property type that is passed, otherwise you may break the code.
Alright, so if you are still confused what statically typed means, check this out:
I’ve learned that lots of people believe that a statically typed language means reliable code, and is most often used as a winning argument over dynamically typed languages. And frankly, it is quite difficult to disprove this statement because it fundamentally relies on the development environment, the programmers experience and of course the project requirements.
- Statically typed language require more time due to fixing typo errors
- Dynamically typed language is readable and easier to write (declarative code)
Figure 5 shows that, on average, developers reduce their development time by a factor of two when writing a dynamically typed language.
If you want to dig deeper into this topic, I suggest reading this article by Eric Elliott which states that you may not need TypeScript (or statically typed languages).
So the question is not only about what Angular or React offers, but also about what core language you should invest time on. And it does not really matter as long you choose something that fits your requirements and complexity.
If you are not a fan of types, then there is nothing standing in your way of writing ES6 code in TypeScript. It’s just that if you need it, then it is there.
But if you build a fairly large front-end application with Angular dealing with many HTTP requests, then having types really helps with questions such as “What type of object is this, what fields can I use, and what type is this field etc”. It works great for collaboration and clarifying small things.
Here is a simple class-object comparison between TS and JS (ES6).
Statically typed feels structured, secure, readable, and easy to collaborate with others (prevents people from passing unexpected values). However, when working with dynamically typed, I have the flexibility and creativity to focus more on creating than thinking to much about types, interfaces and generics and so forth.
And from the past web-apps I’ve built, I haven’t really had any large issues with not having static typed. It does not mean I don’t like it — I just that I don’t need it, but maybe I do in the future.
Here’s an update — currently I’m working with a couple of Microsoft developers to build an application using Angular framework. The reason we’ve selected Angular is because most of the packages are already defined, and the documentation for everything is in one place. It also emphasizes on TypeScript, which is a perfect choice because the majority of devs have already lots of experience with object-oriented programming.
On the other hand, I’ve seen similar apps we are working with built with React. So in general, both are powerful tools, and mostly rely on how you setup the architecture.
- TypeScript is simply a transpiler, it can be used with React or any other JS frameworks
- React handles memory-management efficiently (virtual DOM)
- Angular uses TypeScript, released in 2012
- Statically typed language is great, but its not a must
- Dynamically typed languages require less time to write and more flexibility to use creativity
- Learning statically-typed language may be a challenge, especially if you’ve only been working with dynamically typed languages
- ES6 has implemented lots of great features such as modules, classes, spread operator, arrow functions, template literals that allows you to write less, cleaner and more structured code (syntactic sugar)
- TS is simply ES6+ with types and much more
The framework/component-library you choose may influence how much time you spend programming and your budget. If you have a team that has experience with programming languages such as C#, Java or C++, then Angular would be a wise choice since it supports a language (TypeScript) that shares many similarities.
The best recommendation for anyone that is uncertain which framework works best is to setup a basic application in Angular and React, and then evaluate the language and work flow before you make a decision which one to build your business upon.
As previously mentioned, both technologies have their own set of advantages and similarities, and it really boils down to what type of requirements the application offers, the complexity and level of experience the developers have.
Here are a few articles I’ve written about the web-ecosystem along with personal programming tips and tricks.
- A chaotic mind leads to chaotic code
- Developers that constantly want to learn new things
- A practical guide to ES6 modules
- Learn these core Web Concepts
- Program faster by creating custom bash commands
P.S. If you enjoyed this article and want more, please clap ❤ and share with friends that may need it, it’s good karma.