Angular 22 stabilization (resources, Signal Forms, @angular/aria) and compiler ABI stability across patch versions for micro frontends are the headline items this week. Also in brief: linkedSignal's set option and NgRx's reverted delegatedSignal, plus error boundaries from Google I/O.
Angular 22 stabilization
The release of Angular 22 is getting closer, and we are also getting more and more information about the changes but also what awaits us beyond Angular 22.
We already know that Angular 22 will make a lot of features stable. That is resources, Signal Forms, but also @angular/aria. Stable means no breaking changes within majors.
Compiler ABI and micro frontends
Another feature was announced, and it will be a happy message for anyone who's using micro frontends via Native Federation or Module Federation. Until now, whenever you loaded another Angular application/micro frontend during runtime, you had to make sure that it has been compiled with exactly the same version as the host application.
Why? Because the compiled Angular code was never part of the public API and didn't follow semantic versioning, which means the Angular team could introduce breaking changes within patch versions.
That is going to change. Breaking changes within a major can still happen in minors, but not in patch versions.
docs: establish compiler abi stability across patch versions
#68623
Define the new policy that the compiler ABI (the internal runtime APIs called by compiler-generated code) is stable across patch versions within the same minor version. This update unblocks microfrontend use cases and safer sharing of the Angular runtime across independent builds.
linkedSignal set and delegatedSignal
In former episodes, we've already touched upon the need for a new Signal type, which is like linkedSignal, that derives the value from another Signal, but is not writable. At the same time though, it should be possible to have an option to write back to the original Signal.
That feature exists already for Signal Forms under the name DeepSignal, but it is only internal. And because there is a need for it for us as well, NgRx, a state management library, was about to introduce that as delegatedSignal in NgRx 22, but it is not going to happen and the existing commit was reverted.
linkedSignal itself will get a set option, which allows you to write back to the original Signal. So in some way what the delegatedSignal would have done will be part of the linkedSignal itself.
The PR has a label for minor version, which means Angular 22.1. Last summer, the difference between 20.0 and 20.1 was around 6 weeks. Given that Angular 22 will be released in the week of June 3rd, that means we are looking at a release of mid-July.
feat(core): add custom set option to linkedSignal
#68708
Introduce a custom set option in linkedSignal options to allow overriding and customizing the default write-back behavior of writable signals. This lets developers route updates back to the source of truth (e.g., converting Fahrenheit back to Celsius) or perform other side effects like updating properties inside a parent signal.
Additionally, the custom callback receives the standard signal setter as its second parameter (rawSet) to allow direct internal mutation if desired.
TAG=agy CONV=addbb5c4-4233-49e8-b844-6f732d7d5c72
Please check if your PR fulfills the following requirements:
- [ ] The commit message follows our guidelines: https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md
- [ ] Tests for the changes have been added (for bug fixes / features)
- [ ] Docs have been added / updated (for bug fixes / features)
What kind of change does this PR introduce?
- [ ] Bugfix
- [ ] Feature
- [ ] Code style update (formatting, local variables)
- [ ] Refactoring (no functional changes, no api changes)
- [ ] Build related changes
- [ ] CI related changes
- [ ] Documentation content changes
- [ ] angular.dev application / infrastructure changes
- [ ] Other... Please describe:
Issue Number: N/A
- [ ] Yes
- [ ] No
ngrx/platform#5157 — revert delegatedSignal (Angular linkedSignal set planned)
Ng-News 26/11: TypeScript 6, NgRx RFCs, delegatedSignal
Google I/O: error boundaries
Google's conference Google I/O also took place, and Mark Thompson, Angular DevRel, gave a talk where, among other things, he introduced an upcoming feature which is called error boundaries.
You can see it as an elegant try/catch block for the template. Similar to @defer you wrap parts of the template into @boundary and if an error occurs, the boundary will catch it and display a fallback. Mark also mentioned that there could be an option to define retry logic for the boundary.
That will also improve the DX with resources, which throw the error if you access its value.
It was the first time that we heard about this feature publicly. Mark said that they plan to make it available as developer preview in Q3 this year, which probably means Angular 23.
Top comments (0)