NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4465 most downloaded on npm
Angular - directives and services for creating forms
Last release 4 days ago
30 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
1109 releases · first in 2016
|  | add support for a custom EnvironmentInjec
| Commit | Description |
|---|---|
| add support for a custom EnvironmentInjector to NgComponentOutlet directive (#54764) | |
| support decoding in NgOptimizedImage (#61905) |
| Commit | Description |
|---|---|
Allow ControlState as reset arguments for FormGroup/FormRecord (#55860) |
|
| improve select performance (#61949) |
| Commit | Description |
|---|---|
Run loadComponent and loadChildren functions in the route's injection context (#62133) |
| Commit | Description |
|---|---|
| support notification closes (#61442) | |
| support push subscription changes (#61856) |
One column per quarter.
| Commit | Type | Description |
|---|---|---|
| 58aedc37d1 | feat | add support for a custom EnvironmentInjector to NgComponentOutlet directive (#54764) |
| ef10aa4005 | feat | support decoding in NgOptimizedImage (#61905) |
| Commit | Type | Description |
|---|---|---|
| 0dcf230d52 | feat | add support for new binary assignment operators (#62064) |
| 5a76826d26 | fix | only report parser errors on invalid expression (#61793) |
| 089ad0ee15 | fix | produce more accurate errors for interpolations (#62258) |
| e9fcbb8af1 | fix | remove TypeScript from linker (#61618) |
| Commit | Type | Description |
|---|---|---|
| e62fb359d6 | feat | add experimental support for fast type declaration emission (#61334) |
| 0cf1001715 | feat | support host directives with direct external references in fast type declaration emission (#61469) |
| b7ab5fa256 | fix | add signal checks to handle negated calls (#59970) |
| 77fa204ad1 | fix | rename flag for enabling fast type declaration emission (#61353) |
| c439d6938d | fix | symbol builder duplicating host directives (#61240) |
| 3e1baa5a95 | fix | typo in NG2026 message (#61325) |
| Commit | Type | Description |
|---|---|---|
| 8163a8995e | feat | Add destroyed property on DestroyRef (#61849) |
| 737b35b684 | feat | Add destroyed property to EnvironmentInjector (#61951) |
| 2e0c98bd3f | feat | support bindings in TestBed (#62040) |
| 4356e85456 | fix | fakeAsync should not depend on module import order (#61375) |
| 8424b3bcd5 | fix | Fixes template outlet hydration (#61989) |
| 583b9a7be5 | fix | missing useExisting providers throwing for optional calls (#61137) |
| 8f65223bd8 | fix | update min Node.js support to 20.19, 22.12, and 24.0 (#61499) |
| b785256b9e | perf | avoid intermediate arrays in definition (#61445) |
| 56769de4d8 | perf | move property remapping for dom properties to compiler (#62421) |
| Commit | Type | Description |
|---|---|---|
| 610bebfce9 | fix | Allow ControlState as reset arguments for FormGroup/FormRecord (#55860) |
| 4f0221e193 | fix | improve select performance (#61949) |
| Commit | Type | Description |
|---|---|---|
| 55fa38a1e5 | feat | add cache & priority support for fetch requests in httpResource (#62301) |
| b6ef42843c | feat | add credentials support for fetch requests in httpResource (#62390) |
| 73269cf5ce | feat | add keepalive support for fetch requests in httpResource (#61833) |
| 27b7ec0a62 | feat | add mode & redirect for fetch request in httpResource (#62337) |
| f0965c7acd | feat | Add support for fetch credentials options in HttpClient (#62354) |
| 87322449a3 | feat | add support for fetch mode and redirect options in HttpClient (#62315) |
| 9791ab1b6f | feat | Add support for fetch request cache and priority options (#61766) |
| aa861c42ff | feat | add timeout option on httpResource. (#62326) |
| c4cffe2063 | feat | Add timeout option to HTTP requests (#57194) |
| cfbbb08437 | feat | add warning when withCredentials overrides explicit credentials (#62383) |
| Commit | Type | Description |
|---|---|---|
| 20c1f991e6 | feat | add semantic tokens for templates (#60260) |
| cf55d1bdd4 | feat | Support importing the external module's export about the angular metadata. (#61122) |
| 5d2e85920e | feat | support to fix missing required inputs diagnostic (#50911) |
| Commit | Type | Description |
|---|---|---|
| 9833d9ea47 | feat | Run loadComponent and loadChildren functions in the route's injection context (#62133) |
| Commit | Type | Description |
|---|---|---|
| c67dbda8ff | feat | support notification closes (#61442) |
| 6e1df54799 | feat | support push subscription changes (#61856) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.0.6"></a>
|  | add support for a custom EnvironmentInjec
| Commit | Description |
|---|---|
| add support for a custom EnvironmentInjector to NgComponentOutlet directive (#54764) |
| Commit | Description |
|---|---|
| produce more accurate errors for interpolations (#62258) |
|  | add support for new binary assignment ope
| Commit | Description |
|---|---|
| add support for new binary assignment operators (#62064) |
| Commit | Description |
|---|---|
| add suggestion when pipe is missing (#62146) | |
| handle initializer APIs wrapped in type casts (#62203) |
| Commit | Description |
|---|---|
| add keepalive support for fetch requests in httpResource (#61833) | |
| Add support for fetch request cache and priority options (#61766) |
| Commit | Description |
|---|---|
| add semantic tokens for templates (#60260) | |
| support to fix missing required inputs diagnostic (#50911) |
| Commit | Description |
|---|---|
Run loadComponent and loadChildren functions in the route's injection context (#62133) |
|
| handle scrollRestoration error in restricted environments (#62186) |
| Commit | Description |
|---|---|
| Make zoneless work with hybrid apps (#61660) |
|  | support bindings in TestBed (#62040) |
| Commit | Description |
|---|---|
| support bindings in TestBed (#62040) | |
| Fixes template outlet hydration (#61989) | |
inject APP_ID before injector is destroyed (#61885) |
|
| Wrap ErrorEvent with no error property (#62081) |
| Commit | Description |
|---|---|
| more robust trailing comma removal in unused imports migration (#62118) |
|  | support decoding in NgOptimizedImage (#61
| Commit | Description |
|---|---|
| support decoding in NgOptimizedImage (#61905) |
| Commit | Description |
|---|---|
| add signal checks to handle negated calls (#59970) |
| Commit | Description |
|---|---|
| components marked for traversal resets reactive context (#61663) | |
unregister onDestroy in outputToObservable (#61882) |
| Commit | Description |
|---|---|
| improve select performance (#61949) |
|  | only report parser errors on invalid expre
| Commit | Description |
|---|---|
| only report parser errors on invalid expression (#61793) | |
| remove TypeScript from linker (#61618) |
| Commit | Description |
|---|---|
Allow ControlState as reset arguments for FormGroup/FormRecord (#55860) |
| Commit | Description |
|---|---|
| Support importing the external module's export about the angular metadata. (#61122) |
| Commit | Description |
|---|---|
| support notification closes (#61442) | |
| support push subscription changes (#61856) |
|  | use proper name for diagnostic type (#6247
<!-- CHANGELOG SPLIT MARKER -->
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.0.5"></a>
|  | add suggestion when pipe is missing (#6214
| Commit | Description |
|---|---|
| add suggestion when pipe is missing (#62146) | |
| handle initializer APIs wrapped in type casts (#62203) |
| Commit | Description |
|---|---|
| handle scrollRestoration error in restricted environments (#62186) |
| Commit | Description |
|---|---|
| Make zoneless work with hybrid apps (#61660) |
| Commit | Type | Description |
|---|---|---|
| de0d525ad7 | fix | add suggestion when pipe is missing (#62146) |
| 3eb5a79a83 | fix | handle initializer APIs wrapped in type casts (#62203) |
| Commit | Type | Description |
|---|---|---|
| a2e6f317a7 | fix | allow to set a resource in an error state (#62253) |
| 4c00238a69 | fix | avoid injecting ErrorHandler from a destroyed injector (#61886) |
| 369f03ad7f | fix | unable to retrieve defer blocks in tests when component injects ViewContainerRef (#62156) |
| Commit | Type | Description |
|---|---|---|
| 65c59dd796 | fix | handle scrollRestoration error in restricted environments (#62186) |
| Commit | Type | Description |
|---|---|---|
| 144c429230 | fix | Make zoneless work with hybrid apps (#61660) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.0.4"></a>
|  | Fixes template outlet hydration (#62012) |
| Commit | Type | Description |
|---|---|---|
| e343cdfb86 | fix | Fixes template outlet hydration (#62012) |
| 67f657e4a3 | fix | inject APP_ID before injector is destroyed (#61885) |
| ae212b51ee | fix | Wrap ErrorEvent with no error property (#62081) |
| Commit | Type | Description |
|---|---|---|
| 82bf9848a1 | fix | more robust trailing comma removal in unused imports migration (#62118) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.0.3"></a>
<!-- CHANGELOG SPLIT MARKER -->
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.0.2"></a>
|  | components marked for traversal resets rea
| Commit | Type | Description |
|---|---|---|
| 1e8158baee | fix | components marked for traversal resets reactive context (#61663) |
| 1cd23be57e | fix | unregister onDestroy in outputToObservable (#61882) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.0.1"></a>
|  | move defer trigger assertions out of parse
| Commit | Description |
|---|---|
| move defer trigger assertions out of parser (#61747) | |
| recover invalid parenthesized expressions (#61815) |
| Commit | Description |
|---|---|
| avoid trailing whitespaces in unused imports migration (#61698) |
| Commit | Description |
|---|---|
| prevent duplicate fetches during concurrent update checks (#61443) | |
| update service worker to handle seeking better for videos (#60029) |
| Commit | Type | Description |
|---|---|---|
| 66a0ec6510 | fix | move defer trigger assertions out of parser (#61747) |
| 8ecb1ba027 | fix | recover invalid parenthesized expressions (#61815) |
| 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) |
| Commit | Type | Description |
|---|---|---|
| e9820a6d48 | fix | avoid trailing whitespaces in unused imports migration (#61698) |
| 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) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.0.0"></a>
provideExperimentalCheckNoChangesForDebug has several breaking changes:
Blog post: https://blog.angular.dev/announcing-angular-v20-b5c9c06cf301
| Commit | Description |
|---|---|
| add keepalive support for fetch requests (#60621) | |
| Delay stabilization until next app synchronization (#60656) |
| Commit | Description |
|---|---|
Deprecate the platform-browser-dynamic package (#61043) |
|
| Deprecate the HammerJS integration (#60257) |
| Commit | Description |
|---|---|
| deprecate the testing entry point (#60915) |
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.'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}}.
the TestBed.flushEffects() was removed - use
the TestBed.tick() instead.
provideExperimentalCheckNoChangesForDebug has several
breaking changes:
provideCheckNoChangesConfiguseNgZoneOnStable option is removed. This wasn't found to be generally
more useful than intervalprovideExperimentalZonelessChangeDetection 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.
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.
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.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.ngIf/ngFor/ngSwitch are deprecated. Use the control flow blocks instead (@for/@if/@switch).@angular/platform-browser-dynamic@angular/platform-server/testing
Use e2e tests to verify SSR behavior instead.
Blog post: https://blog.angular.dev/announcing-angular-v20-b5c9c06cf301
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.'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}}.
Parenthesis are always respected.
This can lead to runtime breakages when a nullish coalescing operator is nested within parentheses.
eg. {{ (foo?.bar).baz }} will throw if foo is nullish. This is the same behavior as native JavaScript.
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:
provideCheckNoChangesConfiguseNgZoneOnStable option is removed. This wasn't found to be generally
more useful than intervalprovideExperimentalZonelessChangeDetection 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.
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 application 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.
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.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.ngIf/ngFor/ngSwitch are deprecated. Use the control flow blocks instead (@for/@if/@switch).@angular/platform-browser-dynamic@angular/platform-server/testing
Use e2e tests to verify SSR behavior instead.
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| Commit | Type | Description |
|---|---|---|
| ccc5cc068f | feat | add keepalive support for fetch requests (#60621) |
| 5795e03cdf | fix | Delay stabilization until next app synchronization (#60656) |
| Commit | Type | Description |
|---|---|---|
| bc2cab747f | refactor | Deprecate the platform-browser-dynamic package (#61043) |
| a980ac9a6a | refactor | Deprecate the HammerJS integration (#60257) |
| Commit | Type | Description |
|---|---|---|
| 2240a21c97 | refactor | deprecate the testing entry point (#60915) |
| 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) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.14"></a>
|  | accept undefined inputs in NgTemplateOutl
| Commit | Description |
|---|---|
| accept undefined inputs in NgTemplateOutlet (#61404) | |
| avoid injecting ApplicationRef in FetchBackend (#61649) |
| Commit | Description |
|---|---|
| lexer support for template literals in object literals (#61601) | |
| remove TypeScript from linker (#61635) |
| Commit | Description |
|---|---|
mark zone.js as an optional peer dependency (#61616) |
|
| Testing should not throw when Zone does not patch test FW APIs (#61628) |
| Commit | Description |
|---|---|
| preserve comments when removing unused imports (#61674) |
| Commit | Description |
|---|---|
| do not register service worker if app is destroyed before it is ready to register (#61101) |
|  | Deprecate the platform-browser-dynami…
| Commit | Description |
|---|---|
| cancel reader when app is destroyed (#61528) | |
| prevent reading chunks if app is destroyed (#61354) |
| Commit | Description |
|---|---|
| avoid conflicts between HMR code and local symbols (#61550) |
| Commit | Description |
|---|---|
| Always retain prior results for all files (#61487) | |
| avoid ECMAScript private field metadata emit (#61227) |
| Commit | Description |
|---|---|
Deprecate the platform-browser-dynamic package (#61043) |
| Commit | Description |
|---|---|
| speed up resolution of base (#61392) |
@angular/platform-browser-dynamic|  | incorrectly handling let declarations ins
| Commit | Description |
|---|---|
| incorrectly handling let declarations inside i18n (#60512) | |
| reduce allocations for let declarations only used in the same view (#60512) |
| Commit | Description |
|---|---|
| avoid fatal diagnostics for invalid module schemas (#61220) |
| Commit | Description |
|---|---|
enable stashing only when withEventReplay() is invoked (#61077) |
|  | cleanup updateLatestValue if view is destr
provideExperimentalCheckNoChangesForDebug has several breaking changes:
| Commit | Description |
|---|---|
| Allow passing ScrollOptions to ViewportScroller (#61002) | |
| rename httpResource function in factory (#60022) |
| Commit | Description |
|---|---|
| detect missing structural directive imports (#59443) |
| Commit | Description |
|---|---|
| add keepalive support for fetch requests (#60621) |
the TestBed.flushEffects() was removed - use
the TestBed.tick() instead.
provideExperimentalCheckNoChangesForDebug has several
breaking changes:
provideCheckNoChangesConfiguseNgZoneOnStable option is removed. This wasn't found to be generally
more useful than intervalafterRender was renamed to afterEveryRender.
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.
|  | deprecate the testing entry point (#6…
| Commit | Description |
|---|---|
support the in keyword in Binary expression (#58432) |
| Commit | Description |
|---|---|
| Move zoneless change detection to dev preview (#60748) | |
| do not run change detection on global error events (#60944) | |
inject migration should treat @Attribute as optional (#60916) |
| Commit | Description |
|---|---|
| make NgForm emit FormSubmittedEvent and FormResetEvent (#60887) |
| Commit | Description |
|---|---|
| deprecate the testing entry point (#60915) |
| Commit | Description |
|---|---|
| add asynchronous redirects (#60863) | |
| relax required types on router commands to readonly array (#60345) |
provideExperimentalZonelessChangeDetection is
renamed to provideZonelessChangeDetection as it is now "Developer
Preview" rather than "Experimental".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.@angular/platform-server/testing
Use e2e tests to verify SSR behavior instead.
|  | issue a warning instead of an error when N
| Commit | Description |
|---|---|
issue a warning instead of an error when NgOptimizedImage exceeds the preload limit (#60879) |
| Commit | Description |
|---|---|
Include HTTP status code and headers when HTTP requests errored in httpResource (#60802) |
|  | add extended diagnostic for uninvoked tra
| Commit | Description |
|---|---|
add extended diagnostic for uninvoked track function on @for blocks (#60495) |
| Commit | Description |
|---|---|
| ensure HMR works with different output module type (#60797) |
| Commit | Description |
|---|---|
| Delay stabilization until next app synchronization (#60656) |
| Commit | Description |
|---|---|
| Do not provide element completions in end tag (#60616) | |
| Ensure dollar signs are escaped in completions (#60597) |
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.|  | Deprecate the structural directives n…
| Commit | Description |
|---|---|
| step 6 tutorial docs (#60630) |
| Commit | Description |
|---|---|
add missing peer dependency on @angular/common (#60660) |
| Commit | Description |
|---|---|
| error if rawText isn't estimated correctly (#60529) | |
| throw for invalid "as" expression in if block (#60580) |
| Commit | Description |
|---|---|
| add markAllAsDirty to AbstractControl (#58663) | |
| Allow to reset a form without emitting events (#60354) |
| Commit | Description |
|---|---|
| Update adapter to log instead of throw errors (#60651) |
| Commit | Description |
|---|---|
| handle shorthand assignments in super call (#60602) | |
| inject migration not handling super parameter referenced via this (#60602) |
| Commit | Description |
|---|---|
| assign initializing client's app version, when a request is for worker script (#58131) |
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
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.
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.ngIf/ngFor/ngSwitch are deprecated. Use the control flow blocks instead (@for/@if/@switch).|  | resolve host binding type issues (#60481)
| Commit | Description |
|---|---|
| resolve host binding type issues (#60481) |
| Commit | Description |
|---|---|
| fix used templates are not deleted (#60459) | |
| fixes timing of hydration cleanup on control flow (#60425) |
| Commit | Description |
|---|---|
| resolve host binding type issues (#60481) |
| Commit | Description |
|---|---|
| handle @angular/build:karma in ng add (#60513) |
| Commit | Description |
|---|---|
ensure platformBrowserTesting includes platformBrowser providers (#60480) |
|  | add extended diagnostic for invalid nulli
| Commit | Description |
|---|---|
ensure compiler is loaded before @angular/common (#60458) |
| Commit | Description |
|---|---|
| handle output emitters when downgrading a component (#60369) |
TestBed.get has been removed. Use TestBed.inject instead.|  | Deprecate the HammerJS integration (#…
<a name="20.0.0-next.2"></a>
| Commit | Description |
|---|---|
| support equality function in httpResource (#60026) |
| Commit | Description |
|---|---|
| incorrect spans for template literals (#60323) |
| Commit | Description |
|---|---|
| avoid fatal diagnostics for missing template files (#58673) | |
| handle transformed classes when generating HMR code (#60298) |
| Commit | Description |
|---|---|
| Make sure statusChanges is emitted (#57098) |
| Commit | Description |
|---|---|
| Deprecate the HammerJS integration (#60257) |
| Commit | Description |
|---|---|
add missing peer dependency for rxjs (#60308) |
| Commit | Description |
|---|---|
| Prevent dangling promise rejections from internal navigations (#60162) | |
| update symbols (#60233) |
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.any overload has been removed from
injector.get. It now only supports ProviderToken<T> and (deprecated
since v4) string.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.|  | clean up onUrlChange listener when root sc
<a name="20.0.0-next.1"></a>
| Commit | Description |
|---|---|
clean up onUrlChange listener when root scope is destroyed (#60004) |
|
| Handle errors in async pipe subscriptions (#60057) |
| Commit | Description |
|---|---|
| support tagged template literals in expressions (#59947) | |
| exponentiation should be right-to-left associative (#60101) | |
| proper handling of typeof, void in RecursiveAstVisitor (#60101) |
| Commit | Description |
|---|---|
| Forward the tags for quick info from the type definition (#59524) |
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.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.|  | throw error for suspicious date patterns
<a name="20.0.0-next.0"></a>
| Commit | Description |
|---|---|
| throw error for suspicious date patterns (#59798) |
| Commit | Description |
|---|---|
| support exponentiation operator in templates (#59894) | |
| support void operator in templates (#59894) |
| Commit | Description |
|---|---|
| Ensure ComponentFixture does not duplicate error reporting from FakeAsync (#60104) | |
Remove duplicate reporting of errors in CDR.detectChanges (#60056) |
| Commit | Description |
|---|---|
| Allow resolvers to read resolved data from ancestors (#59860) | |
| Scroller should scroll as soon as change detection completes (#60086) |
Y formatter (week-numbering year) without also including w (week number) is now detected as suspicious date pattern, as y is typically intended.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}}.
|  | throw on suspicious URLs and restrict prot
| Commit | Type | Description |
|---|---|---|
| e2fb854d55 | fix | throw on suspicious URLs and restrict protocol-relative URLs |
| 0a8befb493 | fix | update domino to latest version |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.24"></a>
|  | prevent namespaced SVG elements from being
| Commit | Type | Description |
|---|---|---|
| 6ea6379123 | fix | prevent namespaced SVG <style> elements from being stripped |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.23"></a>
|  | add upper bounds for digitsInfo |
| Commit | Description |
|---|---|
| add upper bounds for digitsInfo | |
| sanitize placeholder |
| Commit | Description |
|---|---|
| exclude withCredentials requests from transfer cache | |
| skip TransferCache for cookie-bearing requests by default |
| Commit | Description |
|---|---|
| normalize path parsing in ServerPlatformLocation | |
| secure location and document initialization against SSRF and path hijack |
| Commit | Description |
|---|---|
| preserve redirect policy on reconstructed asset requests | |
| Preserves explicit 'credentials: omit' in asset requests | |
| Preserves HTTP cache mode in asset group requests |
| Commit | Type | Description |
|---|---|---|
| 62dd27d6af | fix | add upper bounds for digitsInfo |
| 17326725ba | fix | sanitize placeholder |
| Commit | Type | Description |
|---|---|---|
| 932e0728db | fix | normalize tag names with custom namespaces in DomElementSchemaRegistry |
| 2e3d0371ab | fix | sanitize dynamic href and xlink:href bindings on SVG a elements |
| fe1207e8c5 | fix | strip namespaced SVG script elements during template compilation |
| Commit | Type | Description |
|---|---|---|
| c6bb0692e2 | fix | reject script element as a dynamic component host |
| 3960b21558 | fix | sanitize meta selectors |
| 3632fa4b69 | fix | support prefix-insensitive DOM schema lookups and compile-time i18n attribute validation |
| 620230dac4 | fix | synchronize core sanitization schema with compiler |
| d31f84116c | fix | wrap i18n dynamic element property updates in active index states |
| Commit | Type | Description |
|---|---|---|
| 9940ffd781 | fix | exclude withCredentials requests from transfer cache |
| 0f67f0b962 | fix | skip TransferCache for cookie-bearing requests by default |
| Commit | Type | Description |
|---|---|---|
| d187e8aeda | fix | normalize path parsing in ServerPlatformLocation |
| c75f60ef8a | fix | secure location and document initialization against SSRF and path hijack |
| Commit | Type | Description |
|---|---|---|
| 37ee9ffd9e | fix | preserve redirect policy on reconstructed asset requests |
| 97f796203f | fix | Preserves explicit 'credentials: omit' in asset requests |
| 5619120931 | fix | Preserves HTTP cache mode in asset group requests |
<!-- CHANGELOG SPLIT MARKER -->
<a name="21.2.14"></a>
|  | disallow event attribute bindings in host
| Commit | Description |
|---|---|
| disallow event attribute bindings in host bindings unconditionally (#68469) | |
| validate security-sensitive attributes in i18n bindings (#68469) |
| Commit | Description |
|---|---|
add allowedHosts option to renderModule and renderApplication |
|
| ensure origin has a trailing slash when parsing url (#68469) |
| Commit | Type | Description |
|---|---|---|
| 83a640516f | fix | disallow event attribute bindings in host bindings unconditionally (#68469) |
| 24a0103a98 | fix | validate security-sensitive attributes in i18n bindings (#68469) |
| Commit | Type | Description |
|---|---|---|
| 8569db8875 | fix | add allowedHosts option to renderModule and renderApplication |
| 837a710217 | fix | ensure origin has a trailing slash when parsing url (#68469) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.21"></a>
|  | prevent SSRF bypasses via protocol-relativ
| Commit | Type | Description |
|---|---|---|
| f3a5bfb949 | fix | prevent SSRF bypasses via protocol-relative and backslash URLs |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.19"></a>
|  | disallow translations of iframe src |
| Commit | Type | Description |
|---|---|---|
| 5be912eb55 | fix | disallow translations of iframe src |
| Commit | Type | Description |
|---|---|---|
| b89b0a83a4 | fix | sanitize translated attribute bindings with interpolations |
| 621c7071ad | fix | sanitize translated form attributes |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.18"></a>
|  | block creation of sensitive URI attributes
| Commit | Description |
|---|---|
| block creation of sensitive URI attributes from ICU messages |
Angular now only applies known attributes from HTML in translated ICU content. Unknown attributes are dropped and not rendered.
(cherry picked from commit 03da204b6daa5e4583e0d0968c2107390bbd8235)
Angular now only applies known attributes from HTML in translated ICU content. Unknown attributes are dropped and not rendered.
(cherry picked from commit 03da204b6daa5e4583e0d0968c2107390bbd8235)
| Commit | Type | Description |
|---|---|---|
| 747548721d | fix | block creation of sensitive URI attributes from ICU messages |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.17"></a>
|  | sanitize sensitive attributes on SVG scrip
| Commit | Type | Description |
|---|---|---|
| 26cdc53d9c | fix | sanitize sensitive attributes on SVG script elements |
<!-- CHANGELOG SPLIT MARKER -->
<a name="21.0.7"></a>
|  | prevent XSS via SVG animation attributeNam
| Commit | Type | Description |
|---|---|---|
| 7c42e2ebeb | fix | prevent XSS via SVG animation attributeName and MathML/SVG URLs |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.16"></a>
|  | prevent XSRF token leakage to protocol-rel
| Commit | Type | Description |
|---|---|---|
| 05fe6686a9 | fix | prevent XSRF token leakage to protocol-relative URLs |
<!-- CHANGELOG SPLIT MARKER -->
<a name="20.3.14"></a>
|  | introduce BootstrapContext for improved se
| Commit | Description |
|---|---|
introduce BootstrapContext for improved server bootstrapping (#63639) |
The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector.
Before:
const bootstrap = () => bootstrapApplication(AppComponent, config);
After:
const bootstrap = (context: BootstrapContext) =>
bootstrapApplication(AppComponent, config, context);
A schematic is provided to automatically update main.server.ts files to pass the BootstrapContext to the bootstrapApplication call.
In addition, getPlatform() and destroyPlatform() will now return null and be a no-op respectively when running in a server environment.
For more information please see: https://github.com/angular/angular/security/advisories/GHSA-68x2-mx4q-78m7
|  | lexer support for template literals in obj
| Commit | Type | Description |
|---|---|---|
| 24bab55f0c | fix | lexer support for template literals in object literals (#61601) |
| Commit | Type | Description |
|---|---|---|
| 9e1cd49662 | fix | preserve comments when removing unused imports (#61674) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.13"></a>
|  | avoid injecting ApplicationRef in FetchBac
| Commit | Type | Description |
|---|---|---|
| 2c876b4fc5 | fix | avoid injecting ApplicationRef in FetchBackend (#61649) |
| Commit | Type | Description |
|---|---|---|
| b15bddfa04 | fix | do not register service worker if app is destroyed before it is ready to register (#61101) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.12"></a>
|  | cancel reader when app is destroyed (#6152
| Commit | Description |
|---|---|
| cancel reader when app is destroyed (#61528) | |
| prevent reading chunks if app is destroyed (#61354) |
| Commit | Description |
|---|---|
| avoid conflicts between HMR code and local symbols (#61550) |
| Commit | Description |
|---|---|
| Always retain prior results for all files (#61487) | |
| avoid ECMAScript private field metadata emit (#61227) |
| Commit | Description |
|---|---|
| speed up resolution of base (#61392) |
| Commit | Type | Description |
|---|---|---|
| 126efc9972 | fix | cancel reader when app is destroyed (#61528) |
| efda872453 | fix | prevent reading chunks if app is destroyed (#61354) |
| Commit | Type | Description |
|---|---|---|
| 44bb328eae | fix | avoid conflicts between HMR code and local symbols (#61550) |
| Commit | Type | Description |
|---|---|---|
| 107180260f | fix | Always retain prior results for all files (#61487) |
| 1191e62d70 | fix | avoid ECMAScript private field metadata emit (#61227) |
| 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) |
| Commit | Type | Description |
|---|---|---|
| 8edafd0559 | perf | speed up resolution of base (#61392) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.11"></a>
<!-- CHANGELOG SPLIT MARKER -->
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.10"></a>
|  | cleanup updateLatestValue if view is destr
| Commit | Description |
|---|---|
cleanup updateLatestValue if view is destroyed before promise resolves (#61064) |
| Commit | Description |
|---|---|
| missing useExisting providers throwing for optional calls (#61152) | |
| properly handle app stabilization with defer blocks (#61056) |
| Commit | Description |
|---|---|
| less aggressive ngServerMode cleanup (#61106) |
| Commit | Type | Description |
|---|---|---|
| 89056a0356 | fix | cleanup updateLatestValue if view is destroyed before promise resolves (#61064) |
| Commit | Type | Description |
|---|---|---|
| 4623b61448 | fix | missing useExisting providers throwing for optional calls (#61152) |
| 400dbc5b89 | fix | properly handle app stabilization with defer blocks (#61056) |
| Commit | Type | Description |
|---|---|---|
| a6f0d5bc20 | fix | less aggressive ngServerMode cleanup (#61106) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.9"></a>
|  | async EventEmitter error should not preven
| 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) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.8"></a>
|  | make NgForm emit FormSubmittedEvent and Fo
| Commit | Type | Description |
|---|---|---|
| ea4a211216 | fix | make NgForm emit FormSubmittedEvent and FormResetEvent (#60887) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.7"></a>
|  | issue a warning instead of an error when N
| Commit | Description |
|---|---|
issue a warning instead of an error when NgOptimizedImage exceeds the preload limit (#60883) |
| Commit | Description |
|---|---|
| inject migration: replace param with this. (#60713) |
| Commit | Description |
|---|---|
Include HTTP status code and headers when HTTP requests errored in httpResource (#60802) |
| Commit | Type | Description |
|---|---|---|
| 37ab6814f5 | fix | issue a warning instead of an error when NgOptimizedImage exceeds the preload limit (#60883) |
| Commit | Type | Description |
|---|---|---|
| b144126612 | fix | inject migration: replace param with this. (#60713) |
| Commit | Type | Description |
|---|---|---|
| d39e09da41 | fix | Include HTTP status code and headers when HTTP requests errored in httpResource (#60802) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.6"></a>
|  | error if rawText isn't estimated correctly
| Commit | Description |
|---|---|
| error if rawText isn't estimated correctly (#60529) (#60753) |
| Commit | Description |
|---|---|
| ensure HMR works with different output module type (#60797) |
| Commit | Description |
|---|---|
| Do not provide element completions in end tag (#60616) | |
| Ensure dollar signs are escaped in completions (#60597) |
| Commit | Type | Description |
|---|---|---|
| 3441f7b914 | fix | error if rawText isn't estimated correctly (#60529) (#60753) |
| Commit | Type | Description |
|---|---|---|
| fc946c5f72 | fix | ensure HMR works with different output module type (#60797) |
| 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) |
| Commit | Type | Description |
|---|---|---|
| 0e82d42774 | fix | Do not provide element completions in end tag (#60616) |
| fcdef1019f | fix | Ensure dollar signs are escaped in completions (#60597) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.5"></a>
|  | step 6 tutorial docs (#60630) |
| Commit | Description |
|---|---|
| step 6 tutorial docs (#60630) |
| Commit | Description |
|---|---|
add missing peer dependency on @angular/common (#60660) |
| Commit | Description |
|---|---|
| throw for invalid "as" expression in if block (#60580) |
| Commit | Description |
|---|---|
| Produce fatal diagnostic on duplicate decorated properties (#60376) | |
support relative imports to symbols outside rootDir (#60555) |
| Commit | Description |
|---|---|
| Update adapter to log instead of throw errors (#60651) |
| Commit | Description |
|---|---|
| handle shorthand assignments in super call (#60602) | |
| inject migration not handling super parameter referenced via this (#60602) |
| Commit | Description |
|---|---|
| Add missing types to transition (#60307) |
| Commit | Description |
|---|---|
| assign initializing client's app version, when a request is for worker script (#58131) |
| Commit | Type | Description |
|---|---|---|
| e61d06afb5 | fix | step 6 tutorial docs (#60630) |
| Commit | Type | Description |
|---|---|---|
| fa48f98d9f | fix | add missing peer dependency on @angular/common (#60660) |
| Commit | Type | Description |
|---|---|---|
| ca5aa4d55b | fix | throw for invalid "as" expression in if block (#60580) |
| Commit | Type | Description |
|---|---|---|
| f4c4b10ea8 | fix | Produce fatal diagnostic on duplicate decorated properties (#60376) |
| 22a0e54ac4 | fix | support relative imports to symbols outside rootDir (#60555) |
| Commit | Type | Description |
|---|---|---|
| 64da69f7b6 | fix | check ngDevMode for undefined (#60565) |
| 8f68d1bec3 | fix | fix ng generate @angular/core:output-migration (#60626) |
| bc79985c65 | fix | fix regexp for event types (#60592) |
| 006ac7f22f | fix | fixes #592882 ng generate @angular/core:signal-queries-migration (#60688) |
| da6e93f434 | fix | preserve comments in internal inject migration (#60588) |
| dbbddd1617 | fix | prevent omission of deferred pipes in full compilation (#60571) |
| Commit | Type | Description |
|---|---|---|
| 0e9e0348dd | fix | Update adapter to log instead of throw errors (#60651) |
| Commit | Type | Description |
|---|---|---|
| 15f53f035b | fix | handle shorthand assignments in super call (#60602) |
| 4b161e6234 | fix | inject migration not handling super parameter referenced via this (#60602) |
| Commit | Type | Description |
|---|---|---|
| 958e98e4f7 | fix | Add missing types to transition (#60307) |
| Commit | Type | Description |
|---|---|---|
| 7cd89ad2c6 | fix | assign initializing client's app version, when a request is for worker script (#58131) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.4"></a>
|  | fix used templates are not deleted (#6045
| Commit | Type | Description |
|---|---|---|
| 081f5f5a83f | fix | fix used templates are not deleted (#60459) |
| Commit | Type | Description |
|---|---|---|
| a2f622d82d6 | fix | handle @angular/build:karma in ng add (#60513) |
| Commit | Type | Description |
|---|---|---|
| 8e8ccc79279 | fix | ensure platformBrowserTesting includes platformBrowser providers (#60480) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.3"></a>
|  | report more accurate diagnostic for invali
| Commit | Description |
|---|---|
| report more accurate diagnostic for invalid import (#60455) |
| Commit | Description |
|---|---|
| catch hydration marker with implicit body tag (#60429) | |
| execute timer trigger outside zone (#60392) | |
| include input name in error message (#60404) |
| Commit | Description |
|---|---|
ensure compiler is loaded before @angular/common (#60458) |
| Commit | Description |
|---|---|
| handle output emitters when downgrading a component (#60369) |
| Commit | Type | Description |
|---|---|---|
| aa8ea7a5b2 | fix | report more accurate diagnostic for invalid import (#60455) |
| Commit | Type | Description |
|---|---|---|
| 13a8709b2b | fix | catch hydration marker with implicit body tag (#60429) |
| 296aded9da | fix | execute timer trigger outside zone (#60392) |
| 0615ffb4f7 | fix | include input name in error message (#60404) |
| Commit | Type | Description |
|---|---|---|
| 1e06c8e8b6 | fix | ensure compiler is loaded before @angular/common (#60458) |
| Commit | Type | Description |
|---|---|---|
| 9e1a1030c8 | fix | handle output emitters when downgrading a component (#60369) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.2"></a>
|  | support equality function in httpResource
<a name="19.2.2"></a>
| Commit | Description |
|---|---|
| support equality function in httpResource (#60026) |
| Commit | Description |
|---|---|
| incorrect spans for template literals (#60323) (#60331) |
| Commit | Description |
|---|---|
| handle transformed classes when generating HMR code (#60298) |
| Commit | Description |
|---|---|
add missing peer dependency for rxjs (#60308) |
| Commit | Description |
|---|---|
| update symbols (#60233) |
| Commit | Type | Description |
|---|---|---|
| 90a16a1088 | fix | support equality function in httpResource (#60026) |
| Commit | Type | Description |
|---|---|---|
| 56b551d273 | fix | incorrect spans for template literals (#60323) (#60331) |
| Commit | Type | Description |
|---|---|---|
| 23ca88522b | fix | handle transformed classes when generating HMR code (#60298) |
| Commit | Type | Description |
|---|---|---|
| 6dc41265fd | fix | check whether application is destroyed before initializing event replay (#59789) |
| bb12b30d52 | fix | ensures immediate trigger fires properly with lazy loaded routes (#60203) |
| b144dd946e | fix | fix removal of a container reference used in the component file (#60210) |
| Commit | Type | Description |
|---|---|---|
| 15c42969fc | fix | add missing peer dependency for rxjs (#60308) |
| Commit | Type | Description |
|---|---|---|
| 7bcdf7c143 | fix | update symbols (#60233) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.1"></a>
|  | clean up onUrlChange listener when root sc
<a name="19.2.1"></a>
| Commit | Description |
|---|---|
clean up onUrlChange listener when root scope is destroyed (#60004) |
| Commit | Description |
|---|---|
| ensure template IDs are not reused if a source file changes (#60152) |
| Commit | Description |
|---|---|
| cache ComponentRef inputs and outputs (#60156) | |
| prevent invoking replay listeners on disconnected nodes (#60103) | |
| prevents event replay from being called on comment nodes (#60130) |
| Commit | Description |
|---|---|
| Forward the tags for quick info from the type definition (#59524) |
| Commit | Type | Description |
|---|---|---|
| c2de5f68b3 | fix | clean up onUrlChange listener when root scope is destroyed (#60004) |
| Commit | Type | Description |
|---|---|---|
| 1dd94476b3 | fix | ensure template IDs are not reused if a source file changes (#60152) |
| Commit | Type | Description |
|---|---|---|
| 1b3b05bf72 | fix | cache ComponentRef inputs and outputs (#60156) |
| 330c24aed9 | fix | prevent invoking replay listeners on disconnected nodes (#60103) |
| cfad089cc3 | fix | prevents event replay from being called on comment nodes (#60130) |
| Commit | Type | Description |
|---|---|---|
| 3f0116607d | fix | Forward the tags for quick info from the type definition (#59524) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.0"></a>
|  | introduce experimental httpResource (#598
<a name="19.2.0"></a>
| Commit | Description |
|---|---|
introduce experimental httpResource (#59876) |
| Commit | Description |
|---|---|
| Add Skip Hydration diagnostic. (#59576) | |
| support untagged template literals in expressions (#59230) |
| Commit | Description |
|---|---|
| support type set in form validators (#45793) |
| Commit | Description |
|---|---|
| add migration to convert templates to use self-closing tags (#57342) |
| Commit | Description |
|---|---|
| automatically disable animations on the server (#59762) |
| Commit | Description |
|---|---|
| decouple server from animations module (#59762) |
| Commit | Type | Description |
|---|---|---|
| 3e39da593a | feat | introduce experimental httpResource (#59876) |
| Commit | Type | Description |
|---|---|---|
| 5b20bab96d | feat | Add Skip Hydration diagnostic. (#59576) |
| fe8a68329b | feat | support untagged template literals in expressions (#59230) |
| Commit | Type | Description |
|---|---|---|
| 2588985f43 | feat | pass signal node to throwInvalidWriteToSignalErrorFn (#59600) |
| 168516462a | feat | support default value in resource() (#59655) |
| bc2ad7bfd3 | feat | support streaming resources (#59573) |
| 146ab9a76e | feat | support TypeScript 5.8 (#59830) |
| 6c92d65349 | fix | add hasValue narrowing to ResourceRef (#59708) |
| 96e602ebe9 | fix | cancel in-progress request when same value is assigned (#59280) |
| 6789c7ef94 | fix | Defer afterRender until after first CD (#59455) (#59551) |
| c87e581dd9 | fix | Don't run effects in check no changes pass (#59455) (#59551) |
| 127fc0dc84 | fix | fix resource()'s previous.state (#59708) |
| b592b1b051 | fix | fix race condition in resource() (#59851) |
| a299e02e91 | fix | preserve tracing snapshot until tick finishes (#59796) |
| Commit | Type | Description |
|---|---|---|
| fa0c3e3210 | feat | support type set in form validators (#45793) |
| Commit | Type | Description |
|---|---|---|
| 1cd3a7db83 | feat | add migration to convert templates to use self-closing tags (#57342) |
| Commit | Type | Description |
|---|---|---|
| e6cb411e43 | fix | automatically disable animations on the server (#59762) |
| Commit | Type | Description |
|---|---|---|
| fc5d187da5 | fix | decouple server from animations module (#59762) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.8"></a>
|  | introduce experimental httpResource (#598
<a name="19.2.0-rc.0"></a>
| Commit | Description |
|---|---|
introduce experimental httpResource (#59876) |
|
clean up urlChanges subscribers when root scope is destroyed (#59703) |
| Commit | Description |
|---|---|
| Add Skip Hydration diagnostic. (#59576) |
| Commit | Description |
|---|---|
| avoid crash in isolated transform operations (#59869) |
| Commit | Description |
|---|---|
| pass signal node to throwInvalidWriteToSignalErrorFn (#59600) |
| Commit | Description |
|---|---|
Fix typing on FormRecord. (#59993) |
| Commit | Description |
|---|---|
| add migration to convert templates to use self-closing tags (#57342) |
|  | handle tracking expressions requiring temp
<a name="19.2.0-next.3"></a>
| Commit | Description |
|---|---|
| handle tracking expressions requiring temporary variables (#58520) |
| Commit | Description |
|---|---|
| handle deferred blocks with shared dependencies correctly (#59926) |
| Commit | Description |
|---|---|
| account for let declarations in control flow migration (#59861) | |
| count used dependencies inside existing control flow (#59861) |
|  | gracefully fall back if const enum cannot
<a name="19.2.0-next.2"></a>
| Commit | Description |
|---|---|
| support TypeScript 5.8 (#59830) | |
| fix race condition in resource() (#59851) | |
| preserve tracing snapshot until tick finishes (#59796) |
| Commit | Description |
|---|---|
| support type set in form validators (#45793) |
|  | support default value in resource() (#59
<a name="19.2.0-next.1"></a>
| Commit | Description |
|---|---|
| not setting initial value on signal-based input (#59773) |
| Commit | Description |
|---|---|
| decouple server from animations module (#59762) |
| Commit | Description |
|---|---|
| prevent error handling when injector is destroyed (#59457) |
| Commit | Description |
|---|---|
add missing rxjs peer dependency (#59747) |
|  | support untagged template literals in exp
|  | Ensure future-proof correct initialization
<a name="19.1.8"></a>
| Commit | Description |
|---|---|
| Ensure future-proof correct initialization order (#60025) |
| Commit | Description |
|---|---|
| make types for HttpClient more readable (#59901) |
| Commit | Description |
|---|---|
| capture stack for HMR errors (#60067) |
| Commit | Description |
|---|---|
| provide correct rename info for elements (#60088) |
| Commit | Type | Description |
|---|---|---|
| f0990c67e6 | fix | Ensure future-proof correct initialization order (#60025) |
| Commit | Type | Description |
|---|---|---|
| 1fbaeab37d | fix | make types for HttpClient more readable (#59901) |
| Commit | Type | Description |
|---|---|---|
| c611c8d212 | fix | capture stack for HMR errors (#60067) |
| Commit | Type | Description |
|---|---|---|
| 4c9d09c643 | fix | provide correct rename info for elements (#60088) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.7"></a>
Your coding agent can read these notes before it upgrades. Set up the MCP server →