AngularJS
In short: The original, first version of Angular (from 2010, JavaScript-based) — technically completely different from today’s Angular (2+), despite the similar name.
In more detail: AngularJS introduced concepts like two-way data binding and directives on a large scale, but was officially retired (end of life) in 2022. The successor “Angular” (without “JS”, from version 2) is a completely new, TypeScript-based framework with no backward compatibility.
In Depth
Two-way data binding (ng-model) was AngularJS’s best-known feature: change a value in the UI, and the corresponding variable in the JavaScript code updated automatically — and vice versa. Under the hood, AngularJS used a “digest cycle” for this, which checked all bound values for differences on every possible change. This was easy to use, but became noticeably slow in large applications with many bindings, because the digest cycle had more and more to compare as the page grew.
Because no way was found to make this architecture performant enough for modern, component-based applications, the Angular team decided in 2016 on a complete fresh start instead of gradual modernisation — hence the break in the name and the lack of compatibility. Since the official end of life in 2022, AngularJS no longer receives security updates; old projects still running on it are considered technical debt and are usually migrated to Angular, React or Vue.
Directives as a central concept
Besides data binding, directives (HTML attributes with an ng- prefix) fundamentally shaped the AngularJS style: ng-repeat generated lists directly from the markup, ng-if/ng-show conditionally showed or hid elements, ng-click bound click handlers directly in the HTML. This declarative approach — logic directly in the template instead of in separate JavaScript code — seemed revolutionarily simple in 2010, but quickly became unwieldy in more complex applications, since behaviour got spread across many HTML attributes instead of sitting centrally in the code.
Why migration was so hard
One reason many companies kept running AngularJS long after its end of life is the fundamental language change: an AngularJS project in JavaScript can’t be gradually migrated to Angular (TypeScript, component-based, no digest cycle), but essentially requires a complete rewrite of the frontend logic. Google did offer “ngUpgrade” as an interop tool, letting both frameworks run in parallel in the same application, but even with that, the actual porting of the code remained manual work. Many teams therefore decided against Angular entirely and chose React or Vue instead, which cost AngularJS’s namesake Angular market share against these two frameworks in the 2020s.
Distinction from modern Angular
Anyone hearing “Angular” today with AngularJS experience shouldn’t assume similarities: modern Angular uses TypeScript instead of JavaScript, components instead of controllers/scope, a reactive change-detection system (Zone.js, now increasingly being replaced by Signals) instead of the digest cycle, and a completely different template syntax. The only real commonality is coming from the same Google team and the basic idea of a complete, opinionated frontend framework rather than a pure library like React.