Angular v22
blog.angular.devI must admit, modern angular has been a pleasure to use. It's a shame that the ecosystem is a little rough. Luckily you get so much out of the box already.
Same experience here.
I wish Angular dropped their weird compiler that's tight coupled to tsc and moved into more pluggable approach so you can use it with whatever TS compiler. App and unit test cold build times are still crap, but at least with a coding agent you care about this less.
Angular should ditch the compiler altogether - it really hinders them in so many ways, especially now with AI-codegen where tools have to specifically choose to do the work to integrate the Angular toolchain instead of using plain TypeScript and HTML.
"plain TypeScript"? Just like Angular, TypeScript depends on a compiler too, regardless of where in your toolchain it is, unless I missed browsers somehow being able to straight up run TypeScript nowadays. Bit ironic to cite "ditch the compiler" as the reason to switch from one compiler to another.
Are projects still chosing to pick RxJS (or equivalent) which make the code heavily layered and a pain to debug?
Or has sanity reached the Angular ecosystem by now?
I believe Signals are the go-to now, but surely RxJS is still present for complex use cases. Are Zones fully gone?
Now we have promises, observables and signals.
I would be more happy if it would be just one of those..
Each one of these solves a different problem.
Promised - async
Observables - streams
Signals - reactivity
In theory that’s true (although observables are for reactivity too), but Angular uses observables for its http library and http requests are very much not streams. It’s one of the main downsides of working with Angular, the http library is mediocre and does come with the added overhead and complexity that rxjs brings.
Until this release (if you only use stable features) using forms meant dealing with observables too, even if you just want to read data when submitting a form and validating some data on change/blur.
And often you’ll find that your data from promises, observables and signals need to interact with each other, which can be annoying.
Fortunately the situation with signals and their async usage is improving, and iirc the Angular team wants to make rxjs optional, but until it is Angular can be a confusing mess on some points.
I partially agree, there is an overlap between signals and rxjs, however the core business is different- observables are about data manipulation, while signals are about efficient state management.
Regarding angular I agree, rxjs was a bad choice for data management, and before signals arrived I abandoned rxjs in favor of mobx in my angular projects. However you could roll your own http client, we used axios, and using DI it’s a drop in replacement.
> Observables - streams
> Signals - reactivity
The r in rx stands for reactive.
The react in react stands for reactivity, however it is not.
React reacts to changes in state or properties by automatically updating the UI. What's not reactive about that?
Its entire state management is not reactive, it’s always on push, not pull. You always need to call setState to get render changes.
But why is push vs pull the definition of reactivity?
I suppose we can say that there are different kinds of reactivity. Signals is one kind. Observables à la rxjs is a different kind (the whole model of programming with rxjs was referred to as "functional reactive programming"). Observables are push-based. Signals, as I heard, are a more complex primitive, which, under the hood, is push-pull.
React's reactivity model may be crap; but this doesn't make it non-existent.
Maybe push pull wasn’t the best metaphor, but the point is that everything can be reactive, it only depends on how much boilerplate you need to write to achieve the desired result.
Since react doesn’t have a true reactive model, you need to subscribe to changes manually (use effect) to create computations, while in signals it’s a primitive (computed).
I actually created a lib that operates signals over reacts state management (https://roypeled.github.io/react-logic/), so I removed the boilerplate to create a true reactive system.
If you want, you can create reactive system just from JS primitives, using callbacks. But that doesn’t make JS reactive by nature.
> you need to subscribe to changes manually (use effect) to create computations
How do you mean? Since the render function reruns during every update to state/props, derived/computed values can be calculated from the updated state/props during rendering.
When all you need is a synchronous operations, yes. When it involves async, batching, buffering, and user input, it becomes much more complicated, and every step needs to be setup manually.
UI is reactive, not state. You push changes to state and UI reacts to it.
A derived state is certainly reactive.
Of course you can have reactive state, your complaint however was:
"The react in react stands for reactivity, however it is not." [because] "Its entire state management is not reactive"
React is primarily an UI library, not full state management library. And its UI is reactive.
Agreed, the OP said that the r in rxjs stands for reactivity, so my point was the the names have little bearing on the actual design patterns achieved with the libs
Ah, now I see what you meant.
Everything is signals now.
The problem with Angular is that the http client service used to return observables by default and that made people think that you had to use them as such. It was a mostly useless, massive pain. Working with Angular became a pleasure the moment we decided to just cast our service calls to promises.
For the rest, RxJS is cool where you actually need it and want it.
Agree. RxJS is a beast to approach at first but it's a genuinely cool library, as long as you don't spread observable around when you don't actually need them. I used the same approach for a few years (pushing my http calls behind domain-specific api services that only return promise), and it's way simpler to handle.
I still use RxJS, but mostly in the top-level component and/or service who orchestrate between data, url state and api responses. Those top-level page usually keep the default change detection instead of the 'on-push' strategy).
I never understood the problem with the rxjs, its a challenge to learn for those not used to the pattern but its very nice.
Regardless signals is also fine, we have ways now to interop between rxjs to signal for those looking for it:
https://angular.dev/api/core/rxjs-interop/toSignal
Personally the http client workflow is fine. Usually lives in a service and exposes the needed values in any form we want.
What is rough in the ecosystem? I haven't had any issues finding packages. Most packages have been keeping up with the signal trends as well.
Really excited for this. I've been dying to use signal-forms and resources since they were experimental. Once I got on the signal train, I could never go back and having to use RxJS for forms became a major pain point.
Could you say more about signals? Is it are all analogous to, say, game engine signals paradigms (eg Godot) - components at any depth emit signals and any other component can subscribe? Or something totally different?
I'm learning Godot right now with ambitions to launch a game on steam! Are you working on a game yourself?
Wow Angular Aria looks fantastic. Even have full docs for the more complicated scenarios like autocomplete. Can't wait to get this in my hands and see if it replaces the custom screen reader autocomplete I had to make.
Maybe I'm dumb, but I go to: https://angular.dev/guide/aria/overview#showcase and try out the keyboard controls, somehow they've decided that those elements should be navigated with the arrow keys instead of much more commonly used tab and shift+tab? Even the tabs from their own documentation, right above that example, also uses tab/shift-tab for moving focus between them.
A lot of those behaviors aren't their decisions, they're specs from the W3C[1]. The tab behavior may be an oversight though, the W3C page specifies subsequent tab presses should move the focus outside of the tab list, but it could also be an exception. I'm not an expert but sometimes there are exceptions made due to the realities that operating systems, browsers, and screen readers all have varying degrees of support for accessibility features. Accessibility is a very deep rabbit hole, which is why these kind of libraries are popular in the first place.
Yeah, sure, I'm well aware of that, it was more a reaction to parent saying that specifically the accessibility stuff looks amazing, but seems they haven't even nailed the basics yet, so I'm wondering where the amazing parts are.
With that said, the autocomplete example which parent mentioned, does seem well made. Was just surprising to see such a basic mistake in the documentation for the accessibility stuff, one would think they would take extra care to get it right there, as that's what people (and LLMs...) will read and retain.
I recently upgraded a relatively complex angular project from v14 to v21. I feel like Angular development slowed down for a few years. However, looking at the changes over those versions in total makes it feel like a whole new framework.
I like Angular, it feels a bit like Django. Easy to use with everything included.
Or I mean, you could just use Django (or some faster backend with templating and SSR). Using that with htmx you get the SPA experience and still without the madness of an actual rotten JS ecosystem.
What is the “I mean” for? Are you clarifying a comment you made earlier?
I enjoyed Angular before React, had a good run with it, it was a vibe, now if I'm being honest I totally forget it ever existed. Not to praise React either, lately I've been actually digging the htmx way, though I feel like the battle is now which framework/language is the agent more proficient with and the static/compiler level tooling can help catch mistakes.
Been using Angular v21 for a very complex app. Have had a wonderful experience, in terms of the cognitive load to make and work with components, state and data flow.
Signals and signal stores make it very easy.
Did the whole coding by hand, no ai coding tools too.
A few years ago I was in the process of abandoning Angular in favor of React.
I've gone back to advocating Angular because it has been making a major comeback. It's genuinely awesome now.
Same, I'm currently working more in React project, and I miss Angular so much that I actually use it in my personal project, it can be a genuine pleasure to use if you avoid over-engineering the rest.
React shines when it comes to the composability of components, eg. for data-table with customizable rows. It's still possible in Angular, but it's heavier.
For the rest (syntax, the ecosystem, routing, data-handling, DI), Angular is so much more straightforward. Services with dependency-injection is 99% of the time way simpler to reason about than React hooks, especially when you start to need cascading changes between hooks after user interaction.
Angular has made my programming career joy and it has not felt like work at all, all the best to angular dev team! Nothing better than getting to work with favorite language, learning better and getting paid :D
import {signal} from "@angular/core"
import {form} from "@angular/forms/signals"
So, signal comes out of core and form comes out of forms/signals. This must be a terminology thing I don't get.Other than that. Looking forward to try Angular again after a decade of absence. I think it looks pretty good.
Signals are a privative data structure in Angular, hence core. Signal-based forms are part of the Forms module. You aren't using forms, you don't get the overhead.
primitive
There are a lot of ways to do Forms in Angular. I assume that's importing the new "Signals" based form.
I haven't been involved in Angular for quite some time. As someone who uses other JavaScript frameworks (Vue, React, Svelte), what am I missing out on? I'd be curious to hear from people who would pick Angular over any of the other big frameworks.
Angular (and e.g. Ember) are the “Rails” of frontend frameworks.
React/Vue/Svelte are view libraries that give you more flexibility.
Angular gives you structure.
For large enterprise apps with many developers, consistency and standardization is often the main reason people choose it.
I would just say in general Angular is best if you basically want to build an old school application as a website.. and especially if you kind of hate javascript and web development but focus on the backend as the main part.
most enterprises would be better served by being on an angular stack than the hodgepodge of shit called React.
How does modern angular performance compare to the alternatives? Is it as fast?
What does "fast" even mean? I always see people talk about performance and wonder, what kind of applications are they building where they are seeing a massive gap in performance between frameworks?
I'm pretty sure in this late game, all the frameworks are more-or-less the same in terms of render performance. Angular has a lot of cool tricks (with these signals) that allow for only re-rending what changes.
the biggest problem in angular is that it is so hard to use a custom toolchain, i.e. not their angular/cli product instead mix it with other stuff in lets say vite
What kinds of features or workflows are you missing that Angular's CLI doesn't cover? Or is it just that you're used to Vite (or something else) and wish you could use that instead of Angular's own tooling?
I'm not on the Angular development team or anything, though I do use Angular at $DAY_JOB and I'm overall perfectly fine with the framework and its tooling. However, the grass might be greener elsewhere; I'm just not familiar with it!
Mixing with existing code gradually migrating to and from angular
for many people this is the biggest bonus
explain your use case, I always wonder what kind of scenarios people do have, it is something easily solved? it is complicated? what is stopping you?
Mixing with existing code gradually migrating to and from angular
Seems like Angular has gotten better since v2 (my last experience).
Has anyone done a modern Angular vs. React comparison that's not an AI slop article?
I'm also curious if it's "simple made easy" for performant applications. React is arguably "simple made hard", but there are notable, highly performant applications written with it (Linear comes to mind).
Angular Control Flow alone is a massive QoL improvement compared to the React way to do template conditions, switches, loops, etc.
I do wonder - why not add this to jsx?
Because the React team 100% cares about miniscule optimization enhancements, and 0% about otherwise making the tool better.
Source: Just look at what's been in the last couple years of updates.
Modern Angular is MUCH nicer to use than the v2 days (or even the v4 days when I first started working with it). A lot of the required boilerplate is unnecessary nowadays. And even RxJS and NgRX are becoming less and less necessary to use too, which is great.
React basically is now focused on being Next.js infrastructure and designed to support Vercel and partners.
I only touch it when doing projects like Sitecore, Contentful, Sanity, and co, where React/Next.js are the official extension points.
So many hooks, use "this" and "that".
Out of curiosity I’ve progressed away from Angular around 2018. My peak spa-ish reduxian state management experience was building an NgRX combo with @ngrx/effects for side effects.
Till this day I remember this fondly as it gave me so much ease of control of the application’s many complex states. Especially when I nowadays deal with all sorts of false-prophets in forms of hooks and what ever reactive primitive du-jour (don’t get Me wrong they are 80% of the time the better choice, it’s just that they don’t scale).
What’s today’s version of complex state management in Angular-Land?
NGRX Signals is the new way and its lovely. Instead of having 5 files to get state hooked up, its usually 1 file and all/most functionality is co-located.
A framework releasing an official MCP as well as making AI tooling a key offering is new to me and it immediately strikes me as absolutely necessary.
Using angular in 2026 is mad :D
When I look at job postings and see "React" I go "ugh" these days and find myself looking for Angular instead. That's the complete opposite of my thoughts from just two years ago.
I would still rather use something else (instead or React or Angular) but 1) most jobs in my area are asking for one of those, and 2) I'm actually starting to lean towards Angular even for personal projects.
Angular is great these days, and they're making really nice improvements.
Absolutely same. I have been with Angular the whole time and it's only getting better and better.
I hope more teams give it serious consideration as I just am not excited about dealing with React and it's numerous spinoffs.
Have you used it in the last 8 years? Its actually quite a good piece of software.
You should try using it, using react is mad in 2026 for me.
Wow, a post about Angular published on Medium!
Overkill. React mogs.