Back

Angular 21, My Thoughts

Angular 21 dropped a couple months ago and I finally had some time to dig into it properly. No massive revolution but a few things stood out to me.

Signal-based forms caught my attention the most

Still in developer preview so you probably shouldn’t ship it to production yet. But the API feels right. You define your form controls with signalControl(), slap on validators and everything is reactive without a single subscribe() call. There’s even a built-in debounce() rule. No more piping through RxJS just to avoid hammering your API on every keystroke.

I played around with it in a side project and honestly, if you’re already comfortable with reactive forms the mental model clicks immediately. It’s just cleaner. Less boilerplate, fewer moving parts. Looking forward to this going stable.

Zoneless by default is the big one

This has been coming for a while and now it’s here. New projects ship without Zone.js. If you need it you can still add it manually but the default is zoneless.

For anyone who’s been using OnPush and signals consistently nothing really changes. Your app was already effectively zoneless. But for the broader ecosystem this is a clear signal that the old change detection model is done. Less magic, more predictable behavior, better performance.

The migration schematic handles most of the work for existing projects which is nice. I ran ng update on one of our work projects and it went smoother than expected.

A few other things worth mentioning

The SSR improvements are solid if you’re doing server-side rendering. There’s a new BootstrapContext that replaces the old global platform injector. Eliminates a whole class of bugs with concurrent requests.

Template-wise, @defer now supports rootMargin for viewport triggers so you can start loading components before they scroll into view. Small thing but it makes lazy loading feel smoother. Also SimpleChanges is finally generic. No more casting to any in ngOnChanges.

TypeScript 5.9 is required now which brings stricter host binding checks by default. Update TS first, then Angular. Learned that the hard way.

My take

Angular 21 isn’t flashy but it’s a confident release. The message is clear: signals are the future, Zone.js is legacy. If you’ve been putting off the migration since v17, now’s the time. Zoneless is the default, the signal ecosystem keeps growing and the forms story is almost complete.

Solid update. Not much to complain about.