docs.nestjs.com
docs.nestjs.com copied to clipboard
fix(deps): update angular monorepo to v20 (major)
This PR contains the following updates:
Release Notes
angular/angular (@βangular/animations)
v20.0.4
v20.0.3
v20.0.2
core
| Commit | Type | Description |
|---|---|---|
| 1e8158baee | fix | components marked for traversal resets reactive context (#β61663) |
| 1cd23be57e | fix | unregister onDestroy in outputToObservable (#β61882) |
v20.0.1
compiler
| Commit | Type | Description |
|---|---|---|
| 66a0ec6510 | fix | move defer trigger assertions out of parser (#β61747) |
| 8ecb1ba027 | fix | recover invalid parenthesized expressions (#β61815) |
core
| Commit | Type | Description |
|---|---|---|
| 8c60cbfd1c | fix | takeUntilDestroyed completes immediately if DestroyRef already destroyed (#β61847) |
| b1d960d082 | fix | produce an error when incremental hydration is expected, but not configured (#β61741) |
| b4ed62ddf6 | fix | properly handle the case where getSignalGraph is called on a componentless NodeInjector (#β60772) |
| ddd22bea48 | fix | unregister onDestroy in ResourceImpl when destroy() is called (#β61870) |
| 5c31e7e28d | fix | unregister onDestroy when observable errors in toSignal (#β61596) |
migrations
| Commit | Type | Description |
|---|---|---|
| e9820a6d48 | fix | avoid trailing whitespaces in unused imports migration (#β61698) |
service-worker
| Commit | Type | Description |
|---|---|---|
| b93fa22f25 | fix | prevent duplicate fetches during concurrent update checks (#β61443) |
| 9743bd1317 | fix | update service worker to handle seeking better for videos (#β60029) |
v20.0.0
Blog post: https://blog.angular.dev/announcing-angular-v20-b5c9c06cf301
Breaking Changes
common
- Using the
Yformatter (week-numbering year) without also includingw(week number) is now detected as suspicious date pattern, asyis typically intended. AsyncPipenow directly catches unhandled errors in subscriptions and promises and reports them to the application'sErrorHandler. For Zone-based applications, these errors would have been caught by ZoneJS and reported toErrorHandlerso 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
-
voidin an expression now refers to the operatorPreviously an expression in the template like
{{void}}referred to a property on the component class. After this change it now refers to thevoidoperator, which would make the above example invalid. If you have existing expressions that need to refer to a property namedvoid, change the expression to usethis.voidinstead:{{this.void}}.
core
-
TypeScript versions less than 5.8 are no longer supported.
-
the
TestBed.flushEffects()was removed - use theTestBed.tick()instead. -
provideExperimentalCheckNoChangesForDebughas several breaking changes:- It is renamed to
provideCheckNoChangesConfig - The behavior applies to all checkNoChanges runs
- The
useNgZoneOnStableoption is removed. This wasn't found to be generally more useful thaninterval
- It is renamed to
-
provideExperimentalZonelessChangeDetectionis renamed toprovideZonelessChangeDetectionas it is now "Developer Preview" rather than "Experimental". -
InjectFlagshas been removed.injectno longer acceptsInjectFlags.Injector.getno longer acceptsInjectFlags.EnvironmentInjector.getno longer acceptsInjectFlags.TestBed.getno longer acceptsInjectFlags.TestBed.injectno longer acceptsInjectFlags.
-
TestBed.gethas been removed. UseTestBed.injectinstead.
-
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.runno longer returns the result of the async function. If this behavior is desired, it can be re-implemented manually with thePendingTasks.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
ErrorHandlerare 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 userethrowApplicationErrors: falseinconfigureTestingModuleas a last resort. -
The
anyoverload has been removed frominjector.get. It now only supportsProviderToken<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.tickwill no longer catch and report errors to the appplicationErrorHandler. 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 onng-reflect-*attributes.To enable a more seamless upgrade to v20, we've added the
provideNgReflectAttributes()function (can be imported from the@angular/corepackage), which enables the mode in which Angular would be producing those attribites (in dev mode only). You can add theprovideNgReflectAttributes()function to the list of providers within the bootstrap call.
router
- The
RedirectFncan now returnObservableorPromise. 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
Routeno longer includeanyin the type union. The union includes functions for the functional guards as well as a type matchingInjector.get:ProviderToken<T>|string. Note that string is still deprecated on both the route guards andInjector.get.
Deprecations
core
ngIf/ngFor/ngSwitchare 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/testingUse 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 | fix | remove unused parameter from listener instruction (#β60406) |
| 0ae1889560 | fix | run ApplicationRef.prototype.bootstrap in NgZone (#β60720) |
| a611b234d7 | fix | run root effects in creation order (#β60534) |
| 338818ce89 | fix | Surface errors from ApplicationRef.tick to callsite (#β60102) |
| 350776b412 | fix | TestBed.tick should ensure test components are synchronized (#β61382) |
| 3d4ddd2247 | fix | Testing should not throw when Zone does not patch test FW APIs (#β61628) |
| 30e081287d | fix | update min Node.js support to 20.19, 22.12, and 24.0 (#β61500) |
| b407157ee8 | refactor | Deprecate the structural directives ngIf/ngFor/ngSwitch. (#β60492) |
| c2987d8402 | refactor | stop producing ng-reflect attributes by default (#β60973) |
forms
| Commit | Type | Description |
|---|---|---|
| a07ee60989 | feat | add markAllAsDirty to AbstractControl (#β58663) |
| bdfbd54932 | feat | Allow to reset a form without emitting events (#β60354) |
| 81fe0536fd | fix | Make sure statusChanges is emitted (#β57098) |
| bdd5e20423 | fix | resolve host binding type issues (#β60481) |
http
| Commit | Type | Description |
|---|---|---|
| ccc5cc068f | feat | add keepalive support for fetch requests (#β60621) |
| 5795e03cdf | fix | Delay stabilization until next app synchronization (#β60656) |
platform-browser
| Commit | Type | Description |
|---|---|---|
| bc2cab747f | refactor | Deprecate the platform-browser-dynamic package (#β61043) |
| a980ac9a6a | refactor | Deprecate the HammerJS integration (#β60257) |
platform-server
| Commit | Type | Description |
|---|---|---|
| 2240a21c97 | refactor | deprecate the testing entry point (#β60915) |
router
| Commit | Type | Description |
|---|---|---|
| 0bb4bd661e | feat | Add ability to directly abort a navigation (#β60380) |
| 62de7d930a | feat | add asynchronous redirects (#β60863) |
| 7c12cb1df9 | feat | Allow resolvers to read resolved data from ancestors (#β59860) |
| ff98ccb193 | feat | support custom elements for RouterLink (#β60290) |
| 219f41d049 | fix | Prevent dangling promise rejections from internal navigations (#β60162) |
| 2419060fef | fix | relax required types on router commands to readonly array (#β60345) |
| c57951d58f | fix | Remove 'any' type from route guards (#β60378) |
| db2f2d99c8 | fix | Scroller should scroll as soon as change detection completes (#β60086) |
v19.2.14
compiler
| Commit | Type | Description |
|---|---|---|
| 24bab55f0c | fix | lexer support for template literals in object literals (#β61601) |
migrations
| Commit | Type | Description |
|---|---|---|
| 9e1cd49662 | fix | preserve comments when removing unused imports (#β61674) |
v19.2.13
common
| Commit | Type | Description |
|---|---|---|
| 2c876b4fc5 | fix | avoid injecting ApplicationRef in FetchBackend (#β61649) |
service-worker
| Commit | Type | Description |
|---|---|---|
| b15bddfa04 | fix | do not register service worker if app is destroyed before it is ready to register (#β61101) |
v19.2.12
common
| Commit | Type | Description |
|---|---|---|
| 126efc9972 | fix | cancel reader when app is destroyed (#β61528) |
| efda872453 | fix | prevent reading chunks if app is destroyed (#β61354) |
compiler
| Commit | Type | Description |
|---|---|---|
| 44bb328eae | fix | avoid conflicts between HMR code and local symbols (#β61550) |
compiler-cli
| Commit | Type | Description |
|---|---|---|
| 107180260f | fix | Always retain prior results for all files (#β61487) |
| 1191e62d70 | fix | avoid ECMAScript private field metadata emit (#β61227) |
core
| Commit | Type | Description |
|---|---|---|
| 2b1b14f4d3 | fix | cleanup rxResource abort listener (#β58306) |
| 8f9b05eaaa | fix | cleanup testability subscriptions (#β61261) |
| eb53bda470 | fix | enable stashing only when withEventReplay() is invoked (#β61352) |
| 94f5a4b4d6 | fix | Testing should not throw when Zone does not patch test FW APIs (#β61376) |
| c0c69a5abc | fix | unregister onDestroy in toSignal. (#β61514) |
platform-server
| Commit | Type | Description |
|---|---|---|
| 8edafd0559 | perf | speed up resolution of base (#β61392) |
v19.2.11
v19.2.10
common
| Commit | Type | Description |
|---|---|---|
| 89056a0356 | fix | cleanup updateLatestValue if view is destroyed before promise resolves (#β61064) |
core
| Commit | Type | Description |
|---|---|---|
| 4623b61448 | fix | missing useExisting providers throwing for optional calls (#β61152) |
| 400dbc5b89 | fix | properly handle app stabilization with defer blocks (#β61056) |
platform-server
| Commit | Type | Description |
|---|---|---|
| a6f0d5bc20 | fix | less aggressive ngServerMode cleanup (#β61106) |
v19.2.9
core
| Commit | Type | Description |
|---|---|---|
| 946b844e0d | fix | async EventEmitter error should not prevent stability (#β61028) |
| dbb87026ca | fix | call DestroyRef on destroy callback if view is destroyed [patch] (#β61061) |
| 2e140a136a | fix | prevent stash listener conflicts [patch] (#β61063) |
v19.2.8
forms
| Commit | Type | Description |
|---|---|---|
| ea4a211216 | fix | make NgForm emit FormSubmittedEvent and FormResetEvent (#β60887) |
v19.2.7
common
| Commit | Type | Description |
|---|---|---|
| 37ab6814f5 | fix | issue a warning instead of an error when NgOptimizedImage exceeds the preload limit (#β60883) |
core
| Commit | Type | Description |
|---|---|---|
| b144126612 | fix | inject migration: replace param with this. (#β60713) |
http
| Commit | Type | Description |
|---|---|---|
| d39e09da41 | fix | Include HTTP status code and headers when HTTP requests errored in httpResource (#β60802) |
v19.2.6
compiler
| Commit | Type | Description |
|---|---|---|
| 3441f7b914 | fix | error if rawText isn't estimated correctly (#β60529) (#β60753) |
compiler-cli
| Commit | Type | Description |
|---|---|---|
| fc946c5f72 | fix | ensure HMR works with different output module type (#β60797) |
core
| Commit | Type | Description |
|---|---|---|
| 00bbd9b382 | fix | fix docs for output migration (#β60764) |
| f2bfa3151e | fix | fix ng generate @βangular/core:output-migration. Fixes angular#β58650 (#β60763) |
| 9241615ad0 | fix | reduce total memory usage of various migration schematics (#β60776) |
language-service
| Commit | Type | Description |
|---|---|---|
| 0e82d42774 | fix | Do not provide element completions in end tag (#β60616) |
| fcdef1019f | fix | Ensure dollar signs are escaped in completions (#β60597) |
<!
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.
β οΈ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
β» Renovate will retry this branch, including artifacts, only when one of the following happens:
- any of the package files in this branch needs updating, or
- the branch becomes conflicted, or
- you click the rebase/retry checkbox if found above, or
- you rename this PR's title to start with "rebase!" to trigger it manually
The artifact failure details are included below:
File name: package-lock.json
npm error code ERESOLVE
npm error ERESOLVE unable to resolve dependency tree
npm error
npm error While resolving: [email protected]
npm error Found: @angular/[email protected]
npm error node_modules/@angular/core
npm error @angular/core@"21.0.3" from the root project
npm error peer @angular/core@"21.0.3" from @angular/[email protected]
npm error node_modules/@angular/forms
npm error @angular/forms@"21.0.3" from the root project
npm error
npm error Could not resolve dependency:
npm error peer @angular/core@"18.2.8" from @angular/[email protected]
npm error node_modules/@angular/common
npm error @angular/common@"18.2.8" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry
npm error this command with --force or --legacy-peer-deps
npm error to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /runner/cache/others/npm/_logs/2025-12-03T19_08_43_084Z-eresolve-report.txt
npm error A complete log of this run can be found in: /runner/cache/others/npm/_logs/2025-12-03T19_08_43_084Z-debug-0.log