Before I begin, I’d like to clarify that I know Angular is open-source software and I appreciate how many people have dedicated their free time to improving it. But all that doesn’t prevent it from having faults. Some people might say “you’re free to use other frameworks”. Well that’s not true. What if your employer forces you to use Angular? Not everyone can afford to just quit their jobs.
Now some background.
In my first professional role, I worked on a large enterprise app written in AngularJS, then continued to work on the migration process to Angular. This went on for a hellish 2.5 years as I grew to hate Angular and ultimately spurred me to look for a role that did NOT use Angular. Now I’m at a different company developing React and it’s been a breath of fresh air.
With that out of the way, let’s go.
- It’s named Angular
Yes AngularJS is Angular’s predecessor, but they are completely different frameworks. Why give them identical names?! Add to the fact that people used to refer to “AngularJS” as just “Angular”. Now, whenever I look up something for Angular, a bunch of results for both Angular and AngularJS come up. It usually goes like this(note this was when Angular just came out. The top results are probably related to Angular now, but I’m sure it still happens):
- Google “How to lazy load components Angular”
- See a bunch of results for Angular
- Click them only to find out they’re talking about AngularJS
- Contemplate what I’m doing with my life
This has cost me a lost of time filtering through posts. And time is something you don’t get back.
2. Toxic environment in the Angular team
If you haven’t read this post by Jeff Cross please give it a read: https://medium.com/@jeffbcross/jeffs-letter-to-the-angular-team-and-community-5367934a16c9
He talks about his experience on the Angular team and how toxic and abusive behavior is perpetuated throughout the team. I believe his story is not unique and you can see more evidence on Angular’s Github issues page. Here’s an example: https://github.com/angular/angular/issues/13590
This guy raises an issue about why Angular is unable to compile if he has unused components, which is a perfectly valid use case. But here’s a contributor’s response:
then the author gives another polite response for why its a valid use case and here’s the contributor’s response
Half a sentence. No explanation. Just an offhand remark implying the author doesn’t know enough about compilers. I’ve seen many examples like this while I was working on the AngularJS to Angular migration. A lot of responses from the Angular team just said “this will be fixed with the Ivy compiler”. Note this was around the time of Angular 4. It constantly feels like the members want to lay blame on the users and not the framework.
3. Too much BOILERPLATE
Let’s create a new project in StackBlitz in both Angular and React and compare their starter code.
Here’s Angular. I’ve combined the components together so it’s easier to see. You can see it here as well: https://stackblitz.com/edit/angular-ivy-fn72rp?file=src%2Fmain.ts
Now here’s React https://stackblitz.com/edit/react-gi2ajp?file=index.js
In fact, now that React has something called Hooks, I can make it even smaller:
Voila! You tell me that isn’t beautiful, straight-to-the-point code.
4. Keeping Up
In my last firm, we were constantly playing catchup with the latest Angular version. It wasn’t as simple as updating the version in package.json and doing an npm install. Every upgrade had some kind backwards compatibility issue. I remember one time we had finally resolved the issues needed to upgrade from 4 to 5, and then 6 came out :(
5. Too Complicated
If something was complicated but came with advantages, be my guest! I’d happily spend the extra time to learn it. But with Angular, it feels like it provides no advantages to other frameworks yet comes with extra complexity. I’ve read quite a few articles comparing Angular, React and VueJS. They usually conclude with all three frameworks having similar performance, but Angular ends up with a larger bundle size. If they all have similar performance, why would I spend the extra hours learning a more complicated tool to fix the same problem?
To conclude, I think Angular comes with too much complexity and disadvantages, especially when compared to other frameworks. Please let me know if I am just alone in my opinion or if you think it sucks too. Actually, I know I’m not alone. Having asked many of my friends at other tech firms, including Google, they almost all prefer React or VueJS. The ones that prefer Angular don’t actually have much experience with other frameworks.