Skip to content

build(deps): Update Angular packages to v20 (major) #3127

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented May 28, 2025

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@angular-devkit/build-angular ^19.2.14 -> ^20.0.0 age adoption passing confidence
@angular/animations (source) ^19.2.14 -> ^20.0.0 age adoption passing confidence
@angular/cdk ^19.2.18 -> ^20.0.1 age adoption passing confidence
@angular/common (source) ^19.2.14 -> ^20.0.0 age adoption passing confidence
@angular/compiler (source) ^19.2.14 -> ^20.0.0 age adoption passing confidence
@angular/compiler-cli (source) ^19.2.14 -> ^20.0.0 age adoption passing confidence
@angular/core (source) ^19.2.14 -> ^20.0.0 age adoption passing confidence
@angular/forms (source) ^19.2.14 -> ^20.0.0 age adoption passing confidence
@angular/material ^19.2.18 -> ^20.0.1 age adoption passing confidence
@angular/platform-browser (source) ^19.2.14 -> ^20.0.0 age adoption passing confidence
@angular/platform-browser-dynamic (source) ^19.2.14 -> ^20.0.0 age adoption passing confidence

Release Notes

angular/angular-cli (@​angular-devkit/build-angular)

v20.0.0

Compare Source

Breaking Changes

@​angular/cli
  • Node.js v18 is no longer supported with Angular.

    Before updating a project to Angular v20, the Node.js version must be
    at least 20.11.1. For the full list of supported Node.js versions,
    see https://angular.dev/reference/versions.

  • Node.js versions from 22.0 to 22.10 are no longer supported

@​schematics/angular
  • --server-routing option has been removed from several schematics. Server routing will be used when using the application builder.
@​angular-devkit/schematics
  • The NodePackageLinkTask has been removed without a replacement. Create a custom task if needed.

    Note: This does not affect application developers.

@​angular/build
  • TypeScript versions less than 5.8 are no longer supported.
@​schematics/angular
Commit Type Description
e03f2b899 feat Add global error listeners to new app generation
1e137ca84 feat add migration to update moduleResolution to bundler
26fd4ea73 feat add migrations for server rendering updates
5876577af feat Add prompt for new apps to be zoneless
fdc6291dd feat add update migration to keep previous style guide generation behavior
093c5a315 feat directly use @angular/build in new projects
d6f594fe0 feat generate applications using TypeScript project references
0ab1ddf63 feat generate libraries using TypeScript project references
18e13e2ce feat remove --server-routing option
03180fe03 feat use TypeScript module preserve option for new projects
86d241629 fix add @angular/ssr dependency only when provideServerRendering import has been updated
9e6b9b537 fix add type checking of host bindings to strict config
8654b3fea fix application migration should migrate karma builder package
c557a19ef fix avoid empty polyfill option for new zoneless application
90615a88b fix default component templates to not use .ng.html extension
672ae14cd fix drop composite in tsconfig
da6ef626f fix ensure app-shell schematic consistently uses withAppShell
f126f8d34 fix ensure module discovery checks for an NgModule decorator
dc2f65999 fix generate component templates with a .ng.html file extension
23fc8e1e1 fix generate components without a .component extension/type
8d715fa94 fix generate directives without a .directive extension/type
5fc595144 fix generate guards with a dash type separator
040282d8f fix generate interceptors with a dash type separator
070d60fb3 fix generate modules with a dash type separator
e6083b57b fix generate pipes with a dash type separator
92e193c0b fix generate resolvers with a dash type separator
bc0f07b48 fix generate services without a .service extension/type
ea1143ddd fix infer app component name and path in server schematic
bcc0892a6 fix migrate provideServerRoutesConfig to provideServerRendering
5e8c6494d fix relative tsconfig paths in references
381d35fe4 fix remove empty scripts option value from new applications
148498c2b fix Remove experimental from zoneless
a910fe9ae fix remove explicit outputPath option value from generated applications
901ab60d9 fix remove explicit index option from new applications
be6f13ec1 fix remove setting files tsconfig field with SSR/Server generation
661609e3e fix set explicit type in library schematic
0f7dc2cd8 fix skip spec project reference for minimal ng new
3cf6ab0f7 fix support using default browser option when not present
b13805a77 fix use protected for class member
@​angular/cli
Commit Type Description
e513cd4aa fix add Node.js 24 as supported version
5e90c1b4e fix remove Node.js v18 support
787e510dc fix update min Node.js support to 20.19, 22.12, and 24.0
64732534e fix update minimum supported Node.js 22 version to 22.11.0
@​angular-devkit/build-angular
Commit Type Description
a42e045ba fix respect i18nDuplicateTranslation option when duplicates exist
@​angular-devkit/schematics
Commit Type Description
e6be37601 refactor remove deprecated NodePackageLinkTask
@​angular/build
Commit Type Description
d6ea6b09f feat add experimental vitest browser support to unit-testing
12def3a2e feat add experimental vitest unit-testing support
c1de63300 feat allow control of source map sources content for application builds
31c81e9c6 feat drop support for TypeScript older than 5.8
e80963036 feat expand browser support policy to widely available Baseline
3c9172159 feat integrate Chrome automatic workspace folders
9b682e625 feat support a default outputPath option for applications
d067cedf0 feat support custom resolution conditions with applications
f4be83119 feat Support Sass package importers
f36a27272 fix allow a default application browser option
f42f5c14c fix allow component HMR for templates with i18n
e36bf964a fix allow TestBed provider configuration with vitest unit-testing
769961e4a fix allow vitest-based unit testing to use watch option
3e24a59a9 fix disable TypeScript composite option with Angular compiler
b155ba1dc fix enable unit-test builder watch outside CI
7bb1f8747 fix enable unit-test reporters option
05485ede7 fix ensure com.chrome.devtools.json is consistently served after initial run
7877d9a97 fix ensure disabled vitest config loading
c8c73185a fix ensure matching coverage excludes with karma on Windows
aec95042b fix exclude only source test files with unit-test vitest support
5bea3de4c fix invalidate com.chrome.devtools.json if project is moved
1cd65a08d fix perform testing module cleanup when using Vitest
c51a540ce fix provide direct debugging support for unit test builder
c7f2cb596 fix provide vitest globals in unit-test builder
d2bfc6bd4 fix revert setup unit-test polyfills before TestBed init
0d40cdecd fix setup unit-test polyfills before TestBed init
fa3dc6387 fix show unit-test error for missing vitest browser package
247cd3352 fix show unit-test error for missing vitest package
eee816f79 fix use global unit-test hooks during TestBed init
566de64cb fix use virtual module for Karma TestBed initialization
52fbffcd7 fix warn and remove jsdom launcher when used with karma
5ff6188c4 perf directly check code for Angular partial linking
@​angular/pwa
Commit Type Description
fa0a06f9f fix support using default index option when not present
@​angular/ssr
Commit Type Description
33b9de3eb feat expose provideServerRendering and remove provideServerRouting
cdfc50c29 feat stabilize AngularNodeAppEngine, AngularAppEngine, and provideServerRouting APIs
319b8e0c2 fix manage unhandled errors in zoneless applications
2d11e8e45 fix return 302 when redirectTo is a function
059c10eb4 fix SSR should work without @angular/router
63428f3f1 perf flush headers prior to start rendering the HTML
280693231 perf optimize response times by introducing header flushing
6bd7b9b4a perf optimized request handling performance
@​ngtools/webpack
Commit Type Description
427bd846f fix disable TypeScript composite option with Angular compiler
angular/angular (@​angular/animations)

v20.0.0

Compare Source

Breaking Changes

common
  • Using the Y formatter (week-numbering year) without also including w (week number) is now detected as suspicious date pattern, as y is typically intended.
  • AsyncPipe now directly catches unhandled errors in
    subscriptions and promises and reports them to the application's
    ErrorHandler. For Zone-based applications, these errors would have
    been caught by ZoneJS and reported to ErrorHandler so the result is
    generally the same. The change to the exact mechanism for reporting can
    result in differences in test environments that will require test
    updates.
compiler
  • 'in' in an expression now refers to the operator

  • void in an expression now refers to the operator

    Previously an expression in the template like {{void}} referred to a
    property on the component class. After this change it now refers to the
    void operator, which would make the above example invalid. If you have
    existing expressions that need to refer to a property named void,
    change the expression to use this.void instead: {{this.void}}.

core
  • TypeScript versions less than 5.8 are no longer supported.

  • the TestBed.flushEffects() was removed - use
    the TestBed.tick() instead.

  • provideExperimentalCheckNoChangesForDebug has several
    breaking changes:

    • It is renamed to provideCheckNoChangesConfig
    • The behavior applies to all checkNoChanges runs
    • The useNgZoneOnStable option is removed. This wasn't found to be generally
      more useful than interval
  • provideExperimentalZonelessChangeDetection is
    renamed to provideZonelessChangeDetection as it is now "Developer
    Preview" rather than "Experimental".

    • InjectFlags has been removed.
    • inject no longer accepts InjectFlags.
    • Injector.get no longer accepts InjectFlags.
    • EnvironmentInjector.get no longer accepts InjectFlags.
    • TestBed.get no longer accepts InjectFlags.
    • TestBed.inject no longer accepts InjectFlags.
    • TestBed.get has been removed. Use TestBed.inject instead.
  • afterRender was renamed to afterEveryRender.

    • Angular no longer supports Node.js v18.
    • Node.js versions 22.0 to 22.10 are also no longer supported.
      Before upgrading to Angular v20, ensure the Node.js version is at least 20.11.1.
      For the full list of supported versions, visit: https://angular.dev/reference/versions
  • PendingTasks.run no longer returns the result of the
    async function. If this behavior is desired, it can be re-implemented
    manually with the PendingTasks.add. Be aware, however, that promise rejections
    will need to be handled or they can cause the node process to shut down
    when using SSR.

  • Uncaught errors in listeners which were previously only reported to
    ErrorHandler are now also reported to Angular's internal error
    handling machinery. For tests, this means that the error will be
    rethrown by default rather than only logging the error. Developers
    should fix these errors, catch them in the test if the test is
    intentionally covering an error case, or use rethrowApplicationErrors: false in configureTestingModule as a last resort.

  • The any overload has been removed from
    injector.get. It now only supports ProviderToken<T> and (deprecated
    since v4) string.

  • Animations are guaranteed to be flushed when Angular
    runs automatic change detection or manual calls to ApplicationRef.tick.
    Prior to this change, animations would not be flushed in some situations
    if change detection did not run on any views attached to the
    application. This change can affect tests which may rely on the old
    behavior, often by making assertions on DOM elements that should have
    been removed but weren't because DOM removal is delayed until animations
    are flushed.

  • ApplicationRef.tick will no longer catch and report
    errors to the appplication ErrorHandler. Errors will instead be thrown out of
    the method and will allow callers to determine how to handle these
    errors, such as aborting follow-up work or reporting the error and
    continuing.

  • This commit deprecates ng-reflect-* attributes and updates the runtime to stop producing them by default. Please refactor application and test code to avoid relying on ng-reflect-* attributes.

    To enable a more seamless upgrade to v20, we've added the provideNgReflectAttributes() function (can be imported from the @angular/core package), which enables the mode in which Angular would be producing those attribites (in dev mode only). You can add the provideNgReflectAttributes() function to the list of providers within the bootstrap call.

router
  • The RedirectFn can now return Observable or
    Promise. Any code that directly calls functions returning this type
    may need to be adjusted to account for this.
  • Several methods in the public API of the Router which
    required writable arrays have now been updated to accept readonly
    arrays when no mutations are done.
  • The guards arrays on Route no longer include any in
    the type union. The union includes functions for the functional guards
    as well as a type matching Injector.get: ProviderToken<T>|string.
    Note that string is still deprecated on both the route guards and
    Injector.get.

Deprecations

core
  • ngIf/ngFor/ngSwitch are deprecated. Use the control flow blocks instead (@for/@if/@switch).
platform-browser
  • All entries of the @angular/platform-browser-dynamic
  • HammerJS support is deprecated and will be removed in a future major version.
platform-server
  • @angular/platform-server/testing

    Use e2e tests to verify SSR behavior instead.

common
Commit Type Description
2e5362a469 feat accept undefined inputs in NgTemplateOutlet (#​61404)
b7d3f3dbfc feat Allow passing ScrollOptions to ViewportScroller (#​61002)
74cceba587 feat throw error for suspicious date patterns (#​59798)
255c79e048 fix cleanup updateLatestValue if view is destroyed before promise resolves (#​58041)
739cadae62 fix Handle errors in async pipe subscriptions (#​60057)
cbbea70fa3 fix issue a warning instead of an error when NgOptimizedImage exceeds the preload limit (#​60879)
fc4a56d5c5 fix rename httpResource function in factory (#​60022)
785a1110e6 fix resolve host binding type issues (#​60481)
compiler
Commit Type Description
7a971766dc feat add extended diagnostic for uninvoked track function on @for blocks (#​60495)
f2d5cf7edd feat support exponentiation operator in templates (#​59894)
51b8ff23ce feat support tagged template literals in expressions (#​59947)
1b8e7ab9fe feat support the in keyword in Binary expression (#​58432)
0361c2d81f feat support void operator in templates (#​59894)
8b990a31c3 fix error if rawText isn't estimated correctly (#​60529)
4fe489f1b4 fix exponentiation should be right-to-left associative (#​60101)
ef1fd137a9 fix incorrect spans for template literals (#​60323)
e0d378d20e fix incorrectly handling let declarations inside i18n (#​60512)
b70ad3c4e6 fix proper handling of typeof, void in RecursiveAstVisitor (#​60101)
e25e6c95a2 fix remove TypeScript from linker (#​61635)
768239a89c perf reduce allocations for let declarations only used in the same view (#​60512)
compiler-cli
Commit Type Description
bec1610da2 feat add extended diagnostic for invalid nullish coalescing (#​60279)
c889382a20 feat detect missing structural directive imports (#​59443)
1971e57a45 feat support type checking of host bindings (#​60267)
9ec9c7e1b8 fix avoid fatal diagnostics for invalid module schemas (#​61220)
a1cacc5b17 fix avoid fatal diagnostics for missing template files (#​58673)
1e6faad479 fix correctly parse event name in HostListener (#​60561)
ffb19e64f1 fix preserve required parens for nullish coalescing (#​60060)
7c9b4892e9 fix preserve required parens in exponentiation expressions (#​60101)
7e03af898e fix set correct target when type checking events (#​60561)
2d51a203dc fix wrong event name for host listener decorators (#​60460)
core
Commit Type Description
22d3f0562c feat add hook for producer creation side effects (#​60333)
fe57332fc5 feat add input binding support to dynamically-created components (#​60137)
65adb3024d feat Add provider which reports unhandled errors on window to ErrorHandler (#​60704)
b154fb3911 feat add support for two-way bindings on dynamically-created components (#​60342)
82aa2c1a52 feat add the ability to apply directives to dynamically-created components (#​60137)
326d48afb4 feat drop support for TypeScript older than 5.8 (#​60197)
d260ca3091 feat emit template function for template related profiler hooks (#​60174)
a4bad8d361 feat export signalGetFn from signal primitives (#​60497)
4812215a7b feat Expose Injector.destroy on Injector created with Injector.create (#​60054)
c1bcae91dd feat expose performance data in Chrome DevTools (#​60789)
809b5b4596 feat introduce new DI profiling event (#​60158)
d5fd7349fb feat introduce TestBed.tick() (#​60993)
4e88e18a8e feat mark toObservable as stable (#​60449)
727cda3856 feat mark linkedSignal API as public (#​60865)
644d9f3bbd feat mark the toSignal API as stable (#​60442)
e711f99d81 feat move provideExperimentalCheckNoChangesForDebug to provideCheckNoChangesConfig (#​60906)
7ccec1494f feat move DOCUMENT token into core (#​60663)
953c4b2580 feat Move zoneless change detection to dev preview (#​60748)
611baaf069 feat remove InjectFlags from public API (#​60318)
5e209cb560 feat remove TestBed.get (#​60414)
d8fbb909ce feat rename afterRender to afterEveryRender and stabilize (#​60999)
567522398f feat stabilize incremental hydration api (#​60888)
8d050b5bfc feat stabilize linkedSignal API (#​60741)
866cea9a05 feat Stabilize PendingTasks Injectable (#​60716)
bf8492b871 feat stabilize withI18nSupport() api (#​60889)
be44cc8f40 feat support listening to outputs on dynamically-created components (#​60137)
fe9b79b615 feat update Node.js version support (#​60545)
e170d24240 fix add migration away from InjectFlags (#​60318)
7eb59d3887 fix added @​angular/compiler as a peer dependency (#​55610)
7232ce5b17 fix Catch and report rejections in async function of PendingTasks.run (#​60044)
fd12220a35 fix defer block render failures should report to application error handler (#​60149)
3459faadbf fix do not allow setInput to be used with inputBinding (#​60137)
0ac949c266 fix do not run change detection on global error events (#​60944)
4fe34f4cfe fix enable stashing only when withEventReplay() is invoked (#​61077)
962b59b14e fix Ensure ComponentFixture does not duplicate error reporting from FakeAsync (#​60104)
7b819be83f fix Ensure errors in listeners report to the application error handler (#​60251)
ff772d7800 fix fix typing on injector.get to omit 'any' (#​60202)
13d1c8ab38 fix fixes timing of hydration cleanup on control flow (#​60425)
0b69b61929 fix Flush animations when no component has been checked (#​58089)
3ba39bc28f fix getting resource value throws an error instead of returning undefined (#​61441)
ca6295e90b fix handle different DI token types in Chrome DevTools integration (#​61333)
0162ceb427 fix inject migration should treat @Attribute as optional (#​60916)
ea5eb28865 fix input targeting not checking if input exists on host (#​60137)
c8951159ac fix mark zone.js as an optional peer dependency (#​61616)
d62379bb13 fix move reload method from Resource to WritableResource (#​61441)
a89f1cff24 fix narrow error type for resources API (#​61441)
624be2ef0c fix prevent stash listener conflicts (#​59635)
017cc0a37c fix properly handle app stabilization with defer blocks (#​61040)
6e79eaf739 fix reading resource value after reload in the error state (#​61441)
3d85d9363c fix reduce total memory usage of various migration schematics (#​60774)
1c7b356625 fix release hasPendingTasks observers (#​59723)
43cbc58254 fix remove forceRoot flag for effects (#​60535)
48974c3cf8 fix remove rejectErrors option encourages uncaught exceptions (#​60397)
491b0a4ead fix Remove duplicate reporting of errors in CDR.detectChanges (#​60056)
[04d963c0a5](https://redirect.github.com/angular/angular/commit/04d963c0a5f68c93015c13973d29107fe35bb

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/major-angular-packages branch from 9a3364f to 2d40838 Compare May 28, 2025 22:16
@renovate renovate bot force-pushed the renovate/major-angular-packages branch from 2d40838 to 241da50 Compare May 29, 2025 05:21
@leosvelperez
Copy link
Contributor

Support for Angular v20 is being added in #3119

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant