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
|  | reduce chance of conflicts between generat
<a name="18.1.4"></a>
| Commit | Description |
|---|---|
| reduce chance of conflicts between generated factory and local variables (#57181) |
| Commit | Description |
|---|---|
| support JIT transforms before other transforms modifying classes (#57262) | |
improve performance of interpolatedSignalNotInvoked extended diagnostic (#57291) |
| Commit | Description |
|---|---|
| avoid generating TS suggestion diagnostics for templates (#56241) |
| Commit | Type | Description |
|---|---|---|
| 6a99f83659 | fix | reduce chance of conflicts between generated factory and local variables (#57181) |
| Commit | Type | Description |
|---|---|---|
| afb05ff1cb | fix | support JIT transforms before other transforms modifying classes (#57262) |
| bae54a1621 | perf | improve performance of interpolatedSignalNotInvoked extended diagnostic (#57291) |
| Commit | Type | Description |
|---|---|---|
| 6ac209c24f | fix | avoid generating TS suggestion diagnostics for templates (#56241) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.1.3"></a>
One column per quarter.
|  | reduce chance of conflicts between generat
<a name="18.1.3"></a>
| Commit | Description |
|---|---|
| reduce chance of conflicts between generated factory and local variables (#57181) |
| Commit | Description |
|---|---|
| emitting references to ngtypecheck files (#57138) (#57202) |
| Commit | Description |
|---|---|
| errors during ApplicationRef.tick should be rethrown for zoneless tests (#56993) | |
| hydration error in some let declaration setups (#57173) |
| Commit | Type | Description |
|---|---|---|
| 31dea066d6 | fix | reduce chance of conflicts between generated factory and local variables (#57181) |
| Commit | Type | Description |
|---|---|---|
| 1f9e090910 | fix | emitting references to ngtypecheck files (#57138) (#57202) |
| Commit | Type | Description |
|---|---|---|
| f7ab04018e | fix | errors during ApplicationRef.tick should be rethrown for zoneless tests (#56993) |
| eaa83f9d27 | fix | hydration error in some let declaration setups (#57173) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.1.2"></a>
|  | limit the number of chained instructions (
<a name="18.1.2"></a>
| Commit | Description |
|---|---|
| limit the number of chained instructions (#57069) |
| Commit | Description |
|---|---|
| add warning for unused let declarations (#57033) |
| Commit | Description |
|---|---|
afterNextRender hooks return that callback value. (#57031) |
|
| tree shake dev mode error message (#57035) |
| Commit | Type | Description |
|---|---|---|
| 463945003d | fix | limit the number of chained instructions (#57069) |
| Commit | Type | Description |
|---|---|---|
| e904f34020 | fix | add warning for unused let declarations (#57033) |
| Commit | Type | Description |
|---|---|---|
| 9e52c1c840 | fix | afterNextRender hooks return that callback value. (#57031) |
| b9fb98c67c | fix | tree shake dev mode error message (#57035) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.1.1"></a>
|  | Don't run preconnect assertion on the serv
<a name="18.1.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 |
|---|---|
| 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 |
|---|---|
| fix common module removal (#56968) |
| Commit | Type | Description |
|---|---|---|
| a1cb9dfc0d | fix | Don't run preconnect assertion on the server. (#56213) |
| Commit | Type | Description |
|---|---|---|
| daf0317bdc | fix | JIT mode incorrectly interpreting host directive configuration in partial compilation (#57002) |
| d7dca6dbb6 | fix | use strict equality for 'code' comparison (#56944) |
| Commit | Type | Description |
|---|---|---|
| c94a897248 | fix | avoid emitting references to typecheck files in TS 5.4 (#56961) |
| Commit | Type | Description |
|---|---|---|
| 5682527d94 | fix | not all callbacks running when registered at the same time (#56981) |
| Commit | Type | Description |
|---|---|---|
| b666d2c20f | fix | fix common module removal (#56968) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.12"></a>
…| Add back phase flag option as a deprecated API (#55648) |
<a name="18.1.0"></a>
| Commit | Description |
|---|---|
| typo in NgOptimizedImage warning (#56756) | |
| typo in warning for NgOptimizedDirective (#56817) |
| Commit | Description |
|---|---|
Make NgControlStatus host bindings OnPush compatible (#55720) |
| Commit | Description |
|---|---|
Make Content-Type header case insensitive (#56541) |
| Commit | Description |
|---|---|
| autocompletion for the component not imported (#55595) | |
| import the default exported component correctly (#56432) |
| Commit | Description |
|---|---|
Allow UrlTree as an input to routerLink (#56265) |
|
| Set a different browser URL from the one for route matching (#53318) |
| Commit | Type | Description |
|---|---|---|
| f25653e231 | fix | typo in NgOptimizedImage warning (#56756) |
| 9b35726e42 | fix | typo in warning for NgOptimizedDirective (#56817) |
| Commit | Type | Description |
|---|---|---|
| fd6cd0422d | feat | Add extended diagnostic to warn when there are uncalled functions in event bindings (#56295) |
| 341a116d61 | fix | allow more characters in let declaration name (#56764) |
| 2a1291e942 | fix | give precedence to local let declarations over parent ones (#56752) |
| Commit | Type | Description |
|---|---|---|
| 66e582551e | fix | avoid duplicate diagnostics for let declarations read before definition (#56843) |
| 4d18c5bfd5 | fix | flag all conflicts between let declarations and local symbols (#56752) |
| 9e21582456 | fix | Show template syntax errors in local compilation modified (#55855) |
| 5996502921 | fix | type check let declarations nested inside nodes (#56752) |
| cdebf751e4 | fix | used before declared diagnostic not firing for control flow blocks (#56843) |
| Commit | Type | Description |
|---|---|---|
| ea3c802056 | feat | Add a schematic to migrate afterRender phase flag (#55648) |
| 5df3e78c99 | feat | add equality function to rxjs-interop toSignal (#56447) |
| 0a48d584f2 | feat | add support for let syntax (#56715) |
| 352e0782ec | feat | expose signal input metadata in ComponentMirror (#56402) |
| a655e46447 | feat | Redesign the afterRender & afterNextRender phases API (#55648) |
| e5a6f91722 | feat | support TypeScript 5.5 (#56096) |
| 38effcc63e | fix | Add back phase flag option as a deprecated API (#55648) |
| 86bcfd3e49 | fix | improve docs on afterRender hooks (#56522) |
| b2445a0953 | fix | link errors to ADEV (#55554) (#56038) |
| 03a2acd2a3 | fix | properly remove imports in the afterRender phase migration (#56524) |
| 4d87b9e899 | fix | rename the equality function option in toSignal (#56769) (#56922) |
| 8bd4c074af | fix | toSignal equal option should be passed to inner computed (#56903) |
| Commit | Type | Description |
|---|---|---|
| 00bde8b1c2 | fix | Make NgControlStatus host bindings OnPush compatible (#55720) |
| Commit | Type | Description |
|---|---|---|
| cc21989132 | fix | Make Content-Type header case insensitive (#56541) |
| Commit | Type | Description |
|---|---|---|
| b400e2e4d4 | feat | autocompletion for the component not imported (#55595) |
| 67b2c336bc | fix | import the default exported component correctly (#56432) |
| Commit | Type | Description |
|---|---|---|
| a13f5da773 | feat | Allow UrlTree as an input to routerLink (#56265) |
| 1d3a7529b4 | feat | Set a different browser URL from the one for route matching (#53318) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.0.7"></a>
|  | Don't run preconnect assertion on the serv
<a name="18.1.0-rc.0"></a>
| Commit | Description |
|---|---|
| Don't run preconnect assertion on the server. (#56213) | |
| typo in NgOptimizedImage warning (#56756) |
| Commit | Description |
|---|---|
| flag all conflicts between let declarations and local symbols (#56752) | |
| type check let declarations nested inside nodes (#56752) |
|  | add support for let syntax (#56715) |
<a name="18.1.0-next.4"></a>
| Commit | Description |
|---|---|
| add support for let syntax (#56715) | |
| improve support for i18n hydration of projected content (#56192) | |
prevent calling devMode only function on @defer error. (#56559) |
| Commit | Description |
|---|---|
Make Content-Type header case insensitive (#56541) |
|  | insert constant statements after the first
<a name="18.1.0-next.3"></a>
| Commit | Description |
|---|---|
| insert constant statements after the first group of imports (#56431) |
| Commit | Description |
|---|---|
Make NgControlStatus host bindings OnPush compatible (#55720) |
| Commit | Description |
|---|---|
| import the default exported component correctly (#56432) |
| Commit | Description |
|---|---|
| Set a different browser URL from the one for route matching (#53318) | |
| Delay the view transition to ensure renders in microtasks complete (#56494) |
Nothing published for this version
Nothing published for this version
Nothing published for this version
|  | fix CSS animation rule scope (#56800) |
| Commit | Type | Description |
|---|---|---|
| 85f77b5cda | fix | fix CSS animation rule scope (#56800) |
| Commit | Type | Description |
|---|---|---|
| 95d7076d1a | perf | execute fetch outside of Angular zone (#56820) |
| Commit | Type | Description |
|---|---|---|
| d6fff45e73 | fix | Fix cf migration let condition semicolon order (#56913) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.0.6"></a>
|  | Don't run preconnect assertion on the serv
<a name="18.0.6"></a>
| Commit | Description |
|---|---|
| Don't run preconnect assertion on the server. (#56213) |
| Commit | Description |
|---|---|
| establish proper defer injector hierarchy for components attached to ApplicationRef (#56763) | |
| support injection of object with null constructor. (#56553) |
| Commit | Description |
|---|---|
| routes should not get stale providers (#56798) |
| Commit | Type | Description |
|---|---|---|
| a55719f55e | fix | Don't run preconnect assertion on the server. (#56213) |
| Commit | Type | Description |
|---|---|---|
| 4909844805 | fix | establish proper defer injector hierarchy for components attached to ApplicationRef (#56763) |
| fec5b80aaf | fix | support injection of object with null constructor. (#56553) |
| Commit | Type | Description |
|---|---|---|
| b7d3ecc873 | fix | routes should not get stale providers (#56798) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.0.5"></a>
|  | improve docs on afterRender hooks (#56525)
| Commit | Type | Description |
|---|---|---|
| 2f73281dfd | fix | improve docs on afterRender hooks (#56525) |
| be9e4892f9 | fix | improve support for i18n hydration of projected content (#56192) |
| 5f9bd5521e | fix | prevent calling devMode only function on @defer error. (#56559) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.0.4"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| ec0d1bf6f3 | fix | insert constant statements after the first group of imports (#56431) |
| Commit | Type | Description |
|---|---|---|
| 83ffa94783 | fix | do not activate event replay when no events are registered (#56509) |
| Commit | Type | Description |
|---|---|---|
| 5578681da2 | fix | Delay the view transition to ensure renders in microtasks complete (#56494) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.0.3"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| ebf00aa0659 | fix | adjust supported browser names for headless chrome (#56360) |
| Commit | Type | Description |
|---|---|---|
| dbd0fa00f8c | fix | async EventEmitter should contribute to app stability (#56308) |
| 625ca3e2b3f | fix | signals should be tracked when embeddedViewRef.detectChanges is called (#55719) |
| Commit | Type | Description |
|---|---|---|
| d6dd3dbdb09 | fix | add @angular/localize/init as polyfill in angular.json (#56300) |
| Commit | Type | Description |
|---|---|---|
| c07e1b33569 | fix | resolve error in standalone migration (#56302) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.0.2"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 78cf9bfc0e | fix | Do not migrate HttpClientModule imports on components. (#56067) |
| 616cdef474 | fix | don't coerce all producers to consumers on liveness change (#56140) |
| 2a440e1064 | fix | Fix shouldPreventDefaultBeforeDispatching bug (#56188) |
| 290a47d842 | fix | handle missing withI18nSupport() call for components that use i18n blocks (#56175) |
| Commit | Type | Description |
|---|---|---|
| b70b80ba55 | fix | do not generate aliased variables with the same name (#56154) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.0.1"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 419ffa2026 | fix | optimize track function that only passes $index (#55872) |
| Commit | Type | Description |
|---|---|---|
| 4c7efc005a | fix | interpolatedSignalNotInvoked diagnostic for class, style, attribute and animation bindings (#55969) |
| Commit | Type | Description |
|---|---|---|
| 4e6ea0e19c | fix | handle elements with local refs in event replay serialization logic (#56076) |
| d73a0175cb | fix | link errors to ADEV (#55554) |
| 985a215b10 | fix | typo in zoneless warning (#55974) |
| Commit | Type | Description |
|---|---|---|
| ba85d08158 | fix | handle empty ngSwitchCase (#56105) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.10"></a>
Deprecated matchesElement method has been removed from AnimationDriver as it is unused.
Blog post "Angular v18 is now available".
matchesElement method has been removed from AnimationDriver as it is unused.isPlatformWorkerUi and isPlatformWorkerApp have been removed without replacement, as they serve no purpose since the removal of the WebWorker platform.OnPush views at the root of the application need to
be marked dirty for their host bindings to refresh. Previously, the host
bindings were refreshed for all root views without respecting the
OnPush change detection strategy.
The ComponentFixture autoDetect feature will no
longer refresh the component's host view when the component is OnPush
and not marked dirty. This exposes existing issues in components which
claim to be OnPush but do not correctly call markForCheck when they
need to be refreshed. If this change causes test failures, the easiest
fix is to change the component to ChangeDetectionStrategy.Default.
ComponentFixture.whenStable now matches the
ApplicationRef.isStable observable. Prior to this change, stability
of the fixture did not include everything that was considered in
ApplicationRef. whenStable of the fixture will now include unfinished
router navigations and unfinished HttpClient requests. This will cause
tests that await the whenStable promise to time out when there are
incomplete requests. To fix this, remove the whenStable,
instead wait for another condition, or ensure HttpTestingController
mocks responses for all requests. Try adding HttpTestingController.verify()
before your await fixture.whenStable to identify the open requests.
Also, make sure your tests wait for the stability promise. We found many
examples of tests that did not, meaning the expectations did not execute
within the test body.
In addition, ComponentFixture.isStable would synchronously switch to
true in some scenarios but will now always be asynchronous.
Angular will ensure change detection runs, even when the state update originates from outside the zone, tests may observe additional rounds of change detection compared to the previous behavior.
This change will be more likely to impact existing unit tests.
This should usually be seen as more correct and the test should be updated,
but in cases where it is too much effort to debug, the test can revert to the old behavior by adding
provideZoneChangeDetection({schedulingMode: NgZoneSchedulingMode.NgZoneOnly})
to the TestBed providers.
Similarly, applications which may want to update state outside the zone
and not trigger change detection can add
provideZoneChangeDetection({schedulingMode: NgZoneSchedulingMode.NgZoneOnly})
to the providers in bootstrapApplication or add
schedulingMode: NgZoneSchedulingMode.NgZoneOnly to the
BootstrapOptions of bootstrapModule.
When Angular runs change detection, it will continue to
refresh any views attached to ApplicationRef that are still marked for
check after one round completes. In rare cases, this can result in infinite
loops when certain patterns continue to mark views for check using
ChangeDetectorRef.detectChanges. This will be surfaced as a runtime
error with the NG0103 code.
async has been removed, use waitForAsync instead.
The ComponentFixture.autoDetect feature now executes
change detection for the fixture within ApplicationRef.tick. This more
closely matches the behavior of how a component would refresh in
production. The order of component refresh in tests may be slightly
affected as a result, especially when dealing with additional components
attached to the application, such as dialogs. Tests sensitive to this
type of change (such as screenshot tests) may need to be updated.
Concretely, this change means that the component will refresh before
additional views attached to ApplicationRef (i.e. dialog components).
Prior to this change, the fixture component would refresh after other
views attached to the application.
The exact timing of change detection execution when
using event or run coalescing with NgZone is now the first of either
setTimeout or requestAnimationFrame. Code which relies on this
timing (usually by accident) will need to be adjusted. If a callback
needs to execute after change detection, we recommend afterNextRender
instead of something like setTimeout.
Newly created and views marked for check and reattached
during change detection are now guaranteed to be refreshed in that same
change detection cycle. Previously, if they were attached at a location
in the view tree that was already checked, they would either throw
ExpressionChangedAfterItHasBeenCheckedError or not be refreshed until
some future round of change detection. In rare circumstances, this
correction can cause issues. We identified one instance that relied on
the previous behavior by reading a value on initialization which was
queued to be updated in a microtask instead of being available in the
current change detection round. The component only read this value during
initialization and did not read it again after the microtask updated it.
Testability methods increasePendingRequestCount,
decreasePendingRequestCount and getPendingRequestCount have been
removed. This information is tracked with zones.
By default we now prevent caching of HTTP requests that require authorization . To opt-out from this behaviour use the includeRequestsWithAuthHeaders option in withHttpTransferCache.
Example:
withHttpTransferCache({
includeRequestsWithAuthHeaders: true,
})
StateKey, TransferState and makeStateKey have been removed from @angular/platform-browser, use the same APIs from @angular/core.RESOURCE_CACHE_PROVIDER APIs have been removed.deprecated platformDynamicServer has been removed. Add an import @angular/compiler and replace the usage with platformServer
deprecated ServerTransferStateModule has been removed. TransferState can be use without providing this module.
deprecated useAbsoluteUrl and baseUrl been removed from PlatformConfig. Provide and absolute url instead.
Legacy handling or Node.js URL parsing has been removed from ServerPlatformLocation.
The main differences are;
pathname is always suffixed with a /.port is empty when http: protocol and port in url is 80port is empty when https: protocol and port in url is 443RedirectCommand for redirects
in addition to UrlTree. Code which expects only boolean or UrlTree
values in Route types will need to be adjusted.Route.redirectTo to be a function
in addition to the previous string. Code which expects redirectTo to
only be a string on Route objects will need to be adjusted.UrlTree as a redirect, the
redirecting navigation will now use replaceUrl if the initial
navigation was also using the replaceUrl option. If this is not
desirable, the redirect can configure new NavigationBehaviorOptions by
returning a RedirectCommand with the desired options instead of UrlTree.RouterOutlet. This means that providers available only to the
component that defines the RouterOutlet will no longer be available to
route components in any circumstances. This was already the case
whenever routes defined providers, either through lazy loading an
NgModule or through explicit providers on the route config.RouterOutlet. This means that providers available only to the
component that defines the RouterOutlet will no longer be available to
route components in any circumstances. This was already the case
whenever routes defined providers, either through lazy loading an
NgModule or through explicit providers on the route config.getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits@Component.interpolation is deprecated. Use Angular's
delimiters instead.HttpClientModule, HttpClientXsrfModule and HttpClientJsonpModule
As mentionned, those modules can be replaced by provider function only.
| Commit | Type | Description |
|---|---|---|
| bcce85af72 | refactor | remove deprecated matchesElement from AnimationDriver (#55479) |
| Commit | Type | Description |
|---|---|---|
| d34c033902 | refactor | Deprecate Local Data API functions (#54483) |
| 3b0de30b37 | refactor | remove deprecated isPlatformWorkerApp and isPlatformWorkerUi API (#55302) |
| Commit | Type | Description |
|---|---|---|
| 91b007e58f | fix | add math elements to schema (#55631) |
| 33d0102304 | fix | allow comments between connected blocks (#55966) |
| 7fc7f3f05f | fix | capture all control flow branches for content projection in if blocks (#54921) |
| a369f43fbd | fix | capture switch block cases for content projection (#54921) |
| eb625d3783 | fix | declare for loop aliases in addition to new name (#54942) |
| f824911510 | fix | For FatalDiagnosticError, hide the message field without affecting the emit (#55160) |
| a040fb720a | fix | maintain multiline CSS selectors during CSS scoping (#55509) |
| 39624c6b12 | fix | output input flags as a literal (#55215) |
| eba92cfa55 | fix | prevent usage of reserved control flow symbol in custom interpolation context. (#55809) |
| 7d5bc1c628 | fix | remove container index from conditional instruction (#55190) |
| 4eb0165750 | fix | remove support for unassignable expressions in two-way bindings (#55342) |
| e1650e3b13 | fix | throw error if item name and context variables conflict (#55045) |
| Commit | Type | Description |
|---|---|---|
| 5bd188a394 | feat | add partial compilation support for deferred blocks (#54908) |
| b02b31a915 | feat | drop support for TypeScript older than 5.4 (#54961) |
| 78188e877a | fix | add diagnostic if initializer API is used outside of an initializer (#54993) |
| 69a83993b3 | fix | do not throw when retrieving TCB symbol for signal input with restricted access (#55774) |
| 4f4f41016e | fix | dom property binding check in signal extended diagnostic (#54324) |
| 7a16d7e969 | fix | don't type check the bodies of control flow nodes in basic mode (#55360) |
| 8d93597a82 | fix | fix type narrowing of @if with aliases (#55835) |
| 9b424d7224 | fix | preserve original reference to non-deferrable dependency (#54759) |
| 694ba79cbf | fix | report cases where initializer APIs are used in a non-directive class (#54993) |
| 6219341d26 | fix | report errors when initializer APIs are used on private fields (#54981) |
| c04ffb1fa6 | fix | use switch statements to narrow Angular switch blocks (#55168) |
| Commit | Type | Description |
|---|---|---|
| a730f09ae9 | feat | Add a public API to establish events to be replayed and an attribute to mark an element with an event handler. (#55356) |
| fdd560ea14 | feat | Add ability to configure zone change detection to use zoneless scheduler (#55252) |
| bce5e2344f | feat | Add build target for jsaction contract binary. (#55319) |
| 666d646575 | feat | Add event delegation library to queue up events and replay them when the application is ready (#55121) |
| 5f06ca8f55 | feat | add HOST_TAG_NAME token (#54751) |
| a600a39d0c | feat | add support for fallback content in ng-content (#54854) |
| 146306a141 | feat | add support for i18n hydration (#54823) |
| f09c5a7bc4 | feat | Add zoneless change detection provider as experimental (#55329) |
| d28614b90e | feat | Modify EventType from an enum to an object. (#55323) |
| ac863ded48 | feat | provide ExperimentalPendingTasks API (#55487) |
| 1ee9f32621 | feat | Synchronize changes from internal JSAction codebase. (#55182) |
| d888da4606 | fix | ApplicationRef.tick should respect OnPush for host bindings (#53718) |
| 64f870c12b | fix | ApplicationRef.tick should respect OnPush for host bindings (#53718) (#53718) |
| 8cad4e8cbe | fix | ComponentFixture autoDetect respects OnPush flag of host view (#54824) |
| 658cf8c384 | fix | ComponentFixture stability should match ApplicationRef (#54949) |
| 2fc11eae9e | fix | account for re-projected ng-content elements with fallback content (#54854) |
| 0cbd73c6e9 | fix | add warning when using zoneless but zone.js is still loaded (#55769) |
| d5edfde6ee | fix | afterRender hooks registered outside change detection can mark views dirty (#55623) |
| de7447d15e | fix | Angular should not ignore changes that happen outside the zone (#55102) |
| ba8e465974 | fix | Change Detection will continue to refresh views while marked for check (#54734) |
| 5a10f405d3 | fix | complete the removal of deprecation async function (#55491) |
| 24bc0ed4f2 | fix | ComponentFixture autodetect should detect changes within ApplicationRef.tick (#54733) |
| 1c0ec56c46 | fix | correctly project single-root content inside control flow (#54921) |
| 840c375255 | fix | do not save point-in-time setTimeout and rAF references (#55124) |
| 10c5cdb49c | fix | ensure change detection runs in a reasonable timeframe with zone coalescing (#54578) |
| ad045efd4b | fix | Ensure views marked for check are refreshed during change detection (#54735) |
| 69085ea26e | fix | error about provideExperimentalCheckNoChangesForDebug uses wrong name (#55824) |
| 0147e0b85a | fix | exhaustive checkNoChanges should only do a single pass (#55839) |
| e02bcf89cf | fix | Fix clearing of pending task in zoneless cleanup implementation (#55074) |
| 0cec9e4f9a | fix | Fix null dereference error addEvent (#55353) |
| 44c0ed83a6 | fix | hide implementation details of ExperimentalPendingTasks (#55516) |
| 314112de99 | fix | Prevent markForCheck during change detection from causing infinite loops (#54900) |
| a5fa279b6e | fix | prevent i18n hydration from cleaning projected nodes (#54823) |
| 6534c035c0 | fix | Remove deprecated Testability methods (#53768) |
| a5c57c7484 | fix | resolve error for multiple component instances that use fallback content (#55478) |
| f44a5e4604 | fix | support content projection and VCRs in i18n (#54823) |
| 0510930a25 | fix | TestBed should not override NgZone from initTestEnvironment (#55226) |
| e9a0c86766 | fix | TestBed should not override NgZone from initTestEnvironment (#55226) |
| 700c0520bb | fix | Update ApplicationRef.tick loop to only throw in dev mode (#54848) |
| a99cb7ce5b | fix | zoneless scheduler should check if Zone is defined before accessing it (#55118) |
| 1fd63e9cff | refactor | deprecate @Component.interpolation (#55778) |
| Commit | Type | Description |
|---|---|---|
| 1c736dc3b2 | feat | Unified Control State Change Events (#54579) |
| 61007dced0 | fix | Add event for forms submitted & reset (#55667) |
| 2e27ca9ddf | fix | Allow canceled async validators to emit. (#55134) |
| Commit | Type | Description |
|---|---|---|
| 6f88d80758 | feat | allow caching requests with different origins between server and client (#55274) |
| 8eacb6e4b9 | feat | exclude caching for authenticated HTTP requests (#55034) |
| d9b339fdbc | fix | resolve withRequestsMadeViaParent behavior with withFetch (#55652) |
| ef665a40a5 | refactor | Deprecate HttpClientModule & related modules (#54020) |
| Commit | Type | Description |
|---|---|---|
| 6d1b82df32 | fix | allow external projects to use provided compiler options (#55035) |
| a48afe0d94 | fix | avoid generating TS syntactic diagnostics for templates (#55091) |
| bd236cc150 | fix | implement getDefinitionAtPosition for Angular templates (#55269) |
| 4166dfc1b6 | fix | prevent underlying TS Service from handling template files (#55003) |
| b7f2fd4739 | fix | use type-only import in plugin factory (#55996) |
| Commit | Type | Description |
|---|---|---|
| f914f6a362 | feat | Migration schematics for HttpClientModule (#54020) |
| 8459ee46cb | fix | handle more cases in HttpClientModule migration (#55640) |
| c4b2f18709 | fix | migrate HttpClientTestingModule in test modules (#55803) |
| bb4a4016a9 | fix | preserve existing properties in HttpClientModule migration (#55777) |
| f93e5180be | fix | resolve multiple structural issues with HttpClient migration (#55557) |
| Commit | Type | Description |
|---|---|---|
| 45ae7a6b60 | feat | add withI18nSupport() in developer preview (#55130) |
| 23f914f101 | fix | Use the right namespace for mathML. (#55622) |
| cba336d4f1 | refactor | remove deprecated transfer state APIs (#55474) |
| Commit | Type | Description |
|---|---|---|
| eb20c1a8b1 | refactor | unused RESOURCE_CACHE_PROVIDER API has been removed (#54875) |
| Commit | Type | Description |
|---|---|---|
| 5674c644ab | fix | add nonce attribute to event record script (#55495) |
| e71e869112 | fix | remove event dispatch script from HTML when hydration is disabled (#55681) |
| 07ac017731 | refactor | remove deprecated platformDynamicServer API (#54874) |
| e8b588d8b7 | refactor | remove deprecated ServerTransferStateModule API (#54874) |
| 3b1967ca64 | refactor | remove deprecated useAbsoluteUrl and baseUrl from PlatformConfig (#54874) |
| 2357d3566c | refactor | remove legacy URL handling logic (#54874) |
| Commit | Type | Description |
|---|---|---|
| 4a42961393 | feat | withNavigationErrorHandler can convert errors to redirects (#55370) |
| 8735af08b9 | feat | Add ability to return UrlTree with NavigationBehaviorOptions from guards (#45023) |
| 87f3f27f90 | feat | Allow resolvers to return RedirectCommand (#54556) |
| 2b802587f2 | feat | Allow Route.redirectTo to be a function which returns a string or UrlTree (#52606) |
| 60f1d681e0 | fix | preserve replaceUrl when returning a urlTree from CanActivate (#54042) |
| 3839cfbb18 | fix | Routed components never inherit RouterOutlet EnvironmentInjector (#54265) |
| da906fdafc | fix | Routed components never inherit RouterOutlet EnvironmentInjector (#54265) |
| Commit | Type | Description |
|---|---|---|
| 3bc63eaaf3 | fix | avoid running CDs on controllerchange (#54222) |
| e598634c10 | fix | remove controllerchange listener when app is destroyed (#55365) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.9"></a>
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
|  | JIT mode incorrectly interpreting host dir
| Commit | Type | Description |
|---|---|---|
| 327bae473b | fix | JIT mode incorrectly interpreting host directive configuration in partial compilation (#57002) (#57003) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.1.0"></a>
Nothing published for this version
<!-- CHANGELOG SPLIT MARKER -->
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.0.0"></a>
<!-- CHANGELOG SPLIT MARKER -->
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.8"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| c21b459ba6 | fix | add math elements to schema (#55631) (#55645) |
| Commit | Type | Description |
|---|---|---|
| 3818436ebc | fix | don't schedule timer triggers on the server (#55605) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.7"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 51ac883167 | fix | don't type check the bodies of control flow nodes in basic mode (#55558) |
| Commit | Type | Description |
|---|---|---|
| af0eb846a5 | fix | render hooks should not specifically run outside the Angular zone (#55399) |
| Commit | Type | Description |
|---|---|---|
| 3eea50da64 | fix | Scroller should scroll as soon as change detection completes (#55105) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.6"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 826861b1fa | fix | DeferBlockFixture.render should not wait for stability (#55271) |
| 5cf14da35c | fix | make ActivatedRoute inject correct instance inside @defer blocks (#55374) |
| 8979fba2c5 | fix | skip defer timers on the server (#55480) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.5"></a>
<!-- CHANGELOG SPLIT MARKER -->
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.4"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 53427d875d | fix | invalid ImageKit quality parameter (#55193) |
| 766548c3ec | fix | skip transfer cache on client (#55012) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.2"></a>
Nothing published for this version
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 2b7bad5151 | fix | invoke method-based tracking function with context (#54960) |
| Commit | Type | Description |
|---|---|---|
| b478dfbfda | fix | report errors when initializer APIs are used on private fields (#55070) |
| Commit | Type | Description |
|---|---|---|
| 708ba8115f | fix | establish proper injector resolution order for @defer blocks (#55079) |
| Commit | Type | Description |
|---|---|---|
| cb433af0e1 | fix | include transferCache when cloning HttpRequest (#54939) |
| 64f202cab9 | fix | manage different body types for caching POST requests (#54980) |
| Commit | Type | Description |
|---|---|---|
| 2f9d94bc4a | fix | account for variables in imports initializer (#55081) |
| Commit | Type | Description |
|---|---|---|
| 365fd50407 | fix | RouterLinkActive will always remove active classes when links are not active (#54982) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.1"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| c0788200e2 | fix | capture data bindings for content projection purposes in blocks (#54876) |
| Commit | Type | Description |
|---|---|---|
| 99e9474aa2 | fix | symbol feature detection for the compiler (#54711) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.0"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 1a6beae8a2 | feat | Enable template pipeline by default. (#54571) |
| f386a04c9d | fix | handle two-way bindings to signal-based template variables in instruction generation (#54714) |
| 1f129f114e | fix | not catching for loop empty tracking expressions (#54772) |
| Commit | Type | Description |
|---|---|---|
| 12dc4d074e | fix | account for as expression in docs extraction (#54414) |
| da7fbb40f0 | fix | detect when the linker is working in unpublished angular and widen supported versions (#54439) |
| 492e03f699 | fix | flag two-way bindings to non-signal values in templates (#54714) |
| 5afa4f0ec1 | fix | support ModuleWithProviders literal detection with typeof (#54650) |
| Commit | Type | Description |
|---|---|---|
| 331b16efd2 | feat | add API to inject attributes on the host node (#54604) |
| fb540e169a | feat | add migration for invalid two-way bindings (#54630) |
| c687b8f453 | feat | expose new output() API (#54650) |
| c809069f21 | feat | introduce outputFromObservable() interop function (#54650) |
| aff65fd1f4 | feat | introduce outputToObservable interop helper (#54650) |
| 974958913c | feat | support TypeScript 5.4 (#54414) |
| 39a50f9a8d | fix | ensure all initializer functions run in an injection context (#54761) |
| 243ccce624 | fix | exclude class attribute intended for projection matching from directive matching (#54800) |
| 2909e9817d | fix | prevent infinite loops in clobbered elements check (#54425) |
| 7243c704cf | fix | return a readonly signal on asReadonly. (#54706) |
| bb35414a38 | perf | speed up retrieval of DestroyRef in EventEmitter (#54748) |
| Commit | Type | Description |
|---|---|---|
| 8d37ed035c | fix | exclude caching for authenticated HTTP requests (#54746) |
| Commit | Type | Description |
|---|---|---|
| c1c7384e02 | feat | Add reusable types for router guards (#54580) |
| 7225485311 | fix | Navigations triggered by cancellation events should cancel previous navigation (#54710) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.2.4"></a>
Nothing published for this version
Nothing published for this version
Nothing published for this version
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 917b9bdd2e | fix | unwrap expressions with type parameters in query read property (#54647) |
| Commit | Type | Description |
|---|---|---|
| 586cc24a10 | fix | apply TestBed provider overrides to @defer dependencies (#54667) |
| b558a01c84 | fix | generic inference for signal inputs may break with --strictFunctionTypes (#54652) |
| 443e5f1591 | fix | return a readonly signal on asReadonly. (#54719) |
| ffbafc7d4a | fix | untrack various core operations (#54614) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.2.3"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 1a526f2881 | perf | AsyncPipe should not call markForCheck on subscription (#54554) |
| Commit | Type | Description |
|---|---|---|
| 2aefed8763 | fix | catch function instance properties in interpolated signal diagnostic (#54325) |
| 48aec63ee4 | fix | identify aliased initializer functions (#54480) |
| daf7c611b2 | fix | identify aliased initializer functions (#54609) |
| Commit | Type | Description |
|---|---|---|
| 57123524a2 | fix | collect providers from NgModules while rendering @defer block (#52881) |
| 79a32816dc | fix | fix typo in injectors.svg file (#54596) |
| Commit | Type | Description |
|---|---|---|
| dbe673b027 | fix | resolve infinite loop for a single line element with a long tag name and angle bracket on a new line (#54588) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.2.2"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| d34e3298db | fix | image placeholder not removed in OnPush component (#54515) |
| Commit | Type | Description |
|---|---|---|
| 6447c0eecc | fix | adding the inert property to the "SCHEMA" array (#53148) |
| Commit | Type | Description |
|---|---|---|
| 0a3edfb543 | fix | correctly detect deferred dependencies across scoped nodes (#54499) |
| 790f4f7c26 | fix | use correct symbol name for default imported symbols in defer blocks (#54495) |
| Commit | Type | Description |
|---|---|---|
| 3bd5860c74 | fix | properly execute content queries for root components (#54457) |
| Commit | Type | Description |
|---|---|---|
| bb57d34110 | fix | Fix cf migration regular expression to include underscores (#54533) |
| Commit | Type | Description |
|---|---|---|
| 3e31f1a34e | fix | Clear internal transition when navigation finalizes (#54261) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.2.1"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 7234824228 | fix | fix broken version detection condition (#54443) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.2.0"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 03c3b3eb79 | feat | add Netlify image loader (#54311) |
| f5c520b836 | feat | add placeholder to NgOptimizedImage (#53783) |
| Commit | Type | Description |
|---|---|---|
| 47e6e84101 | feat | Add a TSConfig option useTemplatePipeline (#54057) |
| 66e940aebf | feat | scope selectors in @starting-style (#53943) |
| 7b4d275f49 | fix | Fix the template pipeline option (#54148) |
| Commit | Type | Description |
|---|---|---|
| 7e861c640e | feat | generate extra imports for component local dependencies in local mode (#53543) |
| 3263df23f2 | feat | generate global imports in local compilation mode (#53543) |
| b774e22d8e | feat | make it configurable to generate alias reexports (#53937) |
| 3e1384048e | feat | support host directives for local compilation mode (#53877) |
| a592904c69 | fix | allow custom/duplicate decorators for @Injectable classes in local compilation mode (#54139) |
| 4b1d948b36 | fix | consider the case of duplicate Angular decorators in local compilation diagnostics (#54139) |
| 96bcf4fb12 | fix | forbid custom/duplicate decorator when option forbidOrphanComponents is set (#54139) |
| 64fa5715c6 | fix | generating extra imports in local compilation mode when cycle is introduced (#53543) |
| 6c8b09468a | fix | highlight the unresolved element in the @Component.styles array for the error LOCAL_COMPILATION_UNRESOLVED_CONST (#54230) |
| 0970129e20 | fix | show proper error for custom decorators in local compilation mode (#53983) |
| f39cb06418 | fix | show specific error for unresolved @Directive.exportAs in local compilation mode (#54230) |
| f3851b5945 | fix | show specific error for unresolved @HostBinding's argument in local compilation mode (#54230) |
| 39ddd884e8 | fix | show specific error for unresolved @HostListener's event name in local compilation mode (#54230) |
| 5d633240fd | fix | show the correct message for the error LOCAL_COMPILATION_UNRESOLVED_CONST when an unresolved symbol used for @Component.styles (#54230) |
| 58b8a232d6 | fix | support jumping to definitions of signal-based inputs (#54053) |
| Commit | Type | Description |
|---|---|---|
| 702ab28b4c | feat | add support for model inputs (#54252) |
| e95ef2cbc6 | feat | expose queries as signals (#54283) |
| 656bc282e3 | fix | add toString implementation to signals (#54002) |
| 62b87b4551 | fix | do not crash for signal query that does not have any matches (#54353) |
| 4b96f370ee | fix | expose model signal subcribe for type checking purposes (#54357) |
| 744cb1e561 | fix | return the same children query results if there are no changes (#54392) |
| 6d00115bf4 | fix | show placeholder block on the server with immediate trigger (#54394) |
| Commit | Type | Description |
|---|---|---|
| 1c536250b6 | fix | Use string body to generate transfer cache key. (#54379) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.1.3"></a>
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| bc4a6a9715 | fix | do not error due to multiple components named equally (#54273) |
| a997e08c6f | fix | handle default imports in defer blocks (#53695) |
| 63a9027720 | fix | interpolatedSignalNotInvoked diagnostic for model signals (#54338) |
| 40e1edc977 | fix | properly catch fatal diagnostics in type checking (#54309) |
| 9f6605d11b | fix | support jumping to definitions of signal-based inputs (#54233) |
| Commit | Type | Description |
|---|---|---|
| 7df133dcc2 | fix | afterRender hooks should allow updating state (#54074) |
| 744e20641a | fix | Fix possible infinite loop with markForCheck by partially reverting #54074 (#54329) |
| 0fb114274c | fix | update imports to be compatible with rxjs 6 (#54193) |
| Commit | Type | Description |
|---|---|---|
| 238f2a8bc9 | fix | Clear internal transition when navigation finalizes (#54261) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.1.2"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| ccddacf11d | fix | cta clickability issue in adev homepage. (#52905) |
| Commit | Type | Description |
|---|---|---|
| 98d545fafa | fix | cleanup DOM elements when root view is removed with async animations (#53033) |
| Commit | Type | Description |
|---|---|---|
| cdc5e39532 | fix | The date pipe should return ISO format for week and week-year as intended in the unit test. (#53879) |
| Commit | Type | Description |
|---|---|---|
| f12b01ec88 | fix | Update type check block to fix control flow source mappings (#53980) |
| Commit | Type | Description |
|---|---|---|
| c477e876e3 | fix | change defer block fixture default behavior to playthrough (#54088) |
| Commit | Type | Description |
|---|---|---|
| 8264382a6b | fix | error in standalone migration when non-array value is used as declarations in TestBed (#54122) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.1.1"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| f222bee8fa | fix | revert commit that replaced last helper with native Array.at(-1) (#54021) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.1.0"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 79ff91a813 | fix | allow TS jsDocParsingMode host option to be programmatically set (#53126) |
| 5613051a8b | fix | allow TS jsDocParsingMode host option to be programmatically set again (#53292) |
| df8a825910 | fix | project empty block root node (#53620) |
| 478d622265 | fix | project empty block root node in template pipeline (#53620) |
| Commit | Type | Description |
|---|---|---|
| abdc7e4578 | feat | support type-checking for generic signal inputs (#53521) |
| e620b3a724 | fix | add compiler option to disable control flow content projection diagnostic (#53311) |
| 4c1d69e288 | fix | add diagnostic for control flow that prevents content projection (#53190) |
| 76ceebad04 | fix | do not throw fatal error if extended type check fails (#53896) |
| 1a6eaa0fea | fix | input transform in local compilation mode (#53645) |
| 56a76d73e0 | fix | modify getConstructorDependencies helper to work with reflection host after the previous change (#52215) |
| Commit | Type | Description |
|---|---|---|
| 863be4b698 | feat | expose new input API for signal-based inputs (#53872) |
| 94096c6ede | feat | support TypeScript 5.3 (#52572) |
| 69b384c0d1 | fix | SignalNode reactive node incorrectly exposing unset field (#53571) |
| 6f79507ea7 | fix | Change defer block fixture default behavior to playthrough (#53956) |
| 32f908ab70 | fix | do not accidentally inherit input transforms when overridden (#53571) |
| bdd61c768a | fix | replace assertion with more intentional error (#52234) |
| 0daca457bb | fix | TestBed should still use the microtask queue to schedule effects (#53843) |
| Commit | Type | Description |
|---|---|---|
| 5c1d441029 | feat | Add info property to NavigationExtras (#53303) |
| 50d7916278 | feat | Add router configuration to resolve navigation promise on error (#48910) |
| a5a9b408e2 | feat | Add transient info to RouterLink input (#53784) |
| 726530a9af | feat | Allow onSameUrlNavigation: 'ignore' in navigateByUrl (#52265) |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.0.9"></a>
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →