What's new in Angular 20.3?

Angular 20.3.0 is here!

Angular logo

Angular v20 will be one of the very few versions to have a third minor release. The main reason is a security patch for a vulnerability in the platform-server/ssr packages. The fix is a breaking change which was released across all active LTS versions.

Vulnerability fix in platform-server and ssr

The vulnerability is described on the Angular repo: CVE-2025-59052.

As explained there, an attacker could potentially send multiple requests and inspect responses for leaked information from other users’ requests in SSR applications.

The cause is that the platform injector was shared globally during SSR. When multiple requests were processed concurrently, they could share or overwrite this global state, causing one request to respond with data meant for a different request (which could lead to bugs in addition to being a security vulnerability).

Three APIs received breaking changes to address this issue: bootstrapApplication, getPlatform, and destroyPlatform.

The new approach introduces a BootstrapContext that is passed to the bootstrapApplication function. This context provides a platform reference that is scoped to the individual request, ensuring that each server-side render has an isolated platform injector.

Instead of:

const bootstrap = () => 
  bootstrapApplication(AppComponent, config);

you now need to do:

const bootstrap = (context: BootstrapContext) =>
  bootstrapApplication(AppComponent, config, context);

getPlatform and destroyPlatform now returns null and are no-op on the server.

A schematic has been included in the release to help you migrate your code, so you just have to run ng update @angular/core.

Extended diagnostics

The Angular compiler already checks that signals are properly invoked in interpolations and bindings. The extended diagnostics in v20.3 now also check them in @if and @switch:

✘ [ERROR] NG8109: user is a function and should be invoked: user() [plugin angular-compiler]

    src/app/home/home.html:10:8:
      10 │   @if (!user) {

Angular CLI

The CLI was also released in version 20.3.0, with the same security fix as above for @angular/ssr.

The only notable change that I noticed otherwise is that the variable names are now kept when serving the application in dev mode. This means the error messages will no longer contain weird underscores like _App or _UserService, which is a nice improvement for debugging.

That’s all for this small release. The next one will be v21, and will include experimental signal forms. We have a dedicated article about it coming soon, so stay tuned!

All our materials (ebook, online training and training) are up-to-date with these changes if you want to learn more!



blog comments powered by Disqus