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
|  | clean up urlChanges subscribers when root
| Commit | Type | Description |
|---|---|---|
| e9f10eb4c9 | fix | clean up urlChanges subscribers when root scope is destroyed (#59703) |
| Commit | Type | Description |
|---|---|---|
| 16fc074689 | fix | avoid crash in isolated transform operations (#59869) |
| Commit | Type | Description |
|---|---|---|
| ec1e4c3d94 | fix | Fix typing on FormRecord. (#59993) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.6"></a>
One column per quarter.
|  | handle tracking expressions requiring temp
<a name="19.1.6"></a>
| Commit | Description |
|---|---|
| handle tracking expressions requiring temporary variables (#58520) |
| Commit | Description |
|---|---|
| handle deferred blocks with shared dependencies correctly (#59926) |
| Commit | Description |
|---|---|
| invalidate HMR component if replacement throws an error (#59854) |
| Commit | Description |
|---|---|
| account for let declarations in control flow migration (#59861) | |
| count used dependencies inside existing control flow (#59861) |
| Commit | Type | Description |
|---|---|---|
| 01f669a274 | fix | handle tracking expressions requiring temporary variables (#58520) |
| Commit | Type | Description |
|---|---|---|
| dcfb9f1959 | fix | handle deferred blocks with shared dependencies correctly (#59926) |
| Commit | Type | Description |
|---|---|---|
| cab7a9b69c | fix | invalidate HMR component if replacement throws an error (#59854) |
| Commit | Type | Description |
|---|---|---|
| 710759ddcc | fix | account for let declarations in control flow migration (#59861) |
| 46f36a58bf | fix | count used dependencies inside existing control flow (#59861) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.5"></a>
|  | gracefully fall back if const enum cannot
| Commit | Type | Description |
|---|---|---|
| d7b5c597ffc | fix | gracefully fall back if const enum cannot be passed through (#59815) |
| 53a4668b58b | fix | handle const enums used inside HMR data (#59815) |
| 976125e0b4c | fix | handle enum members without initializers in partial evaluator (#59815) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.4"></a>
|  | check whether application is destroyed be
<a name="19.1.4"></a>
| Commit | Description |
|---|---|
| check whether application is destroyed before printing hydration stats (#59716) | |
| ensure type is preserved during HMR (#59700) | |
| fixes test timer-based test flakiness in CI (#59674) |
| Commit | Description |
|---|---|
| not setting initial value on signal-based input (#59773) |
| Commit | Description |
|---|---|
| prevent error handling when injector is destroyed (#59457) |
| Commit | Description |
|---|---|
add missing rxjs peer dependency (#59747) |
| Commit | Type | Description |
|---|---|---|
| 544b9ee7ca0 | fix | check whether application is destroyed before printing hydration stats (#59716) |
| d6e78c072dc | fix | ensure type is preserved during HMR (#59700) |
| c2436702df9 | fix | fixes test timer-based test flakiness in CI (#59674) |
| Commit | Type | Description |
|---|---|---|
| 44180645992 | fix | not setting initial value on signal-based input (#59773) |
| Commit | Type | Description |
|---|---|---|
| 1828a840620 | fix | prepend baseHref to sourceMappingURL in CSS content (#59730) |
| 1c84cbca30e | fix | Update pseudoevent created by createMouseSpecialEvent to populate _originalEvent property (#59690) |
| 12256574626 | fix | Update pseudoevent created by createMouseSpecialEvent to populate _originalEvent property (#59690) |
| 3f4d5f636aa | fix | Update pseudoevent created by createMouseSpecialEvent to populate _originalEvent property (#59690) |
| Commit | Type | Description |
|---|---|---|
| e3da35ec749 | fix | prevent error handling when injector is destroyed (#59457) |
| Commit | Type | Description |
|---|---|---|
| 522acbf3d7e | fix | add missing rxjs peer dependency (#59747) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.3"></a>
|  | handle :host-context with comma-separated
<a name="19.1.3"></a>
| Commit | Description |
|---|---|
| handle :host-context with comma-separated child selector (#59276) |
| Commit | Description |
|---|---|
| capture self-referencing component during HMR (#59644) | |
| replace metadata in place during HMR (#59644) | |
| skip component ID collision warning during SSR (#59625) |
| Commit | Description |
|---|---|
| avoid applying the same replacements twice when cleaning up unused imports (#59656) |
| Commit | Description |
|---|---|
| clear renderer cache during HMR when using async animations (#59644) |
| Commit | Type | Description |
|---|---|---|
| ecfb74d287 | fix | handle :host-context with comma-separated child selector (#59276) |
| Commit | Type | Description |
|---|---|---|
| 53160e504d | fix | extract parenthesized dependencies during HMR (#59644) |
| 39690969af | fix | handle conditional expressions when extracting dependencies (#59637) |
| 78af7a5059 | fix | handle new expressions when extracting dependencies (#59637) |
| Commit | Type | Description |
|---|---|---|
| 408af24ff3 | fix | capture self-referencing component during HMR (#59644) |
| d7575c201c | fix | replace metadata in place during HMR (#59644) |
| 26f6d4c485 | fix | skip component ID collision warning during SSR (#59625) |
| Commit | Type | Description |
|---|---|---|
| a62c84bc18 | fix | avoid applying the same replacements twice when cleaning up unused imports (#59656) |
| Commit | Type | Description |
|---|---|---|
| b2b3816cb1 | fix | clear renderer cache during HMR when using async animations (#59644) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.2"></a>
|  | update @ng/component URL to be relative (#
<a name="19.1.2"></a>
| Commit | Description |
|---|---|
update @ng/component URL to be relative (#59620) |
| Commit | Description |
|---|---|
| disable tree shaking during HMR (#59595) |
| Commit | Type | Description |
|---|---|---|
| 8dcd889987 | fix | update @ng/component URL to be relative (#59620) |
| Commit | Type | Description |
|---|---|---|
| 95a05bb202 | fix | disable tree shaking during HMR (#59595) |
| Commit | Type | Description |
|---|---|---|
| a4eb74c79c | fix | animation sometimes renderer not being destroyed during HMR (#59574) |
| 906413aba3 | fix | change Resource to use explicit undefined in its typings (#59024) |
| 4eb541837c | fix | cleanup _ejsa when app is destroyed (#59492) |
| 5497102769 | fix | cleanup stash listener when app is destroyed (#59598) |
| 266a8f2f2e | fix | handle shadow DOM encapsulated component with HMR (#59597) |
| 6f7716268a | fix | HMR not matching component that injects ViewContainerRef (#59596) |
| d12a186d53 | fix | treat exceptions in equal as part of computation (#55818) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.1"></a>
|  | run HMR replacement in the zone (#59562) |
| Commit | Type | Description |
|---|---|---|
| 357795cb96 | fix | run HMR replacement in the zone (#59562) |
| Commit | Type | Description |
|---|---|---|
| eb0b1851f4 | fix | roll back HMR fix (#59557) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.1.0"></a>
|  | expose component instance in NgComponentO
<a name="19.1.0"></a>
| Commit | Description |
|---|---|
| expose component instance in NgComponentOutlet (#58698) |
| Commit | Description |
|---|---|
| allow $any in two-way bindings (#59362) | |
| use chunk origin in template HMR request URL (#59459) |
| Commit | Description |
|---|---|
| check event side of two-way bindings (#59002) |
| Commit | Description |
|---|---|
| add schematic to clean up unused imports (#59353) | |
| resolve text replacement issue (#59452) |
| Commit | Description |
|---|---|
| avoid circular DI error in async renderer (#59256) |
| Commit | Description |
|---|---|
complete router events on dispose (#59327) |
| Commit | Type | Description |
|---|---|---|
| e4c50b3bea | feat | expose component instance in NgComponentOutlet (#58698) |
| Commit | Type | Description |
|---|---|---|
| ceadd28ea1 | fix | allow $any in two-way bindings (#59362) |
| aed49ddaaa | fix | use chunk origin in template HMR request URL (#59459) |
| Commit | Type | Description |
|---|---|---|
| c5c20e9d86 | fix | check event side of two-way bindings (#59002) |
| Commit | Type | Description |
|---|---|---|
| d010e11b73 | feat | add event listener options to renderer (#59092) |
| 57f3550219 | feat | add utility for resolving defer block information to ng global (#59184) |
| 22f191f763 | feat | extend the set of profiler events (#59183) |
| e894a5daea | feat | set kind field on template and effect nodes (#58865) |
| bd1f1294ae | feat | support TypeScript 5.7 (#58609) |
| 9870b643bf | fix | Defer afterRender until after first CD (#58250) |
| a5fc962094 | fix | Don't run effects in check no changes pass (#58250) |
| Commit | Type | Description |
|---|---|---|
| d298d25426 | feat | add schematic to clean up unused imports (#59353) |
| 14fb8ce4c0 | fix | resolve text replacement issue (#59452) |
| Commit | Type | Description |
|---|---|---|
| 8c5db3cfb7 | fix | avoid circular DI error in async renderer (#59256) |
| Commit | Type | Description |
|---|---|---|
| 52a6710f54 | fix | complete router events on dispose (#59327) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.0.7"></a>
|  | allow $any in two-way bindings (#59362) |
<a name="19.1.0-rc.0"></a>
| Commit | Description |
|---|---|
| allow $any in two-way bindings (#59362) |
| Commit | Description |
|---|---|
| account for more expression types when determining HMR dependencies (#59323) | |
| preserve defer block dependencies during HMR when class metadata is disabled (#59313) |
| Commit | Description |
|---|---|
| Defer afterRender until after first CD (#58250) | |
| Don't run effects in check no changes pass (#58250) | |
Ensure that a destroyed effect never run. (#59415) |
| Commit | Description |
|---|---|
| add schematic to clean up unused imports (#59353) |
| Commit | Description |
|---|---|
| avoid circular DI error in async renderer (#59256) | |
| styles not replaced during HMR when using animations renderer (#59393) |
| Commit | Description |
|---|---|
| avoid component ID collisions with user code (#59300) | |
complete router events on dispose (#59327) |
|  | add utility for resolving defer block inf
<a name="19.1.0-next.4"></a>
| Commit | Description |
|---|---|
| Warn user when transfer state happens more than once (#58935) |
|  | check event side of two-way bindings (#590
<a name="19.1.0-next.3"></a>
| Commit | Description |
|---|---|
| check event side of two-way bindings (#59002) | |
| consider pre-release versions when detecting feature support (#59061) | |
| error in unused standalone imports diagnostic (#59064) |
| Commit | Description |
|---|---|
| add event listener options to renderer (#59092) | |
| Fix a bug where snapshotted functions are being run twice if they return a nullish/falsey value. (#59073) |
| Commit | Description |
|---|---|
| collect external component styles from server rendering (#59031) |
# 19.1.0-next.2 (2024-12-04)
<a name="19.1.0-next.2"></a>
|  | account for multiple generated namespace i
<a name="19.1.0-next.1"></a>
| Commit | Description |
|---|---|
| account for multiple generated namespace imports in HMR (#58924) |
| Commit | Description |
|---|---|
| set kind field on template and effect nodes (#58865) | |
| Explicitly manage TracingSnapshot lifecycle and dispose of it once it's been used. (#58929) |
| Commit | Description |
|---|---|
| remove peer dependency on animations (#58997) |
|  | expose component instance in NgComponentO
|  | handle more node types when extracting dep
<a name="19.0.7"></a>
| Commit | Description |
|---|---|
| handle more node types when extracting dependencies (#59445) |
| Commit | Description |
|---|---|
| destroy renderer when replacing styles during HMR (#59514) |
| Commit | Description |
|---|---|
| incorrect stats when migrating queries with best effort mode (#59463) |
| Commit | Type | Description |
|---|---|---|
| 2b4b7c3ebf | fix | handle more node types when extracting dependencies (#59445) |
| Commit | Type | Description |
|---|---|---|
| f893d07232 | fix | destroy renderer when replacing styles during HMR (#59514) |
| Commit | Type | Description |
|---|---|---|
| eb2fcd1896 | fix | incorrect stats when migrating queries with best effort mode (#59463) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.0.6"></a>
|  | account for more expression types when det
<a name="19.0.6"></a>
| Commit | Description |
|---|---|
| account for more expression types when determining HMR dependencies (#59323) | |
| preserve defer block dependencies during HMR when class metadata is disabled (#59313) |
| Commit | Description |
|---|---|
Ensure that a destroyed effect never run. (#59415) |
| Commit | Description |
|---|---|
| avoid circular DI error in async renderer (#59271) | |
| styles not replaced during HMR when using animations renderer (#59393) |
| Commit | Description |
|---|---|
| avoid component ID collisions with user code (#59300) |
| Commit | Type | Description |
|---|---|---|
| 06a55e9817 | fix | account for more expression types when determining HMR dependencies (#59323) |
| 17fb20f85d | fix | preserve defer block dependencies during HMR when class metadata is disabled (#59313) |
| Commit | Type | Description |
|---|---|---|
| 07afce81b8 | fix | Ensure that a destroyed effect never run. (#59415) |
| Commit | Type | Description |
|---|---|---|
| dbb8980d03 | fix | avoid circular DI error in async renderer (#59271) |
| 6d00efde95 | fix | styles not replaced during HMR when using animations renderer (#59393) |
| Commit | Type | Description |
|---|---|---|
| 144bccb687 | fix | avoid component ID collisions with user code (#59300) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.0.5"></a>
|  | avoid triggering on timer and on idle on t
| Commit | Type | Description |
|---|---|---|
| 3793218e77 | fix | avoid triggering on timer and on idle on the server (#59177) |
| cfc96ed82c | fix | Fix nested timer serialization (#59173) |
| Commit | Type | Description |
|---|---|---|
| 9085a8fbd8 | fix | Warn user when transfer state happens more than once (#58935) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.0.4"></a>
|  | consider pre-release versions when detect
<a name="19.0.4"></a>
| Commit | Description |
|---|---|
| consider pre-release versions when detecting feature support (#59061) | |
| error in unused standalone imports diagnostic (#59064) |
| Commit | Description |
|---|---|
| Fix a bug where snapshotted functions are being run twice if they return a nullish/falsey value. (#59073) |
| Commit | Description |
|---|---|
| collect external component styles from server rendering (#59031) |
| Commit | Type | Description |
|---|---|---|
| 7e612171709 | fix | consider pre-release versions when detecting feature support (#59061) |
| cd764a31152 | fix | error in unused standalone imports diagnostic (#59064) |
| Commit | Type | Description |
|---|---|---|
| 34ded10fa60 | fix | Fix a bug where snapshotted functions are being run twice if they return a nullish/falsey value. (#59073) |
| Commit | Type | Description |
|---|---|---|
| ae0802d63c5 | fix | collect external component styles from server rendering (#59031) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.0.3"></a>
# 19.0.3 (2024-12-04)
<a name="19.0.3"></a>
|  | account for multiple generated namespace i
<a name="19.0.2"></a>
| Commit | Description |
|---|---|
| account for multiple generated namespace imports in HMR (#58924) |
| Commit | Description |
|---|---|
| Explicitly manage TracingSnapshot lifecycle and dispose of it once it's been used. (#58929) |
| Commit | Description |
|---|---|
| remove peer dependency on animations (#58997) |
| Commit | Type | Description |
|---|---|---|
| 9f99196d23 | fix | account for multiple generated namespace imports in HMR (#58924) |
| Commit | Type | Description |
|---|---|---|
| 4792db9a6d | fix | Explicitly manage TracingSnapshot lifecycle and dispose of it once it's been used. (#58929) |
| Commit | Type | Description |
|---|---|---|
| 7b5bacc228 | fix | class content being deleted in some edge cases (#58959) |
| d1cbdd6acb | fix | correctly strip away parameters surrounded by comments in inject migration (#58959) |
| e17ff71c31 | fix | don't migrate classes with parameters that can't be injected (#58959) |
| 7c5f990001 | fix | inject migration aggressively removing imports (#58959) |
| 4392ccedf9 | fix | inject migration dropping code if everything except super is removed (#58959) |
| 9cbebc6dda | fix | preserve type literals and tuples in inject migrations (#58959) |
| Commit | Type | Description |
|---|---|---|
| f3c388ecda | fix | remove peer dependency on animations (#58997) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.13"></a>
|  | more accurate diagnostics for host binding
<a name="19.0.1"></a>
| Commit | Description |
|---|---|
| more accurate diagnostics for host binding parser errors (#58870) |
| Commit | Description |
|---|---|
| work around TypeScript 5.7 issue (#58731) |
| Commit | Description |
|---|---|
| add fix for individual unused imports (#58719) | |
| allow fixes to run without template info (#58719) |
| Commit | Type | Description |
|---|---|---|
| fb1fa8b0fc | fix | more accurate diagnostics for host binding parser errors (#58870) |
| Commit | Type | Description |
|---|---|---|
| 502ee0e722 | fix | correctly clear template HMR internal renderer cache (#58724) |
| 99715104a1 | fix | correctly perform lazy routes migration for components with additional decorators (#58796) |
| 118803035f | fix | Ensure _tick is always run within the TracingSnapshot. (#58881) |
| 08b9452f01 | fix | Ensure resource sets an error (#58855) |
| 84f45ea3ff | fix | make component id generation more stable between client and server builds (#58813) |
| d3491c7cee | fix | Prevents race condition of cleanup for incremental hydration (#58722) |
| Commit | Type | Description |
|---|---|---|
| 4dfe5b6cef | fix | work around TypeScript 5.7 issue (#58731) |
| Commit | Type | Description |
|---|---|---|
| a983865bff | fix | add fix for individual unused imports (#58719) |
| e6e7a4e22b | fix | allow fixes to run without template info (#58719) |
| Commit | Type | Description |
|---|---|---|
| 5ce10264a4 | fix | fix provide-initializer migration when using useFactory (#58518) |
| d4f5c85f60 | fix | handle parameters with initializers in inject migration (#58769) |
| a6d2d2dc10 | fix | Mark hoisted properties as removed in inject migration (#58804) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.0.0"></a>
|  | avoid breaking change with apps using rxjs…
<a name="19.0.0"></a>
Explore Angular v19 with a blog post from the Angular team: https://blog.angular.dev/meet-angular-v19-7b29dfd05b84
this.foo property reads no longer refer to template context variables. If you intended to read the template variable, do not use this..Angular directives, components and pipes are now standalone by default.
standalone: false for declarations that are currently declared in @NgModules.ng update for v19 will take care of this automatically.TypeScript versions less than 5.5 are no longer supported.
Timing changes for effect API (in developer preview):
effects which are triggered outside of change detection run as part of the change detection process instead of as a microtask. Depending on the specifics of application/test setup, this can result in them executing earlier or later (or requiring additional test steps to trigger; see below examples).
effects which are triggered during change detection (e.g. by input signals) run earlier, before the component's template.
ExperimentalPendingTasks has been renamed to PendingTasks.
The autoDetect feature of ComponentFixture will now
attach the fixture to the ApplicationRef. As a result, errors during
automatic change detection of the fixture be reported to the ErrorHandler.
This change may cause custom error handlers to observe new failures that were previously unreported.
createComponent will now render default fallback with empty projectableNodes.
projectableNodes in the createComponent API, the default fallback content
of the ng-content will be rendered if present. To prevent rendering the default content, pass document.createTextNode('') as a projectableNode.// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });
Errors that are thrown during ApplicationRef.tick
will now be rethrown when using TestBed. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:
expect(() => TestBed.inject(ApplicationRef).tick()).toThrow()TestBed will reject any outstanding ComponentFixture.whenStable promises. A jasmine test,
for example, could write expectAsync(fixture.whenStable()).toBeRejected().As a last resort, you can configure errors to not be rethrown by
setting rethrowApplicationErrors to false in TestBed.configureTestingModule.
The timers that are used for zone coalescing and hybrid
mode scheduling (which schedules an application state synchronization
when changes happen outside the Angular zone) will now run in the zone
above Angular rather than the root zone. This will mostly affect tests
which use fakeAsync: these timers will now be visible to fakeAsync
and can be affected by tick or flush.
The deprecated factories property in KeyValueDiffers has been removed.
name option in the ng add @localize`` schematic has been removed in favor of the project option.BrowserModule.withServerTransition method has been removed. Please use the APP_ID DI token to set the application id instead.Router.errorHandler property has been removed.
Adding an error handler should be configured in either
withNavigationErrorHandler with provideRouter or the errorHandler
property in the extra options of RouterModule.forRoot. In addition,
the error handler cannot be used to change the return value of the
router navigation promise or prevent it from rejecting. Instead, if you
want to prevent the promise from rejecting, use resolveNavigationPromiseOnError.Resolve interface now includes
RedirectCommand.| Commit | Description |
|---|---|
support output()-shaped outputs (#57535) |
|
switch to ComponentRef.setInput & remove custom scheduler (#56728) |
| Commit | Description |
|---|---|
| add ability to clear a FormRecord (#50750) | |
| fix FormRecord type inference (#50750) |
| Commit | Description |
|---|---|
promote withRequestsMadeViaParent to stable. (#58221) |
|
| preserve all headers from Headers object (#57802) |
| Commit | Description |
|---|---|
remove deprecated name option. (#58063) |
| Commit | Description |
|---|---|
| correctly add external stylesheets to ShadowDOM components (#58482) | |
remove deprecated BrowserModule.withServerTransition method (#58062) |
| Commit | Description |
|---|---|
destroy PlatformRef when error happens during the bootstrap() phase (#58112) |
| Commit | Description |
|---|---|
| allow specifying maxAge for entire application (#49601) | |
| finish implementation of refreshAhead feature (#53356) |
Blog post: https://blog.angular.dev/meet-angular-v19-7b29dfd05b84
this.foo property reads no longer refer to template context variables. If you intended to read the template variable, do not use this..:where() and :is(),
parsing of :host and host-context, parsing selectors within pseudo selector arguments (for instance comma separated selectors).
These changes could lead to a different specificity of the resulting selectors and/or previously broken selectors being applied now,
for example :where(:host) used to transform to :where()[ng-host] and is being :where([ng-host]) now. Unlike the previous outcome,
the new result can target elements and therefore could lead to breakages.Angular directives, components and pipes are now standalone by default.
standalone: false for declarations that are currently declared in @NgModules.ng update for v19 will take care of this automatically.TypeScript versions less than 5.5 are no longer supported.
Timing changes for effect API (in developer preview):
effects which are triggered outside of change detection run as part of the change detection process instead of as a microtask. Depending on the specifics of application/test setup, this can result in them executing earlier or later (or requiring additional test steps to trigger; see below examples).
effects which are triggered during change detection (e.g. by input signals) run earlier, before the component's template.
ExperimentalPendingTasks has been renamed to PendingTasks.
The autoDetect feature of ComponentFixture will now
attach the fixture to the ApplicationRef. As a result, errors during
automatic change detection of the fixture be reported to the ErrorHandler.
This change may cause custom error handlers to observe new failures that were previously unreported.
createComponent will now render default fallback with empty projectableNodes.
projectableNodes in the createComponent API, the default fallback content
of the ng-content will be rendered if present. To prevent rendering the default content, pass document.createTextNode('') as a projectableNode.// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });
Errors that are thrown during ApplicationRef.tick
will now be rethrown when using TestBed. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:
expect(() => TestBed.inject(ApplicationRef).tick()).toThrow()TestBed will reject any outstanding ComponentFixture.whenStable promises. A jasmine test,
for example, could write expectAsync(fixture.whenStable()).toBeRejected().As a last resort, you can configure errors to not be rethrown by
setting rethrowApplicationErrors to false in TestBed.configureTestingModule.
The timers that are used for zone coalescing and hybrid
mode scheduling (which schedules an application state synchronization
when changes happen outside the Angular zone) will now run in the zone
above Angular rather than the root zone. This will mostly affect tests
which use fakeAsync: these timers will now be visible to fakeAsync
and can be affected by tick or flush.
The deprecated factories property in KeyValueDiffers has been removed.
name option in the ng add @localize``schematic has been removed in favor of theproject option.BrowserModule.withServerTransition method has been removed. Please use the APP_ID DI token to set the application id instead.Router.errorHandler property has been removed.
Adding an error handler should be configured in either
withNavigationErrorHandler with provideRouter or the errorHandler
property in the extra options of RouterModule.forRoot. In addition,
the error handler cannot be used to change the return value of the
router navigation promise or prevent it from rejecting. Instead, if you
want to prevent the promise from rejecting, use resolveNavigationPromiseOnError.Resolve interface now includes
RedirectCommand.| Commit | Type | Description |
|---|---|---|
| 24c6373820 | feat | add optional rounded transform support in cloudinary image loader (#55364) |
| 50f08e6c4b | feat | automatically use sizes auto in NgOptimizedImage (#57479) |
| 13c13067bc | feat | disable keyvalue sorting using null compareFn (#57487) |
| Commit | Type | Description |
|---|---|---|
| a2e4ee0cb3 | feat | add diagnostic for unused standalone imports (#57605) |
| 0c9d721ac1 | feat | add support for the typeof keyword in template expressions. (#58183) |
| 09f589f000 | fix | this.a should always refer to class property a (#55183) |
| 98804fd4be | fix | add more specific matcher for hydrate never block (#58360) |
| b25121ee4a | fix | avoid having to duplicate core environment (#58444) |
| 560282aa9b | fix | control flow nodes with root at the end projected incorrectly (#58607) |
| 2be161d015 | fix | fix :host parsing in pseudo-selectors (#58681) |
| 806a61b5a6 | fix | fix multiline selectors (#58681) |
| a3cb530d84 | fix | handle typeof expressions in serializer (#58217) |
| ba4340875a | fix | ignore placeholder-only i18n messages (#58154) |
| e5d3abb298 | fix | resolve :host:host-context(.foo) (#58681) |
| 80f56954ce | fix | transform chained pseudo-selectors (#58681) |
| Commit | Type | Description |
|---|---|---|
| d9687f43dd | feat | 'strictStandalone' flag enforces standalone (#57935) |
| 9e87593055 | feat | ensure template style elements are preprocessed as inline styles (#57429) |
| 231e6ff6ca | feat | generate the HMR replacement module (#58205) |
| dbe612f2cd | fix | disable standalone by default on older versions of Angular (#58405) |
| d4d76ead80 | fix | do not fail fatal when references to non-existent module are discovered (#58515) |
| 33fe252c58 | fix | do not report unused declarations coming from an imported array (#57940) |
| fb44323c51 | fix | incorrectly generating relative file paths on case-insensitive platforms (#58150) |
| 22cd6869ef | fix | make the unused imports diagnostic easier to read (#58468) |
| 9bbb01c85e | fix | report individual diagnostics for unused imports (#58589) |
| 4716c3b966 | perf | reduce duplicate component style resolution (#57502) |
| Commit | Type | Description |
|---|---|---|
| 6ea8e1e9aa | feat | Add a schematics to migrate to standalone: false. (#57643) |
| 3ebe6b4ad4 | feat | Add async run method on ExperimentalPendingTasks (#56546) |
| 69fc5ae922 | feat | Add incremental hydration public api (#58249) |
| 8ebbae88ca | feat | Add rxjs operator prevent app stability until an event (#56533) |
| 19edf2c057 | feat | add syntactic sugar for initializers (#53152) |
| c93b510f9b | feat | allow passing undefined without needing to include it in the type argument of input (#57621) |
| ab25a192ba | feat | allow running output migration on a subset of paths (#58299) |
| fc59e2a7b7 | feat | change effect() execution timing & no-op allowSignalWrites (#57874) |
| 8bcc663a53 | feat | drop support for TypeScript 5.4 (#57577) |
| 18d8d44b1f | feat | experimental resource() API for async dependencies (#58255) |
| 9762b24b5e | feat | experimental impl of rxResource() (#58255) |
| 6b8c494d05 | feat | flipping the default value for standalone to true (#58169) |
| e6e5d29e83 | feat | initial version of the output migration (#57604) |
| be2e49639b | feat | introduce afterRenderEffect (#57549) |
| ec386e7f12 | feat | introduce debugName optional arg to framework signal functions (#57073) |
| 8311f00faa | feat | introduce the reactive linkedSignal (#58189) |
| 1b1519224d | feat | mark input, output and model APIs as stable (#57804) |
| a7eff3ffaa | feat | mark signal-based query APIs as stable (#57921) |
| a1f229850a | feat | migrate ExperimentalPendingTasks to PendingTasks (#57533) |
| 3f1e7ab6ae | feat | promote outputFromObservable & outputToObservable to stable. (#58214) |
| 97c44a1d6c | feat | Promote takeUntilDestroyed to stable. (#58200) |
| e5adf92965 | feat | stabilize @let syntax (#57813) |
| b063468027 | feat | support TypeScript 5.6 (#57424) |
| 819ff034ce | feat | treat directives, pipes, components as by default (#58229) |
| ee426c62f0 | fix | allow signal write error (#57973) |
| c095679f92 | fix | avoid breaking change with apps using rxjs 6.x (#58341) |
| 71ee81af2c | fix | clean up event contract once hydration is done (#58174) |
| f03d274e87 | fix | ComponentFixture autoDetect feature works like production (#55228) |
| 950a5540f1 | fix | Ensure the ViewContext is retained after closure minification (#57903) |
| 7b1e5be20b | fix | fallback to default ng-content with empty projectable nodes. (#57480) |
| 0300dd2e18 | fix | Fix fixture.detectChanges with autoDetect disabled and zoneless (#57416) |
| 5fe57d4fbb | fix | fixes issues with control flow and incremental hydration (#58644) |
| 51933ef5a6 | fix | prevent errors on contract cleanup (#58614) |
| fd7716440b | fix | Prevents trying to trigger incremental hydration on CSR (#58366) |
| 656b5d3e78 | fix | Re-assign error codes to be within core bounds (<1000) (#53455) |
| 6e0af6dbbb | fix | resolve forward-referenced host directives during directive matching (#58492) |
| 468d3fb9b1 | fix | rethrow errors during ApplicationRef.tick in TestBed (#57200) |
| 226a67dabb | fix | Schedulers run in zone above Angular rather than root (#57553) |
| 97fb86d331 | perf | set encapsulation to None for empty component styles (#57130) |
| c15ec36bd1 | refactor | remove deprecated factories Property in KeyValueDiffers (#58064) |
| Commit | Type | Description |
|---|---|---|
| fe5c4e086a | fix | support output()-shaped outputs (#57535) |
| 0cebfd7462 | fix | switch to ComponentRef.setInput & remove custom scheduler (#56728) |
| Commit | Type | Description |
|---|---|---|
| 3e7d724037 | feat | add ability to clear a FormRecord (#50750) |
| 18b6f3339f | fix | fix FormRecord type inference (#50750) |
| Commit | Type | Description |
|---|---|---|
| 4b9accdf16 | feat | promote withRequestsMadeViaParent to stable. (#58221) |
| 057cf7fb6b | fix | preserve all headers from Headers object (#57802) |
| Commit | Type | Description |
|---|---|---|
| 8da9fb49b5 | feat | add code fix for unused standalone imports (#57605) |
| 1f067f4507 | feat | add code reactoring action to migrate @Input to signal-input (#57214) |
| 56ee47f2ec | feat | allow code refactorings to compute edits asynchronously (#57214) |
| bc83fc1e2e | feat | support converting to signal queries in VSCode extension (#58106) |
| 5c4305f024 | feat | support migrating full classes to signal inputs in VSCode (#57975) |
| 6342befff8 | feat | support migrating full classes to signal queries (#58263) |
| 7ecfd89592 | fix | The suppress diagnostics option should work for external templates (#57873) |
| Commit | Type | Description |
|---|---|---|
| 9c3bd1b5d1 | refactor | remove deprecated name option. (#58063) |
| Commit | Type | Description |
|---|---|---|
| dff4de0f75 | feat | add a combined migration for all signals APIs (#58259) |
| b6bc93803c | feat | add schematic to migrate to signal queries (#58032) |
| 2bfc64daf1 | feat | expose output as function migration (#58299) |
| 59fe9bc772 | feat | introduce signal input migration as ng generate schematic (#57805) |
| 90c7ec39a0 | fix | inject migration always inserting generated variables before super call (#58393) |
| 7a65cdd911 | fix | inject migration not inserting generated code after super call in some cases (#58393) |
| c1aa411cf1 | fix | properly resolve tsconfig paths on windows (#58137) |
| e26797b38e | fix | replace removed NgModules in tests with their exports (#58627) |
| Commit | Type | Description |
|---|---|---|
| c36a1c023b | fix | correctly add external stylesheets to ShadowDOM components (#58482) |
| 5c61f46409 | refactor | remove deprecated BrowserModule.withServerTransition method (#58062) |
| Commit | Type | Description |
|---|---|---|
| 9e82559de4 | fix | destroy PlatformRef when error happens during the bootstrap() phase (#58112) |
| Commit | Type | Description |
|---|---|---|
| f271021e19 | feat | Add routerOutletData input to RouterOutlet directive (#57051) |
| b2790813a6 | fix | Align RouterModule.forRoot errorHandler with provider error handler (#57050) |
| a49c35ec76 | fix | remove setter for injector on OutletContext (#58343) |
| 7436d3180e | fix | Update Resolve interface to include RedirectCommand like ResolveFn (#57309) |
| Commit | Type | Description |
|---|---|---|
| 8ddce80a0b | feat | allow specifying maxAge for entire application (#49601) |
| 1479af978c | feat | finish implementation of refreshAhead feature (#53356) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.12"></a>
|  | fix :host parsing in pseudo-selectors (#58
<a name="19.0.0-rc.3"></a>
| Commit | Description |
|---|---|
fix :host parsing in pseudo-selectors (#58681) |
|
| fix multiline selectors (#58681) | |
resolve :host:host-context(.foo) (#58681) |
|
| transform chained pseudo-selectors (#58681) |
| Commit | Description |
|---|---|
| do not migrate next calls in template if not an EventEmitter (#58631) |
|  | control flow nodes with root at the end pr
<a name="19.0.0-rc.2"></a>
| Commit | Description |
|---|---|
| control flow nodes with root at the end projected incorrectly (#58607) |
| Commit | Description |
|---|---|
| correct extraction of generics from type aliases (#58548) | |
| report individual diagnostics for unused imports (#58589) |
| Commit | Description |
|---|---|
| clean up event contract once hydration is done (#58174) | |
| fixes issues with control flow and incremental hydration (#58644) | |
| prevent errors on contract cleanup (#58614) |
| Commit | Description |
|---|---|
| include the output migration in the defaults of the signal migration (#58635) | |
| replace removed NgModules in tests with their exports (#58627) |
|  | avoid having to duplicate core environment
<a name="19.0.0-rc.1"></a>
| Commit | Description |
|---|---|
| avoid having to duplicate core environment (#58444) |
| Commit | Description |
|---|---|
| do not fail fatal when references to non-existent module are discovered (#58515) | |
| make the unused imports diagnostic easier to read (#58468) |
| Commit | Description |
|---|---|
| avoid slow stringification when checking for duplicates in dev mode (#58521) | |
| resolve forward-referenced host directives during directive matching (#58492) |
| Commit | Description |
|---|---|
| flip the default standalone flag in route-lazy-loading migration (#58474) | |
| properly bundle shared compiler code into migrations (#58515) |
| Commit | Description |
|---|---|
| correctly add external stylesheets to ShadowDOM components (#58482) |
|  | avoid breaking change with apps using rxj…
<a name="19.0.0-rc.0"></a>
| Commit | Description |
|---|---|
| add more specific matcher for hydrate never block (#58360) |
| Commit | Description |
|---|---|
| disable standalone by default on older versions of Angular (#58405) |
| Commit | Description |
|---|---|
| avoid breaking change with apps using rxjs 6.x (#58341) | |
| Prevents trying to trigger incremental hydration on CSR (#58366) |
| Commit | Description |
|---|---|
| Adding arb format to the list of valid formats in the localization extractor cli (#58287) |
| Commit | Description |
|---|---|
remove setter for injector on OutletContext (#58343) |
|  | add optional rounded transform support in
<a name="19.0.0-next.11"></a>
| Commit | Description |
|---|---|
| add optional rounded transform support in cloudinary image loader (#55364) | |
| disable keyvalue sorting using null compareFn (#57487) |
| Commit | Description |
|---|---|
| report when NgModule imports or exports itself (#58231) |
| Commit | Description |
|---|---|
| add ability to clear a FormRecord (#50750) | |
| fix FormRecord type inference (#50750) |
| Commit | Description |
|---|---|
promote withRequestsMadeViaParent to stable. (#58221) |
| Commit | Description |
|---|---|
| support migrating full classes to signal queries (#58263) |
| Commit | Description |
|---|---|
| allow specifying maxAge for entire application (#49601) |
|  | add support for the typeof keyword in tem
<a name="19.0.0-next.10"></a>
| Commit | Description |
|---|---|
add support for the typeof keyword in template expressions. (#58183) |
|
| handle typeof expressions in serializer (#58217) | |
| ignore placeholder-only i18n messages (#58154) |
| Commit | Description |
|---|---|
| generate the HMR replacement module (#58205) | |
| incorrectly generating relative file paths on case-insensitive platforms (#58150) |
standalone: false for declarations that are currently declared in @NgModules. ng update for v19 will take care of this automatically.|  | remove deprecated factories Property…
<a name="19.0.0-next.9"></a>
| Commit | Description |
|---|---|
| defer symbols only used in types (#58104) |
| Commit | Description |
|---|---|
| support converting to signal queries in VSCode extension (#58106) |
| Commit | Description |
|---|---|
remove deprecated name option. (#58063) |
| Commit | Description |
|---|---|
| properly resolve tsconfig paths on windows (#58137) |
| Commit | Description |
|---|---|
remove deprecated BrowserModule.withServerTransition method (#58062) |
| Commit | Description |
|---|---|
destroy PlatformRef when error happens during the bootstrap() phase (#58112) |
| Commit | Description |
|---|---|
| finish implementation of refreshAhead feature (#53356) |
this.foo property reads no longer refer to template context variables. If you intended to read the template variable, do not use this..factories property in KeyValueDiffers has been removed.name option in the ng add @angular/localize schematic has been removed in favor of the project option.BrowserModule.withServerTransition method has been removed. Please use the APP_ID DI token to set the application id instead.|  | execute checks and remove placeholder when
<a name="19.0.0-next.8"></a>
| Commit | Description |
|---|---|
| execute checks and remove placeholder when image is already loaded (#55444) | |
| prevent warning about oversize image twice (#58021) | |
| skip checking whether SVGs are oversized (#57966) |
| Commit | Description |
|---|---|
| provide flag to opt into manual cleanup for after render hooks (#57917) |
| Commit | Description |
|---|---|
| cleanup JSONP script listeners once loading completed (#57877) | |
| preserve all headers from Headers object (#57802) |
| Commit | Description |
|---|---|
| support migrating full classes to signal inputs in VSCode (#57975) |
| Commit | Description |
|---|---|
| add schematic to migrate to signal queries (#58032) | |
| delete constructor if it only has super call (#58013) |
| Commit | Description |
|---|---|
| support input signal bindings (#57020) |
|  | change effect() execution timing & no-op
<a name="19.0.0-next.7"></a>
| Commit | Description |
|---|---|
| The suppress diagnostics option should work for external templates (#57873) |
Generally this PR has two implications:
effects which are triggered outside of change detection run as part of the change detection process instead of as a microtask. Depending on the specifics of application/test setup, this can result in them executing earlier or later (or requiring additional test steps to trigger; see below examples).
effects which are triggered during change detection (e.g. by input signals) run earlier, before the component's template.
We've seen a few common failure cases:
Tests which used to rely on the Promise timing of effects now need to
await whenStable() or call .detectChanges() in order for effects to
run.
Tests which use faked clocks may need to fast-forward/flush the clock to cause effects to run.
effect()s triggered during CD could rely on the application being fully
rendered (for example, they could easily read computed styles, etc). With
the change, they run before the component's updates and can get incorrect
answers. The recent afterRenderEffect() API is a natural replacement for
this style of effect.
effect()s which synchronize with the forms system are particularly
timing-sensitive and might need to adjust their initialization timing.
ExperimentalPendingTasks has been renamed to
PendingTasks.
|  | extended diagnostics not validating ICUs (
<a name="19.0.0-next.6"></a>
| Commit | Description |
|---|---|
| extended diagnostics not validating ICUs (#57845) |
| Commit | Description |
|---|---|
introduce signal input migration as ng generate schematic (#57805) |
|
| account for explicit standalone: false in migration (#57803) |
|  | allow passing undefined without needing t
|  | produce less noisy errors when parsing con
<a name="19.0.0-next.4"></a>
| Commit | Description |
|---|---|
| produce less noisy errors when parsing control flow (#57711) |
| Commit | Description |
|---|---|
Add a schematics to migrate to standalone: false. (#57643) |
|  | add diagnostic for unused standalone impo
<a name="19.0.0-next.3"></a>
| Commit | Description |
|---|---|
| add diagnostic for unused standalone imports (#57605) |
| Commit | Description |
|---|---|
| drop support for TypeScript 5.4 (#57577) | |
| initial version of the output migration (#57604) | |
introduce afterRenderEffect (#57549) |
| Commit | Description |
|---|---|
support output()-shaped outputs (#57535) |
| Commit | Description |
|---|---|
| Dynamicaly call the global fetch implementation (#57531) |
|  | automatically use sizes auto in NgOptimi
<a name="19.0.0-next.2"></a>
| Commit | Description |
|---|---|
| automatically use sizes auto in NgOptimizedImage (#57479) |
| Commit | Description |
|---|---|
| reduce duplicate component style resolution (#57502) |
| Commit | Description |
|---|---|
switch to ComponentRef.setInput & remove custom scheduler (#56728) |
| Commit | Description |
|---|---|
| Dynamicaly call the global fetch implementation (#57531) |
| Commit | Description |
|---|---|
| Do not unnecessarily run matcher twice on route matching (#57530) |
| Commit | Description |
|---|---|
| Address Trusted Types violations in @angular/upgrade (#57454) |
Render default fallback with empty projectableNodes.
When passing an empty array to projectableNodes in the createComponent API, the default fallback content of the ng-content will be rendered if present. To prevent rendering the default content, pass document.createTextNode('') as a projectableNode.
For example:
// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });
// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });
The timers that are used for zone coalescing and hybrid
mode scheduling (which schedules an application state synchronization
when changes happen outside the Angular zone) will now run in the zone
above Angular rather than the root zone. This will mostly affect tests
which use fakeAsync: these timers will now be visible to fakeAsync
and can be affected by tick or flush.
|  | ensure template style elements are prepro
<a name="19.0.0-next.1"></a>
| Commit | Description |
|---|---|
| ensure template style elements are preprocessed as inline styles (#57429) |
| Commit | Description |
|---|---|
| account for members with doc strings and no modifiers (#57389) | |
| avoid migrating route component in tests (#57317) | |
| preserve type when using inject decorator (#57389) |
autoDetect feature of ComponentFixture will now
attach the fixture to the ApplicationRef. As a result, errors during
automatic change detection of the fixture be reported to the ErrorHandler.
This change may cause custom error handlers to observe new failures that were previously unreported.|  | rethrow errors during ApplicationRef.tick
<a name="19.0.0-next.0"></a>
| Commit | Description |
|---|---|
| rethrow errors during ApplicationRef.tick in TestBed (#57200) |
Errors that are thrown during ApplicationRef.tick
will now be rethrown when using TestBed. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:
expect(() => TestBed.inject(ApplicationRef).tick()).toThrow()TestBed will reject any outstanding ComponentFixture.whenStable promises. A jasmine test,
for example, could write expectAsync(fixture.whenStable()).toBeRejected().As a last resort, you can configure errors to not be rethrown by
setting rethrowApplicationErrors to false in TestBed.configureTestingModule.
Router.errorHandler property has been removed.
Adding an error handler should be configured in either
withNavigationErrorHandler with provideRouter or the errorHandler
property in the extra options of RouterModule.forRoot. In addition,
the error handler cannot be used to change the return value of the
router navigation promise or prevent it from rejecting. Instead, if you
want to prevent the promise from rejecting, use resolveNavigationPromiseOnError.Resolve interface now includes
RedirectCommand.|  | introduce BootstrapContext for improved se
| Commit | Description |
|---|---|
introduce BootstrapContext for improved server bootstrapping (#63640) |
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
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.
(cherry picked from commit 8bf80c9d2314b4f2bcf3df83ae01552a6fc49834)
| Commit | Type | Description |
|---|---|---|
| 9d1fb33f5e | fix | introduce BootstrapContext for improved server bootstrapping (#63640) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.2.15"></a>
|  | take care of tests that import both HttpCl
| Commit | Type | Description |
|---|---|---|
| 06d70a25ea | fix | take care of tests that import both HttpClientModule & HttpClientTestingModule. (#58777) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="19.0.1"></a>
|  | correct extraction of generics from type a
| Commit | Type | Description |
|---|---|---|
| 4c38160853 | fix | correct extraction of generics from type aliases (#58548) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.11"></a>
|  | avoid slow stringification when checking f
| Commit | Type | Description |
|---|---|---|
| 5f2d98a1b1 | fix | avoid slow stringification when checking for duplicates in dev mode (#58521) |
| 3aa45a2fa1 | fix | resolve forward-referenced host directives during directive matching (#58492) (#58500) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.10"></a>
|  | transform pseudo selectors correctly for
| Commit | Type | Description |
|---|---|---|
| 69dce38e778 | fix | transform pseudo selectors correctly for the encapsulated view. (#58417) |
| Commit | Type | Description |
|---|---|---|
| 3b989ac5bd9 | fix | Adding arb format to the list of valid formats in the localization extractor cli (#58287) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.9"></a>
|  | report when NgModule imports or exports it
| Commit | Type | Description |
|---|---|---|
| b0ab653965 | fix | report when NgModule imports or exports itself (#58231) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.8"></a>
|  | add multiple :host and nested selectors su
<a name="18.2.8"></a>
| Commit | Description |
|---|---|
| defer symbols only used in types (#58104) |
| Commit | Description |
|---|---|
| clean up afterRender after it is executed (#58119) |
| Commit | Description |
|---|---|
destroy PlatformRef when error happens during the bootstrap() phase (#58112) (#58135) |
| Commit | Type | Description |
|---|---|---|
| 11692c8dab | fix | add multiple :host and nested selectors support (#57796) |
| 66dcc691f5 | fix | allow combinators inside pseudo selectors (#57796) |
| 48a1437e77 | fix | fix comment typo (#57796) |
| d325f9b55f | fix | fix parsing of the :host-context with pseudo selectors (#57796) |
| aea747ab3b | fix | preserve attributes attached to :host selector (#57796) |
| 21be258be6 | fix | scope :host-context inside pseudo selectors, do not decrease specificity (#57796) |
| 7a6fd427d5 | fix | transform pseudo selectors correctly for the encapsulated view (#57796) |
| Commit | Type | Description |
|---|---|---|
| f187c3abf8 | fix | defer symbols only used in types (#58104) |
| Commit | Type | Description |
|---|---|---|
| 46bafb0b0a | fix | clean up afterRender after it is executed (#58119) |
| Commit | Type | Description |
|---|---|---|
| b40875a2cc | fix | destroy PlatformRef when error happens during the bootstrap() phase (#58112) (#58135) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.7"></a>
|  | execute checks and remove placeholder when
<a name="18.2.7"></a>
| Commit | Description |
|---|---|
| execute checks and remove placeholder when image is already loaded (#55444) | |
| prevent warning about oversize image twice (#58021) | |
| skip checking whether SVGs are oversized (#57966) |
| Commit | Description |
|---|---|
| correctly get the type of nested function call expressions (#57010) |
| Commit | Description |
|---|---|
| provide flag to opt into manual cleanup for after render hooks (#57917) |
| Commit | Description |
|---|---|
| cleanup JSONP script listeners once loading completed (#57877) |
| Commit | Description |
|---|---|
| delete constructor if it only has super call (#58013) |
| Commit | Description |
|---|---|
| support input signal bindings (#57020) |
| Commit | Type | Description |
|---|---|---|
| 249d0260f9 | fix | execute checks and remove placeholder when image is already loaded (#55444) |
| 46a2ad39f5 | fix | prevent warning about oversize image twice (#58021) |
| 8f2b0ede59 | fix | skip checking whether SVGs are oversized (#57966) |
| Commit | Type | Description |
|---|---|---|
| 901c1e1a7f | fix | correctly get the type of nested function call expressions (#57010) |
| Commit | Type | Description |
|---|---|---|
| 2f347ef8fc | fix | provide flag to opt into manual cleanup for after render hooks (#57917) |
| Commit | Type | Description |
|---|---|---|
| ca637fe6a9 | fix | cleanup JSONP script listeners once loading completed (#57877) |
| Commit | Type | Description |
|---|---|---|
| b9d846dad7 | fix | delete constructor if it only has super call (#58013) |
| Commit | Type | Description |
|---|---|---|
| e40a4fa3c7 | fix | support input signal bindings (#57020) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.6"></a>
# 18.2.6 (2024-09-25)
<a name="18.2.6"></a>
|  | extended diagnostics not validating ICUs (
<a name="18.2.5"></a>
| Commit | Description |
|---|---|
| extended diagnostics not validating ICUs (#57845) |
| Commit | Description |
|---|---|
Handle @let declaration with array when preparingForHydration (#57816) |
| Commit | Description |
|---|---|
| account for explicit standalone: false in migration (#57803) |
| Commit | Type | Description |
|---|---|---|
| e685ed883a | fix | extended diagnostics not validating ICUs (#57845) |
| Commit | Type | Description |
|---|---|---|
| 76709d5d6e | fix | Handle @let declaration with array when preparingForHydration (#57816) |
| Commit | Type | Description |
|---|---|---|
| 5c866942a1 | fix | account for explicit standalone: false in migration (#57803) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.4"></a>
|  | produce less noisy errors when parsing con
| Commit | Type | Description |
|---|---|---|
| b619d6987e | fix | produce less noisy errors when parsing control flow (#57711) |
| Commit | Type | Description |
|---|---|---|
| 9895e4492f | fix | replace leftover modules with their exports during pruning (#57684) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.3"></a>
|  | Dynamicaly call the global fetch implement
| Commit | Type | Description |
|---|---|---|
| de68e049e4 | fix | Dynamicaly call the global fetch implementation (#57531) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.2"></a>
|  | avoid leaking memory if component throws
<a name="18.2.2"></a>
| Commit | Description |
|---|---|
| avoid leaking memory if component throws during creation (#57546) | |
| Do not bubble capture events. (#57476) |
| Commit | Description |
|---|---|
| Dynamicaly call the global fetch implementation (#57531) |
| Commit | Description |
|---|---|
| Do not unnecessarily run matcher twice on route matching (#57530) |
| Commit | Description |
|---|---|
| Address Trusted Types violations in @angular/upgrade (#57454) |
| Commit | Type | Description |
|---|---|---|
| 106917af878 | fix | avoid leaking memory if component throws during creation (#57546) |
| 6d3a2af146a | fix | Do not bubble capture events. (#57476) |
| Commit | Type | Description |
|---|---|---|
| 5d2e243c76a | fix | Dynamicaly call the global fetch implementation (#57531) |
| Commit | Type | Description |
|---|---|---|
| 804925b1149 | fix | Do not unnecessarily run matcher twice on route matching (#57530) |
| Commit | Type | Description |
|---|---|---|
| 03ec620e31a | fix | Address Trusted Types violations in @angular/upgrade (#57454) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.1"></a>
|  | Allow zoneless scheduler to run inside fak
<a name="18.2.1"></a>
| Commit | Description |
|---|---|
Allow zoneless scheduler to run inside fakeAsync (#56932) |
|
| handle hydration of components that project content conditionally (#57383) |
| Commit | Description |
|---|---|
| account for members with doc strings and no modifiers (#57389) | |
| avoid migrating route component in tests (#57317) | |
| preserve type when using inject decorator (#57389) |
| Commit | Type | Description |
|---|---|---|
| 9de30a7b1c | fix | Allow zoneless scheduler to run inside fakeAsync (#56932) |
| 286012fb89 | fix | handle hydration of components that project content conditionally (#57383) |
| Commit | Type | Description |
|---|---|---|
| 0bb649b8fa | fix | account for members with doc strings and no modifiers (#57389) |
| 3b63082384 | fix | avoid migrating route component in tests (#57317) |
| 6b4357fae4 | fix | preserve type when using inject decorator (#57389) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.0"></a>
|  | Deprecate ignoreChangesOutsideZone option…
<a name="18.2.0"></a>
| Commit | Description |
|---|---|
| Add extended diagnostic to warn when there are uncalled functions in event bindings (#56295) (#56295) |
| Commit | Description |
|---|---|
| support writing code refactorings (#56895) | |
| quick exit if no code fixes can exist (#57000) |
| Commit | Description |
|---|---|
| Add defaultQueryParamsHandling to router configuration (#57198) |
| Commit | Type | Description |
|---|---|---|
| c8e2885136 | feat | Add extended diagnostic to warn when there are uncalled functions in event bindings (#56295) (#56295) |
| Commit | Type | Description |
|---|---|---|
| 98ed5b609e | feat | run JIT transform on classes with jit: true opt-out (#56892) |
| c76b440ac0 | fix | add warning for unused let declarations (#57033) |
| 0f0a1f2836 | fix | emitting references to ngtypecheck files (#57138) |
| 6c2fbda694 | fix | extended diagnostic visitor not visiting template attributes (#57033) |
| e11c0c42d2 | fix | run JIT transforms on @NgModule classes with jit: true (#57212) |
| Commit | Type | Description |
|---|---|---|
| f7918f5272 | feat | Add 'flush' parameter option to fakeAsync to flush after the test (#57239) |
| fab673a1dd | feat | add ng generate schematic to convert to inject (#57056) |
| 7919982063 | feat | Add whenStable helper on ApplicationRef (#57190) |
| 3459289ef0 | feat | bootstrapModule can configure NgZone in providers (#57060) |
| 296216cbe1 | fix | Allow hybrid CD scheduling to support multiple "Angular zones" (#57267) |
| 8718abce90 | fix | Deprecate ignoreChangesOutsideZone option (#57029) |
| 827070e331 | fix | Do not run image performance warning checks on server (#57234) |
| ca89ef9141 | fix | handle shorthand assignment in the inject migration (#57134) |
| 5dcdbfcba9 | fix | rename the equality function option in toSignal (#56769) |
| 2a4f488a6c | fix | warnings for oversized images and lazy-lcp present with bootstrapModule (#57060) |
| Commit | Type | Description |
|---|---|---|
| 4bb558ab0c | feat | support writing code refactorings (#56895) |
| 7663debce1 | perf | quick exit if no code fixes can exist (#57000) |
| Commit | Type | Description |
|---|---|---|
| 147eee4253 | feat | add migration to convert standalone component routes to be lazy loaded (#56428) |
| cb442a0ce7 | fix | account for parameters with union types (#57127) |
| 166166d79e | fix | add alias to inject migration (#57127) |
| b1a9d0f4de | fix | avoid duplicating comments when generating properties (#57367) |
| 5d76401ff5 | fix | preserve optional parameters (#57367) |
| 1cf616f671 | fix | remove generic arguments from the injected type reference (#57127) |
| ba0df30ef6 | fix | remove unused imports in inject migration (#57179) |
| aae9646a1b | fix | unwrap injected forwardRef (#57127) |
| 604270619a | perf | speed up signal input migration by combining two analyze phases (#57318) |
| Commit | Type | Description |
|---|---|---|
| 6c76c91e15 | feat | Add defaultQueryParamsHandling to router configuration (#57198) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.1.5"></a>
|  | reduce chance of conflicts between generat
<a name="18.2.0-rc.0"></a>
| Commit | Description |
|---|---|
| reduce chance of conflicts between generated factory and local variables (#57181) |
| Commit | Description |
|---|---|
improve performance of interpolatedSignalNotInvoked extended diagnostic (#57291) |
| Commit | Description |
|---|---|
| Add 'flush' parameter option to fakeAsync to flush after the test (#57239) | |
| Add whenStable helper on ApplicationRef (#57190) |
fakeAsync will now flush pending timers at the end of
the given function by default. To opt-out of this, you can use {flush: false} in options parameter of fakeAsync|  | support JIT transforms before other transf
<a name="18.2.0-next.4"></a>
| Commit | Description |
|---|---|
| support JIT transforms before other transforms modifying classes (#57262) |
| Commit | Description |
|---|---|
| Do not run image performance warning checks on server (#57234) |
| Commit | Description |
|---|---|
| avoid generating TS suggestion diagnostics for templates (#56241) |
| Commit | Description |
|---|---|
| Add defaultQueryParamsHandling to router configuration (#57198) |
|  | reduce chance of conflicts between generat
<a name="18.2.0-next.3"></a>
| Commit | Description |
|---|---|
| reduce chance of conflicts between generated factory and local variables (#57181) |
| Commit | Description |
|---|---|
| emitting references to ngtypecheck files (#57138) | |
run JIT transforms on @NgModule classes with jit: true (#57212) |
|  | Deprecate ignoreChangesOutsideZone option…
<a name="18.2.0-next.2"></a>
| Commit | Description |
|---|---|
| limit the number of chained instructions (#57069) |
| Commit | Description |
|---|---|
| add warning for unused let declarations (#57033) | |
| add warning for unused let declarations (#57033) | |
| extended diagnostic visitor not visiting template attributes (#57033) |
|  | Don't run preconnect assertion on the serv
<a name="18.2.0-next.1"></a>
| Commit | Description |
|---|---|
| Don't run preconnect assertion on the server. (#56213) |
| Commit | Description |
|---|---|
| JIT mode incorrectly interpreting host directive configuration in partial compilation (#57002) | |
| use strict equality for 'code' comparison (#56944) |
| Commit | Description |
|---|---|
run JIT transform on classes with jit: true opt-out (#56892) |
|
| avoid emitting references to typecheck files in TS 5.4 (#56961) |
| Commit | Description |
|---|---|
| not all callbacks running when registered at the same time (#56981) |
| Commit | Description |
|---|---|
| support writing code refactorings (#56895) | |
| quick exit if no code fixes can exist (#57000) |
| Commit | Description |
|---|---|
| fix common module removal (#56968) |
|  | Add extended diagnostic to warn when ther
|  | generate valid TS 5.6 type checking code (
<a name="18.1.5"></a>
| Commit | Description |
|---|---|
| generate valid TS 5.6 type checking code (#57303) |
| Commit | Type | Description |
|---|---|---|
| 5401332b0e | fix | generate valid TS 5.6 type checking code (#57303) |
| Commit | Type | Description |
|---|---|---|
| e39b22a932 | fix | Account for addEventListener to be passed a Window or Document. (#57282) |
| db65bc25ca | fix | Account for addEventListener to be passed a Window or Document. (#57354) |
| 0e024ecc27 | fix | complete post-hydration cleanup in components that use ViewContainerRef (#57300) |
| 822db64b93 | fix | skip hydration for i18n nodes that were not projected (#57356) |
| 810f76f574 | fix | take skip hydration flag into account while hydrating i18n blocks (#57299) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.1.4"></a>
Your coding agent can read these notes before it upgrades. Set up the MCP server →