I work on a team that maintains a customer-facing web application that is built on Angular. It's been in production for the past six years.
I think Angular not quite in "the graveyeard", but probably only because a lot of large organizations outside of Google have large code bases that are built on it. (Having said that, I forget who they are — VMWare and CapitalOne and such, maybe?)
Still, it is definitely not a hot technology any more (if it ever was... I think the botched "upgrade" from the old "AngularJS" to the (completely different, almost a repudiation of a lot of the core ideas of the original) "Angular" framework shed a lot of users, so maybe Angular was never actually "hot" to begin with).
I definitely wouldn't start any new project using Angular, except in one specific circumstance: you have a large (relative to the size of your development team) body of existing software that uses Angular.
Then, you might want to share components and libraries across apps, and also leverage the skills of your existing Angular-using team.
I do find it somewhat harder to hire for roles specific to Angular development (I think because not many people want to learn it), and I also note that deep Angular knowledge isn't likely to be that helpful when looking for a new job, either. It counts for something, sure, but experience with React is far more sought after, and even Vue or Svelte is likely to be a little more useful.
Angular isn't horribly less capable than those frameworks — it does a lot for you, makes things like accessibility easy^W possible, is TypeScript-based which is overall a big win IMO — but there is, and has been, just too much fuckery around the edges.
I don't think Angular is really keeping up; I'd say it has been slowly falling even further behind the general state of the art.
The rollout of Ivy (its new, more performant rendering engine) was a multi-year boondoggle. It was late, it was painful to migrate to, third-party libraries still haven't really migrated so you still have problems/annoyances using those, and it sucked all their resources away from other important aspects like the Angular Language Service — so we didn't have good completion and linting in editors like VS Code, for quite a long time.
There was also nobody left to fix the testing story. They finally killed off Protractor, their bespoke E2E test monstrosity, after years of letting it languish, but the testing situation with Angular is still really mediocre and sub-par. Modern E2E frameworks like Playwright or Cypress support "component testing" (test components without rendering your whole app) for React and other frameworks out of the box, but not Angular.
AFAICT that is because Angular has this weird "NgModule" system where you construct these Angular-specific module things, and then they can import other Angular-specific module things... so rendering a component is not at all simple. The Angular team seems to be trying to make this optional, and Angular co-founder Igor Minar tweeted some "NgModule becoming optional soon, I think!" kind of teaser... before he left the Angular team and Google. That was several months ago at least; I also think he was the last founder to leave, so there are none left if I am not mistaken.
The i18n story recently finally upgraded to 'meh', after several years of being 'ugh'.
The DX is objectively bad — builds are very slow. There was some talk of taking the type checking out of band, so that it would still happen, but not block the edit-and-re-render iteration loop — but that hasn't happened. So in a non-trivial project that loop (which is typically the main loop) is slow.
Angular does do a lot for you, but in order to do so it monkey-patches DOM to hell and back — every async operation is monkey-patched so that it can do automagic change detection. That works great except when it doesn't work or when it makes things super slow, and it also makes debugging kind of nightmarish IMO — you end up in this 100s-of-frames-deep call stacks going through the zone.js async operation interception library. They are trying to make zone.js optional, too — or maybe it's technically optional now, but not really as a matter of practice.
TL;DR — Angular works okay, but after working with it in production for the last several years, I'd say is pretty mediocre; C- would not use again
I think Angular not quite in "the graveyeard", but probably only because a lot of large organizations outside of Google have large code bases that are built on it. (Having said that, I forget who they are — VMWare and CapitalOne and such, maybe?)
Still, it is definitely not a hot technology any more (if it ever was... I think the botched "upgrade" from the old "AngularJS" to the (completely different, almost a repudiation of a lot of the core ideas of the original) "Angular" framework shed a lot of users, so maybe Angular was never actually "hot" to begin with).
I definitely wouldn't start any new project using Angular, except in one specific circumstance: you have a large (relative to the size of your development team) body of existing software that uses Angular.
Then, you might want to share components and libraries across apps, and also leverage the skills of your existing Angular-using team.
I do find it somewhat harder to hire for roles specific to Angular development (I think because not many people want to learn it), and I also note that deep Angular knowledge isn't likely to be that helpful when looking for a new job, either. It counts for something, sure, but experience with React is far more sought after, and even Vue or Svelte is likely to be a little more useful.
Angular isn't horribly less capable than those frameworks — it does a lot for you, makes things like accessibility easy^W possible, is TypeScript-based which is overall a big win IMO — but there is, and has been, just too much fuckery around the edges.
I don't think Angular is really keeping up; I'd say it has been slowly falling even further behind the general state of the art.
The rollout of Ivy (its new, more performant rendering engine) was a multi-year boondoggle. It was late, it was painful to migrate to, third-party libraries still haven't really migrated so you still have problems/annoyances using those, and it sucked all their resources away from other important aspects like the Angular Language Service — so we didn't have good completion and linting in editors like VS Code, for quite a long time.
There was also nobody left to fix the testing story. They finally killed off Protractor, their bespoke E2E test monstrosity, after years of letting it languish, but the testing situation with Angular is still really mediocre and sub-par. Modern E2E frameworks like Playwright or Cypress support "component testing" (test components without rendering your whole app) for React and other frameworks out of the box, but not Angular.
AFAICT that is because Angular has this weird "NgModule" system where you construct these Angular-specific module things, and then they can import other Angular-specific module things... so rendering a component is not at all simple. The Angular team seems to be trying to make this optional, and Angular co-founder Igor Minar tweeted some "NgModule becoming optional soon, I think!" kind of teaser... before he left the Angular team and Google. That was several months ago at least; I also think he was the last founder to leave, so there are none left if I am not mistaken.
The i18n story recently finally upgraded to 'meh', after several years of being 'ugh'.
The DX is objectively bad — builds are very slow. There was some talk of taking the type checking out of band, so that it would still happen, but not block the edit-and-re-render iteration loop — but that hasn't happened. So in a non-trivial project that loop (which is typically the main loop) is slow.
Angular does do a lot for you, but in order to do so it monkey-patches DOM to hell and back — every async operation is monkey-patched so that it can do automagic change detection. That works great except when it doesn't work or when it makes things super slow, and it also makes debugging kind of nightmarish IMO — you end up in this 100s-of-frames-deep call stacks going through the zone.js async operation interception library. They are trying to make zone.js optional, too — or maybe it's technically optional now, but not really as a matter of practice.
TL;DR — Angular works okay, but after working with it in production for the last several years, I'd say is pretty mediocre; C- would not use again