I initially used it with version 1/Angular 1.x. Then when Angular 2 was basically a complete rewrite from scratch Ionic did the same. For a little bit I was still able to compile the code but quickly their tools became unavailable and unusable.
It's true. But also I consider Angular 2+ to be inferior to other similar frameworks. It was overengineered to no end had as much to do with Angular 1.x as a space shuttle has to do with a horse buggy. I remember looking at how they proposed to specify templates via `` template strings as part of the JS code, making their template language completely unreadable and thinking how that's such a step back in usability compared to how Angular 1.x did it, which was basically what Vue.js does.
And I do still have some scars that haven't fully healed from that transition. Look at Vue's evolution from 1.x to 2.x to 3.x. The new way to create components in Vue 3 is what Douglas Crockford proposed way back in like 2008. Except it's reasonably worse for code readability compared to Vue 2.x because it is completely unstructured. And at one point the Vue team was talking about taking out half the features that I routinely use in Vue 2.x such as $emit()/$on(), watchers, etc.
I don't have as much experience with React, but from what I understand they break compatibility much more frequently than Vue does. Plus, JSX is a very polarizing tech and I am firmly on the side that dislikes it.
Compare all of the above with a project like Django where backwards compatibility is maintained for years and developers consider it a big cost to break features. It's a much more carefully developed project and it makes running the code much easier. The template syntax has not changed in what, 10 years at least? In the meantime how many JS frameworks have we seen rise and fall? As far as I am concerned, every time a framework or library update breaks my application, the framework is imposing a cost on me. Adding new features and refining existing features? Fine. Breaking the world because someone didn't like how $emit()/$on() worked? That's like if the Linux kernel decided tomorrow to switch to using Windows syscalls because they got a Windows developer on the team.