I will be honest there was a stretch where Angular felt like it was losing the plot. While React is winning hearts with their simplicity and Claude (Claude AI responses are in react.), Angular was still making you set up NgModules just to sneeze. It felt heavy. Ceremonial. Like framework bureaucracy.
Then something shifted.
Starting around v16, the Angular team stopped patching the old machine and started building something new underneath it. Quietly, consistently, version by version they rewired the whole thing. And now with v21 dropping in May 2026, I think it's finally time to say it out loud: Angular is genuinely exciting again.
Here's how we got here.
v16 & v17 —> The Wake-Up Call
Angular 16 was the first sign something was different. Signals landed in developer preview a lightweight reactivity primitive that had nothing to do with RxJS observables or zone.js magic. Just clean, trackable state. It was not flashy, but developers who paid attention knew what it meant.
v17 was where things got loud. They redesigned the docs, refreshed the brand, and more importantly, gave us a new control flow syntax @if, @for and @switch that actually looked like code instead of XML markup accidents. *ngIf always felt like a workaround. @if feels intentional.
They also shipped @defer for lazy loading components, which I would describe as the best quality of life improvement Angular has had in years. And swapping Webpack for Vite + esbuild cut build times by something like 67%. That alone changed how the framework felt to work with day to day.
v18 & v19 —> Killing zone.js (Slowly, Carefully)
Zone.js has always been Angular's secret weapon and its dirty secret at the same time. It is how Angular knew when to check for changes but it iss also a monkey patching library that wraps every async operation in the browser. Not exactly elegant.
v18 introduced experimental zoneless change detection. The idea if your app runs entirely on Signals, Angular can skip zone.js altogether and only update the DOM when a signal says something changed. Faster, leaner, more predictable.
v19 made standalone components the default (finally), and added linkedSignal and the resource() API which, if you've ever tried to manage async loading states with RxJS, will feel like a revelation. It handles the loading/error/data cycle for you in a signal native way. It is the kind of thing that makes you wonder why it took so long, then realize the groundwork had to be laid first.
v20 —>Stabilization (The Unglamorous but Necessary One)
v20 does not have a flashy headline feature. What it has is stability and that actually matters. The zoneless APIs went stable. effect(), linkedSignal, the whole reactive core production ready. You could finally build a greenfield app without nervously checking whether that API was still experimental.
They also tightened security: automated XSS/CSRF protections, stricter Content Security Policy enforcement. And dynamic component creation got significantly less painful. No more wrestling with ViewContainerRef for basic runtime use cases.
v21 —> Where It Gets Interesting
Angular 21 is the first version where I feel like the team is going on offense rather than playing catch up.
Signal Forms have been the one area where Angular reactivity story fell apart. ReactiveForms work, but they don't feel reactive in the modern sense. Signal Forms are a ground-up rethink: signal-based, zoneless compatible, and built around validation patterns that don't require you to think four layers deep. It's still early, but the direction is right.
Angular Aria Package Accessibility primitives built directly into the framework. Not a third-party bolt-on, not a style guide recommendation actual framework-level tooling for building accessible components. This is the kind of thing that matters enormously for enterprise teams who have compliance requirements and not enough time.
MCP Server Integration This one's forward looking. Angular 21 ships with Model Context Protocol server tools, which means AI coding assistants can actually understand your Angular project structure and generate correct, idiomatic code. Whether or not you're bullish on AI tooling, the fact that Angular is investing here signals (pun intended) where developer workflows are heading.
The Honest Summary
Compare an Angular 15 codebase to an Angular 21 codebase and they look like different frameworks. The NgModules are gone. The *ngIf soup is gone. Zone.js is optional. The build tool is fast. The reactivity model is coherent.
None of this happened overnight, and none of it happened by accident. It was a deliberate, multi-year migration and the Angular team mostly pulled it off without breaking existing codebases, which deserves more credit than it gets.
If you wrote Angular off a few years ago, I get it. The timing probably made sense then. But if you haven't looked at it lately, it's worth a fresh look. The framework that made you set up a module to register a pipe is not the one you'd be using today.
Top comments (0)