Angular, We Have a Problem

February 08, 2020

It’s pretty hard to read the results from the State of JavaScript 2019 survey and not come away with the impression that Angular is a disaster. Literally every single number pertaining to Angular is either bad news or worse news. Which, as with all opinion surveys, raises the question: do the results reflect perception or reality?

The Numbers

Angular first shows up on the survey’s overview of front-end frameworks, where it is compared with five others: fellow heavyweights React and Vue.js, and smaller players Preact, Ember, and Svelte. Let’s start by noting that Angular has a 100% awareness ratio, and has been at 99% or higher since the 2016 survey. So, none of the other numbers we’ll look at are being biased by respondents simply not knowing what Angular is.

Before we go any further, let me also note that I’m going to be focusing primarily on Angular’s performance as compared to React and Vue in this post. The survey does contain a lot of interesting data on the three less-used frameworks, but ultimately, they are bit players right now compared to the “Big Three.”

The bad news for Angular starts right away, in the satisfaction and interest ratio rankings. In both categories, Angular comes in dead last, at 38% satisfaction and 23% interest. Both React and Vue have well over twice Angular’s performance in both categories. (An interesting side note is that both categories did tick downward in 2019 for every framework that had 2018 data, with the sole exception of a one-point interest uptick for last-place Ember.) The satisfaction category is particularly bad, as there is a 40-point gap between 5th-place Angular and 4th-place Preact. React and Vue both show close to 90% satisfaction.

Scroll down to the next chart, and the news doesn’t get any better. This chart evaluates opinions of the frameworks by sorting respondents into five categories that intersect experience with satisfaction or interest. The two “negative sentiment” categories are 1) people who have used the framework before but would not use it again, and 2) people who have only heard of it but are not interested in learning or using it. For the latter group, Angular’s numbers are worse than React and Vue combined, with nearly a full third (32.4%) saying they are not interested in Angular. But the real gut-punch is the former group: over a third (35.8%) say they have used Angular, but would not use it again.

That figure is not even in double-digits for any of the other frameworks.

As for the “opportunity” group—the people who have heard of Angular and want to learn it? Dead last among all six frameworks at a measly 9.7%. All of this is even more significant considering that Angular and React are the only two frameworks in the survey that break the 50% usage mark, and yet the difference in opinions is like night and day.

A final note on this page, from the “Usage by Company Size” table. Of the Big Three, Angular users had the most representation across the three largest company size ranges (50 employees or more). In general, Angular users are more concentrated in those larger size ranges, with fewer of their number coming from very small companies.

Time Is Cruel

There’s one more chart for Angular, on its own page of the survey, but it’s not any prettier. (Actually, the charts themselves are very pretty, as the folks behind the survey did a most excellent job of data visualization. But I digress.) This chart reveals two things. First, Angular experienced an absolutely massive increase in usage during 2018, with the proportion of survey respondents indicating they’d used Angular jumping from 28.5% to 57.8%. Second, the overwhelming majority of that increase fell into the “used it, wouldn’t use it again” category. Angular actually converted both interest and disinterest into usage at an impressive rate, but dissatisfaction among those people was very high.

A less-important, but still-worth-noting, third point is that the minority of users who make up the promoter category, the people who have used Angular and would use it again, dropped in 2019 for the first time in the three-year period covered by the chart.

Perception vs. Reality

Opinion surveys are a curious exercise in that they provide an objective picture of subjectivity. An opinion survey can tell you whether people think a thing is good or bad, but it can’t tell you whether those people are correct. (Contrary to popular belief, majority agreement does not automatically make a notion “right.“) The data from the survey are clear: a sizeable majority of JavaScript developers have a negative opinion of Angular. But that doesn’t mean Angular is bad … or does it? In order to get an idea of that, numbers aren’t enough. We have to sprinkle in some anecdotal data, some common complaints about Angular, to determine if the negative sentiment has a basis in reality.

Reality: Angular has tons of boilerplate

I have done quite a few projects with Angular, both before and after I started working with React. Now that I can compare my experiences with the two, one thing of which I’ve become painfully aware is that Angular has a staggering amount of boilerplate. A little of it is just TypeScript, but a lot of it is Angular itself using a very boilerplate- and configuration-heavy approach. I don’t know about you, but one of my pet peeves is having to write files to make my files work.

Reality: Angular encourages separation of concerns

Sure, you can write an Angular app and have your HTML, JS, and CSS for each component all in one file. But this isn’t the recommended practice, and it’s pretty messy without some sort of language or language extension like JSX to optimize the experience. With JSX and CSS-in-JS solutions as popular as they are, Angular sort of bucks the trend. (Oh, and creates even more boilerplate in the process.) This isn’t to say separation of concerns is bad, but Angular’s way of handling the issue isn’t especially elegant.

Reality: Angular gets complicated really fast

Alternative header for this section: Directives and services and pipes, oh my! Angular has an eye-popping number of different constructs for all sorts of different under-the-hood capabilities you might need, and they all have their own rules and conventions. And, perhaps most controversially, the whole framework is pretty heavily based around RxJS Observables. I personally think RxJS is pretty cool, but man is it deep. Add in the complexities of modules, bootstrapping, and the integrated routing capabilities (which somehow manage to add still more boilerplate), and it starts to get super easy to dig yourself so far into the Angular docs that you can’t even see the light of day.

Perception: Angular is messy and unwieldy

Given all that, it’s easy to see why Angular has the perception of being the front-end framework equivalent of the Jawa sandcrawler from Star Wars. I’d love to see someone try to argue that Angular is sleek or easy to learn; it would probably be really entertaining. It’s just not long on simplicity or elegance, two things that a lot of developers do care about, especially on the front-end where the experience is king. Remember when we saw that table in the State of JavaScript survey showing that Angular users were distributed more toward mid-sized and large companies than very small companies? I would suggest that perhaps that is the result of Angular just being too convoluted for small teams as compared to its main competitors, whereas larger companies with bigger budgets have more tolerance for excessive complexity.

Is Angular Bad?

Most tools, frameworks, or libraries do indeed have some use-cases where they are better than the alternatives. I suspect this is true of Angular as much as anything else. But, I think Angular has failed to make a convincing case for being first-choice on the average project, and the case against it is compelling.

React recently had a revolution of sorts with the introduction of Hooks, a new API for building powerful components with JavaScript functions, and one of the coolest and most intuitive systems I’ve ever worked with. Vue is getting ready to launch a Composition API inspired by React Hooks that may similarly provide a fresh and more elegant way of working with Vue. If Angular is going to repair its broadly negative reputation, they may need to dream up and pursue a similarly radical new approach. Without that, the attractiveness gap between Angular and its competitors is only going to keep growing.


Philip Fulgham is a software engineer who builds web applications. Visit this website's front page to learn more.