NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3838 most downloaded on npm
Angular - the core framework
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
1119 releases · first in 2016
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
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 |
|---|---|---|
| 37bbc61cfe | feat | Backport NgOptimizedImage to Angular 14. |
Alex Castle, Joey Perrott and Paul Gschwendtner
<!-- CHANGELOG SPLIT MARKER -->
<a name="15.2.2"></a>
Existing iframe usages may have security-sensitive attributes applied as an attribute or property binding in a template or via host bindings in a dire
| Commit | Type | Description |
|---|---|---|
| 54814c8e9b | fix | hardening attribute and property binding rules for <iframe> elements (#48028) |
Andrew Kushnir
<!-- CHANGELOG SPLIT MARKER -->
<a name="15.0.0"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| aef353c143 | fix | Ensure renavigating in component init works with enabledBlocking (#48066) |
Alan Agius, Andrew Scott and Mujo Osmanovic
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.10"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| a4312e1be5 | fix | add zone.js version 0.12.x as a valid peer dependency (#48002) |
| Commit | Type | Description |
|---|---|---|
| db867fee77 | fix | fix redirectTo on named outlets - resolves #33783 (#47927) |
Alan Agius, Albert Szekely, Andrew Scott, Doug Parker, Kristiyan Kostadinov, Markus Eckstein, Peter Scriven and abergquist
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.9"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 92d28bdd99 | perf | resolve memory leak when using animations with shadow DOM (#47903) |
| Commit | Type | Description |
|---|---|---|
| d2d9bbf5ce | fix | call onSerialize when state is empty (#47888) |
Alan Agius, Kristiyan Kostadinov, Virginia Dooley and mgechev
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.8"></a>
Andrew Scott, Balaji, Paul Gschwendtner, WD Snoeijer, onrails and vyom1611
Andrew Scott, Balaji, Paul Gschwendtner, WD Snoeijer, onrails and vyom1611
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.7"></a>
Bob Watson, Charles Barnes, Joey Perrott, Virginia Dooley, WD Snoeijer, abergquist and urugator
Bob Watson, Charles Barnes, Joey Perrott, Virginia Dooley, WD Snoeijer, abergquist and urugator
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.6"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 3fd176a905 | fix | add missing period to error message (#47744) |
| c3821f5ab5 | perf | minimize filesystem calls when generating shims (#47682) |
Alan Agius, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, Bob Watson, Charles Lyding, Joey Perrott, Joshua Morony, Mathew Berg, Paul Gschwendtner, Peter Dickten, Renan Ferro, Sri Ram, WD Snoeijer, markostanimirovic and Álvaro Martínez
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.5"></a>
This release contains various API docs improvements.
This release contains various API docs improvements.
Alexander Wiebe, Ciprian Sauliuc, Dmytro Mezhenskyi, George Kalpakas, Joe Martin (Crowdstaffing), Jordan, Ole M, Paul Gschwendtner, Pawel Kozlowski and mgechev
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.4"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| a4b66fe1e5 | perf | cache source file for reporting type-checking diagnostics (#47508) |
| Commit | Type | Description |
|---|---|---|
| 2c46b5ab24 | fix | correctly check for typeof of undefined in ngDevMode check (#47480) |
Alan Agius, Ashley Hunter, Doug Parker, Jessica Janiuk, JoostK, Kristiyan Kostadinov, Rokas Brazdžionis and Simona Cotin
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.3"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| bba2dae812 | fix | make sure that the useAnimation function delay is applied (#47468) |
AleksanderBodurri, Andrew Kushnir, Andrew Scott, Bob Watson, George Kalpakas, Joey Perrott, Mauro Mattos, dario-piotrowicz, fabioemoutinho and famzila
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.2"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 937e6c5b3d | fix | make sure that the animation function delay is applied (#47285) |
| Commit | Type | Description |
|---|---|---|
| c9bdf9bab1 | fix | rename rawSrc -> ngSrc in NgOptimizedImage directive (#47362) (#47396) |
| Commit | Type | Description |
|---|---|---|
| a3e1303f04 | fix | imply @Optional flag when a default value is provided (#47242) |
| Commit | Type | Description |
|---|---|---|
| 80c66a1e57 | fix | don't prevent default behavior for forms with method="dialog" (#47308) |
Abhishek Rawat, Andrew Kushnir, Benjamin Chanudet, Bob Watson, George Kalpakas, Ikko Ashimine, Kristiyan Kostadinov, Marc Wrobel, Mariia Subkov, Pawel Kozlowski, Sebastian, abergquist, dario-piotrowicz, onrails and vyom1611
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.1"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| c0d7ac9ec2 | fix | improve formatting of image warnings (#47299) |
| 1875ce520a | fix | use DOCUMENT token to query for preconnect links (#47353) |
| Commit | Type | Description |
|---|---|---|
| 0e35829580 | fix | avoid errors for inputs with Object-builtin names (#47220) |
| Commit | Type | Description |
|---|---|---|
| 6091786696 | fix | include headers in requests for assets (#47260) |
| 28d33505fd | fix | only consider GET requests as navigation requests (#47263) |
Aristeidis Bampakos, Asaf M, Bingo's Code, Bob Watson, Daniel Ostrovsky, George Kalpakas, Giovanni Alberto Rivas, Jeremy Elbourn, Jobayer Hossain, Joe Martin (Crowdstaffing), Joey Perrott, JoostK, Kara Erickson, Kristiyan Kostadinov, Maina Wycliffe, Sabareesh Kappagantu, Simona Cotin, Sonu Sindhu, Yann Provoost, abergquist, jaybell and vyom1611
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.2.0"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| b96e571897 | fix | fix stagger timing not handling params (#47208) |
| Commit | Type | Description |
|---|---|---|
| b380fdd59e | feat | add a density cap for image srcsets (#47082) |
| 7ce497e5bc | feat | add built-in Imgix loader (#47082) |
| bff870db61 | feat | add cloudflare loader (#47082) |
| 86e77a5d55 | feat | add Image directive skeleton (#45627) (#47082) |
| 0566205a02 | feat | Add image lazy loading and fetchpriority (#47082) |
| 4e952ba216 | feat | add loaders for cloudinary & imagekit (#47082) |
| e854a8cdde | feat | add loading attr to NgOptimizedImage (#47082) |
| 8d3701cb4c | feat | add warnings re: image distortion (#47082) |
| d5f7da2120 | feat | define public API surface for NgOptimizedImage directive (#47082) |
| d3c3426aa4 | feat | detect LCP images in NgOptimizedImage and assert if priority is set (#47082) |
| 451b85ca17 | feat | explain why width/height is required (#47082) |
| 586274fe65 | feat | provide an ability to exclude origins from preconnect checks in NgOptimizedImage (#47082) |
| 57f3386e5b | feat | support custom srcset attributes in NgOptimizedImage (#47082) |
| 7baf9a46cd | feat | verify that priority images have preconnect links (#47082) |
| f81765b333 | feat | warn if rendered size is much smaller than intrinsic (#47082) |
| e2ab99b95e | fix | allow null/undefined to be passed to ngClass input (#39280) (#46906) |
| bedf537951 | fix | allow null/undefined to be passed to ngStyle input (#47069) |
| f9511bf6e8 | fix | avoid interacting with a destroyed injector (#47243) |
| dc29e21b14 | fix | consider density descriptors with multiple digits as valid (#47230) |
| 801daf82d1 | fix | detect data: and blob: inputs in NgOptimizedImage directive (#47082) |
| fff8056e7f | fix | fix formatting on oversized image error (#47188) (#47232) |
| 1ca2ce19ab | fix | remove default for image width (#47082) |
| c5db867ddc | fix | remove duplicate deepForEach (#47189) |
| 1cf43deb18 | fix | sanitize rawSrc and rawSrcset values in NgOptimizedImage directive (#47082) |
| d71dfe931f | fix | set bound width and height onto host element (#47082) |
| 32caa8b669 | fix | support density descriptors with 2+ decimals (#47197) (#47232) |
| ae4405f0bf | fix | throw if srcset is used with rawSrc (#47082) |
| 0c8eb8bc82 | perf | monitor LCP only for images without priority attribute (#47082) |
| Commit | Type | Description |
|---|---|---|
| ea89677c12 | feat | support more recent version of tsickle (#47018) |
| Commit | Type | Description |
|---|---|---|
| d1e83e1b30 | feat | add createComponent function (#46685) |
| 10becab70e | feat | add reflectComponentType function (#46685) |
| 4b377d3a6d | feat | introduce createApplication API (#46475) |
| 31429eaccc | feat | support TypeScript 4.8 (#47038) |
| 796840209c | fix | align TestBed interfaces and implementation (#46635) |
| Commit | Type | Description |
|---|---|---|
| 426af91a42 | feat | add FormBuilder.record() method (#46485) |
| b302797de4 | fix | Correctly infer FormBuilder types involving [value, validators] shorthand in more cases. (#47034) |
| Commit | Type | Description |
|---|---|---|
| 598b72bd05 | feat | support fix the component missing member (#46764) |
| Commit | Type | Description |
|---|---|---|
| 07606e3181 | feat | add isEmpty method to the TransferState class (#46915) |
| Commit | Type | Description |
|---|---|---|
| 2b4d7f6733 | feat | support document reference in render functions (#47032) |
| Commit | Type | Description |
|---|---|---|
| 0abb67af59 | feat | allow guards and resolvers to be plain functions (#46684) |
| 75df404467 | feat | Create APIs for using Router without RouterModule (#47010) |
| 10289f1f6e | feat | expose resolved route title (#46826) |
| 8600732b09 | feat | Expose the default matcher for Routes used by the Router (#46913) |
| 422323cee0 | feat | improve typings for RouterLink boolean inputs (#47101) |
| 26ea97688c | feat | Make router directives standalone (#46758) |
| 2a43beec15 | fix | Fix route recognition behavior with some versions of rxjs (#47098) |
| Commit | Type | Description |
|---|---|---|
| 383090858c | feat | support sendRequest as a notificationclick action (#46912) |
| 3f548610dd | fix | export NoNewVersionDetectedEvent (#47044) |
| 482b6119c2 | fix | update golden index.md (#47044) |
Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Bob Watson, Cédric Exbrayat, Dylan Hunn, Emmanuel Roux, FatalMerlin, George Kalpakas, Ilia Mirkin, Jan Kuehle, Jeremy Elbourn, Jessica Janiuk, JiaLiPassion, Kalbarczyk, Kara Erickson, Katie Hempenius, Kristiyan Kostadinov, Merlin, Paul Gschwendtner, Pawel Kozlowski, Tristan Sprößer, Victor Porof, angular-robot[bot], dario-piotrowicz, ivanwonder and vyom
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.1.3"></a>
Nothing published for this version
Nothing published for this version
Nothing published for this version
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 0583227708 | fix | infinite loop in parser assignment expression with invalid left-hand expression (#47151) |
AlirezaEbrahimkhani, Alma Eyre, Andrew Scott, Bob Watson, George Kalpakas, Kalbarczyk, Kristiyan Kostadinov, Leosvel Pérez Espinosa, Roman Matusevich and Sonu Kapoor
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.1.2"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 5ff715c549 | fix | check if transplanted views are attached to change detector (#46974) |
| Commit | Type | Description |
|---|---|---|
| 439d77e852 | fix | Fix route recognition behavior with some versions of rxjs (#47098) (#47112) |
4javier, Andrew Kushnir, Andrew Scott, AntonioCardenas, Bob Watson, Bruno Barbosa, Eduardo Speroni, Edward, George Kalpakas, Jan Melcher, Kristiyan Kostadinov, Mladen Jakovljević, Paul Gschwendtner, Pawel Kozlowski, Roman Matusevich, Vovch, ashide2729, ileil and onrails
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.1.1"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 3606917732 | fix | improve the missing control flow directive message (#46903) |
| Commit | Type | Description |
|---|---|---|
| 79825d3f10 | fix | Do not call preload method when not necessary (#47007) |
| 05f3f7445a | fix | Use correct return type for provideRoutes function (#46941) |
Alan Agius, Andrew Kushnir, Andrew Quinn, Andrew Scott, Aristeidis Bampakos, Asaf M, Bob Watson, Cédric Exbrayat, Durairaj Subramaniam, George Kalpakas, Ivaylo Kirov, J Rob Gant, Kristiyan Kostadinov, Marek Hám, Paul Gschwendtner, Roman Matusevich and Simona Cotin
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.1.0"></a>
The createNgModuleRef is deprecated in favor of newly added createNgModule one.
createNgModuleRef is deprecated in favor of newly added createNgModule one.inject() has been deprecated, in favor of the
new options object. Correspondingly, InjectFlags is deprecated as well.| Commit | Type | Description |
|---|---|---|
| 55308f2df5 | feat | add provideAnimations() and provideNoopAnimations() functions (#46793) |
| Commit | Type | Description |
|---|---|---|
| 4a2e7335b1 | feat | make the CommonModule pipes standalone (#46401) |
| a7597dd080 | feat | make the CommonModule directives standalone (#46469) |
| Commit | Type | Description |
|---|---|---|
| 33ce3883a5 | feat | Add extended diagnostic to warn when missing let on ngForOf (#46683) |
| 6f11a58040 | feat | Add extended diagnostic to warn when text attributes are intended to be bindings (#46161) |
| 9e836c232f | feat | warn when style suffixes are used with attribute bindings (#46651) |
| Commit | Type | Description |
|---|---|---|
| 93c65e7b14 | feat | add extended diagnostic for non-nullable optional chains (#46686) |
| 131d029da1 | feat | detect missing control flow directive imports in standalone components (#46146) |
| 6b8e60c06a | fix | improve the missingControlFlowDirective message (#46846) |
| Commit | Type | Description |
|---|---|---|
| e8e8e5f171 | feat | add createComponent function |
| b5153814af | feat | add reflectComponentType function |
| 96c6139c9a | feat | add ability to set inputs on ComponentRef (#46641) |
| a6d5fe202c | feat | alias createNgModuleRef as createNgModule (#46789) |
| 71e606d3c3 | feat | expose EnvironmentInjector on ApplicationRef (#46665) |
| 19e6d9ccd3 | feat | import AsyncStackTaggingZone if available (#46693) |
| a7a14df5f8 | feat | introduce EnvironmentInjector.runInContext API (#46653) |
| fa52b6e906 | feat | options object to supersede bit flags for inject() (#46649) |
| af20112222 | feat | support the descendants option for ContentChild queries (#46638) |
| 945a3ad359 | fix | Fix runInContext for NgModuleRef injector (#46877) |
| bb7c80477b | fix | make parent injector argument required in createEnvironmentInjector (#46397) |
| Commit | Type | Description |
|---|---|---|
| 82acbf919b | feat | improve error message for nullish header (#46059) |
| Commit | Type | Description |
|---|---|---|
| 53ca936366 | feat | Add ability to create UrlTree from any ActivatedRouteSnapshot (#45877) |
| de058bba99 | feat | Add CanMatch guard to control whether a Route should match (#46021) |
| 6c1357dd7d | feat | Add stable cancelation code to NavigationCancel event (#46675) |
| a4ce273e50 | feat | Add the target RouterStateSnapshot to NavigationError (#46731) |
| abe3759e24 | fix | allow to return UrlTree from CanMatchFn (#46455) |
| e8c7dd10e9 | fix | Ensure APP_INITIALIZER of enabledBlocking option completes (#46026) |
| ce20ed067f | fix | Ensure Route injector is created before running CanMatch guards (#46394) |
| 6a7b818d94 | fix | Ensure target RouterStateSnapshot is defined in NavigationError (#46842) |
| f94c6f433d | fix | Expose CanMatchFn as public API (#46394) |
| e8ae0fe3e9 | fix | Fix cancelation code for canLoad rejections (#46752) |
| Commit | Type | Description |
|---|---|---|
| e9cb0454dc | feat | more closely align UpgradeModule#bootstrap() with angular.bootstrap() (#46214) |
AleksanderBodurri, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Cédric Exbrayat, Dmitrij Kuba, Dylan Hunn, George Kalpakas, Jessica Janiuk, JiaLiPassion, Joey Perrott, John Vandenberg, JoostK, Keith Li, Or'el Ben-Ya'ir, Paul Gschwendtner, Pawel Kozlowski, SyedAhm3r, arturovt, mariu, markostanimirovic and mgechev
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.0.7"></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
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 5bdbb6285b | fix | make sure falsy values are added to _globalTimelineStyles (#46863) |
| Commit | Type | Description |
|---|---|---|
| 41253f9c46 | fix | inputs/outputs incorrectly parsed in jit mode (#46813) |
| Commit | Type | Description |
|---|---|---|
| 4e77c7fbf3 | fix | do not invoke jasmine done callback multiple times with waitForAsync |
Andrew Kushnir, Andrew Scott, Bob Watson, Cédric Exbrayat, Doug Parker, George Kalpakas, Jessica Janiuk, Kristiyan Kostadinov, Paul Gschwendtner, acvi, dario-piotrowicz, jnizet and piyush132000
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.0.6"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 99697dae66 | fix | only consider used pipes for inline type-check requirement (#46807) |
| Commit | Type | Description |
|---|---|---|
| 4f469cbef3 | fix | expose ControlConfig in public API (#46594) |
| e8c8b695f2 | fix | Move all remaining errors in Forms to use RuntimeErrorCode. (#46654) |
| Commit | Type | Description |
|---|---|---|
| 14863acb1a | fix | add --project option to ng-add schematic (#46664) |
Alan Agius, Andrew Scott, Bob Watson, Dylan Hunn, George Kalpakas, Ivaylo Kirov, Jessica Janiuk, JoostK, Joshua VanAllen, Lukas Matta, Marcin Wosinek, Nicolas Molina Monroy, Paul Gschwendtner, SoulsMark, Uday Sony, dario-piotrowicz, markostanimirovic and zhysky
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.0.5"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| a3bd65e2b8 | fix | Ensure APP_INITIALIZER of enabledBlocking option completes (#46634) |
Alan Agius, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, Bob Watson, George Kalpakas, Paul Gschwendtner and Pawel Kozlowski
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.0.4"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 51be9bbe29 | fix | cleanup DOM elements when the root view is removed (#45143) |
| 999aca86c8 | fix | enable shadowElements to leave when their parent does (#46459) |
| Commit | Type | Description |
|---|---|---|
| 42aed6b13e | fix | handle CSS custom properties in NgStyle (#46451) |
| Commit | Type | Description |
|---|---|---|
| 1e7f22f00a | fix | trigger ApplicationRef.destroy when Platform is destroyed (#46497) |
| 8bde2dbc71 | fix | Update ngfor error code to be negative (#46555) |
| 57e8fc00eb | fix | Updates error to use RuntimeError code (#46526) |
| Commit | Type | Description |
|---|---|---|
| 74a26d870e | fix | Convert existing reactive errors to use RuntimeErrorCode. (#46560) |
| 747872212d | fix | Update a Forms validator error to use RuntimeError (#46537) |
| Commit | Type | Description |
|---|---|---|
| d6fac9e914 | fix | Ensure that new RouterOutlet instances work after old ones are destroyed (#46554) |
Alan Agius, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Bezael, Chad Ramos, Chellappan, Cédric Exbrayat, Dylan Hunn, George Kalpakas, Jeremy Meiss, Jessica Janiuk, Joey Perrott, KMathy, Kristiyan Kostadinov, Paul Gschwendtner, Pawel Kozlowski, Ramesh Thiruchelvam, Vaibhav Kumar, arturovt, dario-piotrowicz and renovate[bot]
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.0.3"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| 3dd7bb3f8f | fix | reset the start and done fns on player reset (#46364) |
| Commit | Type | Description |
|---|---|---|
| c086653655 | fix | deduplicate imports of standalone components in JIT compiler (#46439) |
| 5d3b97e1f8 | fix | handle NgModules with standalone pipes in TestBed correctly (#46407) |
| Commit | Type | Description |
|---|---|---|
| 6ad7b40a6f | fix | invalid style attribute being generated for null values (#46433) |
4javier, Aakash, Alan Agius, Andrew Kushnir, Aristeidis Bampakos, Dany Paredes, Derek Cormier, JoostK, Kristiyan Kostadinov, Paul Gschwendtner, Ramesh Thiruchelvam, behrooz bozorg chami, dario-piotrowicz, markostanimirovic, renovate[bot] and web-dave
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.0.2"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| ef5cba3df7 | fix | allow null in ngComponentOutlet (#46280) |
| Commit | Type | Description |
|---|---|---|
| 8ecfd71fd7 | fix | don't emit empty providers array (#46301) |
| b92c1a6ada | fix | use inline type-check blocks for components outside rootDir (#46096) |
| Commit | Type | Description |
|---|---|---|
| 3fd8948b4a | fix | Resolve forwardRef declarations for jit (#46334) |
Alex Rickabaugh, Andrew Scott, Badawi7, Daniel Schmitz, Derek Cormier, JoostK, Kevin Davila, Kristiyan Kostadinov, Paul Draper, Paul Gschwendtner, Tom Eustace, Totati, Younes Jaaidi, alefra, dario-piotrowicz, markostanimirovic, mgechev, piyush132000, sten-bone and vivekkoya
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.0.1"></a>
| Commit | Type | Description |
| Commit | Type | Description |
|---|---|---|
| b00d237c0e | fix | update API extractor version (#46259) |
| 9a0a7bac21 | perf | reduce input files for ng_package rollup and type bundle actions (#46187) |
| Commit | Type | Description |
|---|---|---|
| dde0b7f4b3 | fix | allow FormBuilder.group(...) to accept optional fields. (#46253) |
Adrien Crivelli, Alan Agius, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Dylan Hunn, Fabrizio Fallico, George Kalpakas, Jelle Bruisten, JoostK, Kristiyan Kostadinov, Krzysztof Platis, Paul Gschwendtner, Phalgun Vaddepalli, San Leen, dario-piotrowicz, mgechev and wellWINeo
<!-- CHANGELOG SPLIT MARKER -->
<a name="14.0.0"></a>
This is technically a breaking change, since objects with a key length and value 0 will no longer validate as empty. This is a very minor change, and…
Blog post "Angular v14 is now available".
AnimationDriver.getParentElement method has become required, so any
implementors of this interface are now required to provide an implementation
for this method. This breakage is unlikely to affect application developers,
as AnimationDriver is not expected to be implemented in user code.Keyframes names are now prefixed with the component's "scope name". For example, the following keyframes rule in a component definition, whose "scope name" is host-my-cmp:
@keyframes foo { ... }
will become:
@keyframes host-my-cmp_foo { ... }
Any TypeScript/JavaScript code which relied on the names of keyframes rules will no longer match.
The recommended solutions in this case are to either:
None or ShadowDomSupport for Node.js v12 has been removed as it will become EOL on 2022-04-30. Please use Node.js v14.15 or later.
TypeScript versions older than 4.6 are no longer supported.
Forms [email] input coercion
Forms [email] input value will be considered as true if it is defined with any value rather than false and 'false'.
Since Ivy, TestBed doesn't use AOT summaries. The aotSummaries fields in TestBed APIs were present, but unused. The fields were deprecated in previous major version and in v14 those fields are removed. The aotSummaries fields were completely unused, so you can just drop them from the TestBed APIs usage.
Forms classes accept a generic.
Forms model classes now accept a generic type parameter. Untyped versions of these classes are available to opt-out of the new, stricter behavior.
objects with a length key set to zero will no longer validate as empty.
This is technically a breaking change, since objects with a key length and value 0 will no longer validate as empty. This is a very minor change, and any reliance on this behavior is probably a bug anyway.
Queries including + will now actually query for + instead of space. Most workarounds involving custom codecs will be unaffected. Possible server-side workarounds will need to be undone.
JSONP will throw an error when headers are set on a request
JSONP does not support headers being set on requests. Before when a request was sent to a JSONP backend that had headers set the headers were ignored. The JSONP backend will now throw an error if it receives a request that has any headers set. Any uses of JSONP on requests with headers set will need to remove the headers to avoid the error.
This change may cause a breaking change in unit tests that are implicitly depending on a specific number and sequence of change detections in order for their assertions to pass.
This may break invalid calls to TransferState methods.
This tightens parameter types of TransferState usage, and is a minor breaking change which may reveal existing problematic calls.
The type of Route.pathMatch is now stricter. Places that use
pathMatch will likely need to be updated to have an explicit
Route/Routes type so that TypeScript does not infer the type as
string.
When returning a Promise from the
LoadChildrenCallback, the possible type is now restricted to
Type<any>|NgModuleFactory<any> rather than any.
initialNavigation: 'enabled' was deprecated in v11 and is replaced by
initialNavigation: 'enabledBlocking'.
The type of component on ActivatedRoute and ActivatedRouteSnapshot
includes string. In reality, this is not the case. The component
cannot be anything other than a component class.
initialUrl is set to string|UrlTree but in reality,
the Router only sets it to a value that will always be UrlTreeinitialUrl is documented as "The target URL passed into the
Router#navigateByUrl() call before navigation" but the value
actually gets set to something completely different. It's set to the
current internal UrlTree of the Router at the time navigation
occurs.With this change, there is no exact replacement for the old value of
initialUrl because it was never intended to be exposed.
Router.url is likely the best replacement for this.
In more specific use-cases, tracking the finalUrl between successful
navigations can also be used as a replacement.
Lazy loaded configs are now also validated once loaded like the initial set of routes are. Lazy loaded modules which have invalid Route configs will now error. Note that this is only done in dev mode so there is no production impact of this change.
When a guard returns a UrlTree, the router would previously schedule
the redirect navigation within a setTimeout. This timeout is now removed,
which can result in test failures due to incorrectly written tests.
Tests which perform navigations should ensure that all timeouts are
flushed before making assertions. Tests should ensure they are capable
of handling all redirects from the original navigation.
Previously, resolvers were waiting to be completed
before proceeding with the navigation and the Router would take the last
value emitted from the resolver.
The router now takes only the first emitted value by the resolvers
and then proceeds with navigation. This is now consistent with Observables
returned by other guards: only the first value is used.
in TaskTrackingZoneSpec track a periodic task until it is cancelled
The breaking change is scoped only to the plugin
zone.js/plugins/task-tracking. If you used TaskTrackingZoneSpec and
checked the pending macroTasks e.g. using (this.ngZone as any)._inner ._parent._properties.TaskTrackingZone.getTasksFor('macroTask'), then
its behavior slightly changed for periodic macrotasks. For example,
previously the setInterval macrotask was no longer tracked after its
callback was executed for the first time. Now it's tracked until
the task is explicitly cancelled, e.g with clearInterval(id).
ngModuleFactory input of the NgComponentOutlet directive is deprecated in favor of a newly added ngModule input. The ngModule input accepts references to the NgModule class directly, without the need to resolve module factory first.initialValueIsDefault option has been deprecated and replaced with the otherwise-identical nonNullable option, for the sake of naming consistency.AbstractControlOptions and an async validators argument to a FormControl. Previously, the async validators would just be silently dropped, resulting in a probably buggy forms. Now, the constructor call is deprecated, and Angular will print a warning in devmode.resolver argument of the RouterOutletContract.activateWith function and the resolver field of the OutletContext class are deprecated. Passing component factory resolvers are no longer needed. The ComponentFactoryResolver-related symbols were deprecated in @angular/core package since v13.| Commit | Type | Description |
|---|---|---|
| a6fa37bc6e | feat | make validateStyleProperty check dev-mode only (#45570) |
| 79d334b138 | feat | provide warnings for non-animatable CSS properties (#45212) |
| f8dc660605 | fix | allow animations with unsupported CSS properties (#44729) |
| 2a75754ee8 | fix | apply default params when resolved value is null or undefined (#45339) |
| e46b379204 | fix | implement missing transition delay (#44799) |
| 5c7c56bc85 | perf | improve algorithm to balance animation namespaces (#45057) |
| 4c778cdb28 | perf | made errors in the animations package tree shakeable (#45004) |
| 7a81481fb2 | perf | Remove generic objects in favor of Maps (#44482) |
| 6642e3c8fd | perf | remove no longer needed CssKeyframes classes (#44903) |
| 59559fdbac | refactor | make AnimationDriver.getParentElement required (#45114) |
| Commit | Type | Description |
|---|---|---|
| 31d7c3bd71 | feat | add getState method to LocationStrategy interface (#45648) |
| c89cf63059 | feat | support NgModule as an input to the NgComponentOutlet (#44815) |
| 38c03a2035 | feat | support years greater than 9999 (#43622) |
| bedb257afc | fix | cleanup URL change listeners when the root view is removed (#44901) |
| 10691c626b | fix | properly cast http param values to strings (#42643) |
| 05d50b849b | perf | make NgLocalization token tree-shakable (#45118) |
| Commit | Type | Description |
|---|---|---|
| bb8d7091c6 | fix | exclude empty styles from emitted metadata (#45459) |
| 4d6a1d6722 | fix | scope css keyframes in emulated view encapsulation (#42608) |
| f03e313f24 | fix | scope css keyframes in emulated view encapsulation (#42608) |
| Commit | Type | Description |
|---|---|---|
| 9cf14ff03d | feat | exclude abstract classes from strictInjectionParameters requirement (#44615) |
| 0072eb48ba | feat | initial implementation of standalone components (#44812) |
| 2142ffd295 | feat | propagate standalone flag to runtime (#44973) |
| 6f653e05f9 | feat | standalone types imported into NgModule scopes (#44973) |
| 752ddbc165 | feat | Support template binding to protected component members (#45823) |
| 3d13343975 | fix | better error messages for NgModule structural issues (#44973) |
| 046dad1a8d | fix | fix issue with incremental tracking of APIs for pipes (#45672) |
| 27b4af7240 | fix | full side-effectful registration of NgModules with ids (#45024) |
| 32c625d027 | fix | handle forwardRef in imports of standalone component (#45869) |
| 06050ac2b4 | fix | handle inline type-check blocks in nullish coalescing extended check (#45454) |
| a524a50361 | fix | handle standalone components with cycles (#46029) |
| 724e88e042 | fix | preserve forwardRef for component scopes (#46139) |
| 9cfea3d522 | fix | report invalid imports in standalone components during resolve phase (#45827) |
| c0778b4dfc | fix | Support resolve animation name from the DTS (#45107) |
| f2e5234e07 | fix | update unknown tag error for aot standalone components (#45919) |
| 35f20afcac | fix | use existing imports for standalone dependencies (#46029) |
| 8155428ba6 | perf | ignore the module.id anti-pattern for NgModule ids (#45024) |
| Commit | Type | Description |
|---|---|---|
| 174ce7dd13 | feat | add ApplicationRef.destroy method (#45624) |
| 5771b18a98 | feat | add the bootstrapApplication function (#45674) |
| 69018c9f42 | feat | allow for injector to be specified when creating an embedded view (#45156) |
| 94c949a60a | feat | allow for injector to be specified when creating an embedded view (#45156) |
| e702cafcf2 | feat | allow to throw on unknown elements in tests (#45479) |
| 6662a97c61 | feat | allow to throw on unknown elements in tests (#45479) |
| a6675925b0 | feat | allow to throw on unknown properties in tests (#45853) |
| 6eaaefd22e | feat | drop support for Node.js 12 (#45286) |
| c9d566ce4b | feat | drop support for TypeScript 4.4 and 4.5 (#45394) |
| b568a5e708 | feat | implement importProvidersFrom function (#45626) |
| d5a6cd1111 | feat | implement EnvironmentInjector with adapter to NgModuleRef (#45626) |
| 5a10fc4f82 | feat | implement standalone directives, components, and pipes (#45687) |
| e461f716d4 | feat | move ANIMATION_MODULE_TYPE injection token into core (#44970) |
| 94bba76a4a | feat | support TypeScript 4.6 (#45190) |
| 29039fcdbc | feat | support TypeScript 4.7 (#45749) |
| 225e4f2dbe | feat | triggerEventHandler accept optional eventObj (#45279) |
| 401dec46eb | feat | update TestBed to recognize Standalone Components (#45809) |
| 35653ce337 | fix | add more details to the MISSING_INJECTION_CONTEXT error (#46166) |
| d36fa111eb | fix | avoid Closure Compiler error in restoreView (#45445) |
| 0bc77f4cab | fix | better error message when unknown property is present (#46147) |
| f3eb7d9ecb | fix | Ensure the StandaloneService is retained after closure minification (#45783) |
| 701405fa71 | fix | handle AOT-compiled standalone components in TestBed correctly (#46052) |
| ddce357d1d | fix | improve TestBed declarations standalone error message (#45999) |
| ba9f30c9a6 | fix | include component name into unknown element/property error message (#46160) |
| 9fa6f5a552 | fix | incorrectly inserting elements inside <template> element (#43429) |
| d5719c2e0f | fix | input coercion (#42803) |
| be161bef79 | fix | memory leak in event listeners inside embedded views (#43075) |
| fa755b2a54 | fix | prevent BrowserModule providers from being loaded twice (#45826) |
| 3172b4cc99 | fix | produce proper error message for unknown props on <ng-template>s (#46068) |
| 4f1a813596 | fix | restore NgModule state correctly after TestBed overrides (#46049) |
| 3f7ecec59b | fix | set correct context for inject() for component ctors (#45991) |
| 4e413d9240 | fix | support nested arrays of providers in EnvironmentInjector (#45789) |
| fde4942cdf | fix | throw if standalone components are present in @NgModule.bootstrap (#45825) |
| 560188bf12 | fix | update unknown property error to account for standalone components in AOT (#46159) |
| df339d8abf | fix | update unknown tag error for jit standalone components (#45920) |
| aafac7228f | fix | verify standalone component imports in JiT (#45777) |
| e9317aee71 | perf | allow checkNoChanges mode to be tree-shaken in production (#45913) |
| 071c8af8ba | perf | avoid storing LView in __ngContext__ (#45051) |
| a96c4827c4 | perf | make Compiler, ApplicationRef and ApplicationInitStatus tree-shakable (#45102) |
| 45d98e7ca5 | perf | make IterableDiffers and KeyValueDiffers tree-shakable (#45094) |
| 1e60fe0a3e | perf | make LOCALE_ID and other tokens from ApplicationModule tree-shakable (#45102) |
| 88f1168506 | perf | only track LViews that are referenced in __ngContext__ (#45172) |
| 9add714b13 | refactor | remove deprecated aotSummaries fields in TestBed config (#45487) |
| Commit | Type | Description |
|---|---|---|
| 6c284ef32e | fix | stop scroll occurring at tabs level |
| Commit | Type | Description |
|---|---|---|
| 2dbdebc646 | feat | Add FormBuilder.nonNullable. (#45852) |
| e0a2248b32 | feat | Add a FormRecord type. (#45607) |
| 7ee121f595 | feat | Add untyped versions of the model classes for use in migration. (#45205) |
| 89d299105a | feat | Implement strict types for the Angular Forms package. (#43834) |
| f490c2de4e | feat | support negative indices in FormArray methods. (#44848) |
| 39be06037d | fix | Add a nonNullable option to FormControl for consistency. |
| 4332897baa | fix | Add UntypedFormBuilder (#45268) |
| 5d13e58aed | fix | Allow NonNullableFormBuilder to be injected. (#45904) |
| 8dd3f82f94 | fix | Correct empty validator to handle objects with a property length: 0. (#33729) |
| ff3f5a8d12 | fix | Fix a typing bug in FormBuilder. (#45684) |
| fe0e42a996 | fix | Make UntypedFormBuilder assignable to FormBuilder, and vice versa. (#45421) |
| b36dec6b5b | fix | not picking up disabled state if group is swapped out and disabled (#43499) |
| 9f6fa5b746 | fix | Prevent FormBuilder from distributing unions to control types. (#45942) |
| aa7b857be8 | fix | Property renaming safe code (#45271) |
| cae1e44608 | fix | Update the typed forms migration to use FormArray<T> instead of FormArray<T[]>. (#44933) |
| d336ba96d9 | fix | Update the typed forms migration. (#45281) |
| 018550ed50 | fix | Value and RawValue should be part of the public API. (#45978) |
| 2e96cede3e | fix | Warn on FormControls that are constructed with both options and asyncValidators. |
| Commit | Type | Description |
|---|---|---|
| 76a9a24cdc | fix | encode + signs in query params as %2B (angular#11058) (#45111) |
| d43c0e973f | fix | Throw error when headers are supplied in JSONP request (#45210) |
| Commit | Type | Description |
|---|---|---|
| 9d4af65e34 | feat | Provide plugin to delegate rename requests to Angular (#44696) |
| 3ae133c69e | fix | Fix detection of Angular for v14+ projects (#45998) |
| Commit | Type | Description |
|---|---|---|
| a50e2da64a | fix | ensure transitively loaded compiler code is tree-shakable (#45405) |
| Commit | Type | Description |
|---|---|---|
| d56a537196 | feat | Add migration to add explicit Route/Routes type (#45084) |
| Commit | Type | Description |
|---|---|---|
| 74a2e2e2ec | fix | cope with packages following APF v14+ (#45833) |
| Commit | Type | Description |
|---|---|---|
| a01bcb8e7e | fix | do not run change detection when loading Hammer (#44921) |
| b32647dc68 | fix | Make transfer state key typesafe. (#23020) |
| c7bf75dd5e | fix | remove obsolete shim for Map comparison in Jasmine (#45521) |
| 23c4c9601e | perf | avoid including Testability by default in bootstrapApplication (#45885) |
| Commit | Type | Description |
|---|---|---|
| dff5586d52 | feat | implement renderApplication function (#45785) |
| 22c71be94c | fix | update renderApplication to move appId to options (#45844) |
| Commit | Type | Description |
|---|---|---|
| f4fd1a8262 | feat | Add EnvironmentInjector to RouterOutlet.activateWith (#45597) |
| 910de8bc33 | feat | Add Route.title with a configurable TitleStrategy (#43307) |
| 4e0957a4e1 | feat | Add ability to specify providers on a Route (#45673) |
| dea8c86cd5 | feat | add ariaCurrentWhenActive input to RouterLinkActive directive (#45167) |
| 41e2a68e30 | feat | add type properties to all router events (#44189) |
| 4962a4a332 | feat | Allow loadChildren to return a Route array (#45700) |
| 791bd31424 | feat | set stricter type for Route.title (#44939) |
| 50004c143b | feat | Support lazy loading standalone components with loadComponent (#45705) |
| 7fd416d060 | fix | Fix type of Route.pathMatch to be more accurate (#45176) |
| 1c11a57155 | fix | merge interited resolved data and static data (#45276) |
| f8f3ab377b | fix | Remove any from LoadChildrenCallback type (#45524) |
| d4fc12fa19 | fix | Remove deprecated initialNavigation option (#45729) |
| 989e840cce | fix | Remove unused string type for ActivatedRoute.component (#45625) |
| 64f837d2c0 | fix | Update Navigation#initialUrl to match documentation and reality (#43863) |
| 96fd29c6d2 | fix | validate lazy loaded configs (#45526) |
| f13295f3a3 | perf | cancel the navigation instantly if at least one resolver doesn't emit any value (#45621) |
| 1d2f5c1101 | refactor | deprecate no longer needed resolver fields (#45597) |
| 7b367d9d90 | refactor | Remove unnecessary setTimeout in UrlTree redirects (#45735) |
| c9679760b2 | refactor | take only the first emitted value of every resolver to make it consistent with guards (#44573) |
| Commit | Type | Description |
|---|---|---|
| ec0a0e0669 | feat | add cacheOpaqueResponses option for data-groups (#44723) |
| bd04fbc05b | feat | emit a notification when the service worker is already up-to-date after check (#45216) |
Adrian Kunz, Alan Agius, AleksanderBodurri, Alex Rickabaugh, AlirezaEbrahimkhani, Amir Rustamzadeh, Andrew Kushnir, Andrew Scott, Chabbey François, Charles Lyding, Cédric Exbrayat, Daan De Smedt, David Schmidt, Derek Cormier, Dmitrij Kuba, Doug Parker, Dylan Hunn, Emma Twersky, George Kalpakas, George Looshch, Jan Kuehle, Jessica Janiuk, JiaLiPassion, JimMorrison723, Joe Martin (Crowdstaffing), Joey Perrott, JoostK, Kristiyan Kostadinov, Krzysztof Platis, Leosvel Pérez Espinosa, Maddie Klein, Mark Whitfeld, Martin Sikora, Michael-Doner, Michal Materowski, Minko Gechev, Paul Gschwendtner, Pawel Kozlowski, Payam Shahidi, Pusztai Tibor, Ricardo Mattiazzi Baumgartner, Roy Dorombozi, Ruslan Lekhman, Samuel Littley, Sergej Grilborzer, Sumit Arora, Tobias Speicher, Virginia Dooley, Zack Elliott, alirezaghey, ananyahs96, arturovt, cexbrayat, dario-piotrowicz, ivanwonder, kamikopi, markostanimirovic, markwhitfeld, mgechev, renovate[bot], twerske and zverbeta
Earlier changelog entries can be found in CHANGELOG_ARCHIVE.md file.
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
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
Your coding agent can read these notes before it upgrades. Set up the MCP server →