16.1.0-next.3 (2023-06-01)

June 1, 2023 · View on GitHub

16.1.0-next.3 (2023-06-01)

animations

CommitTypeDescription
bada9199f5fixTrigger leave animation when ViewContainerRef is injected (#48705)

common

CommitTypeDescription
72b4ff4b9efixuntrack subscription and unsubscription in async pipe (#50522)

compiler

CommitTypeDescription
721bc72649fixresolve deprecation warning with TypeScript 5.1 (#50460)

core

CommitTypeDescription
68017d4e75featadd ability to transform input values (#50420)
28c68f709cfixupdate ApplicationRef.isStable to account for rendering pending tasks (#50425)

16.0.4 (2023-06-01)

animations

CommitTypeDescription
df65c4fc8ffixTrigger leave animation when ViewContainerRef is injected (#48705)

common

CommitTypeDescription
7e1bc513defixuntrack subscription and unsubscription in async pipe (#50522)

core

CommitTypeDescription
9970b29acefixupdate ApplicationRef.isStable to account for rendering pending tasks (#50425)

16.1.0-next.2 (2023-05-24)

core

CommitTypeDescription
75fdbcb8f2fixfix Self flag inside embedded views with custom injectors (#50270)
8b44ba3170fixhost directives incorrectly validating aliased bindings (#50364)

http

CommitTypeDescription
2cdb4c5911fixcreate macrotask during request handling instead of load start (#50406)

16.0.3 (2023-05-24)

core

CommitTypeDescription
c11041e372fixadds missing symbols for animation standalone bundling test (#50434)
98e8fdf40efixfix Self flag inside embedded views with custom injectors (#50270)
199ff4fe7ffixhost directives incorrectly validating aliased bindings (#50364)

http

CommitTypeDescription
080bbd2137fixcreate macrotask during request handling instead of load start (#50406)

16.1.0-next.1 (2023-05-17)

core

CommitTypeDescription
c0ebe34cbdfixadd additional component metadata to component ID generation (#50336)
03f1e240b3fixallow onDestroy unregistration while destroying (#50237)
165b8b647cfixallow passing value of any type to isSignal function (#50035)

16.0.2 (2023-05-17)

core

CommitTypeDescription
c1016d4e57fixadd additional component metadata to component ID generation (#50340)
cc41758b59fixallow onDestroy unregistration while destroying (#50237)
7d679bdb59fixallow passing value of any type to isSignal function (#50035)

16.1.0-next.0 (2023-05-10)

core

CommitTypeDescription
69dadd2502featsupport TypeScript 5.1 (#50156)

16.0.1 (2023-05-10)

core

CommitTypeDescription
52c74d3b4afixadd additional component metadata to component ID generation (#50203)
048b6b1e0dfixbootstrapApplication call not rejected when error is thrown in importProvidersFrom module (#50120)
d68796782ffixhandle hydration of root components with injected ViewContainerRef (#50136)
f751ce6445fixhandle projection of hydrated containters into components that skip hydration (#50199)
346ab73dd9fixonly try to retrieve transferred state on the browser (#50144)

16.0.0 (2023-05-03)

Blog post "Angular v16 is now available".

Breaking Changes

  • Angular Compatibility Compiler (ngcc) has been removed and as a result Angular View Engine libraries will no longer work
  • Deprecated EventManager method addGlobalEventListener has been removed as it is not used by Ivy.

bazel

  • Several changes to the Angular Package Format (APF)
    • Removal of FESM2015
    • Replacing ES2020 with ES2022
    • Replacing FESM2020 with FESM2022
  • Several changes to the Angular Package Format (APF)
    • Removal of FESM2015
    • Replacing ES2020 with ES2022
    • Replacing FESM2020 with FESM2022

common

  • MockPlatformLocation is now provided by default in tests. Existing tests may have behaviors which rely on BrowserPlatformLocation instead. For example, direct access to the window.history in either the test or the component rather than going through the Angular APIs (Location.getState()). The quickest fix is to update the providers in the test suite to override the provider again TestBed.configureTestingModule({providers: [{provide: PlatformLocation, useClass: BrowserPlatformLocation}]}). The ideal fix would be to update the code to instead be compatible with MockPlatformLocation instead.
  • If the 'ngTemplateOutletContext' is different from the context, it will result in a compile-time error.

Before the change, the following template was compiling:

interface MyContext {
  $implicit: string;
}

@Component({
  standalone: true,
  imports: [NgTemplateOutlet],
  selector: 'person',
  template: `
    <ng-container
      *ngTemplateOutlet="
        myTemplateRef;
        context: { $implicit: 'test', xxx: 'xxx' }
      "></ng-container>
  `,
})
export class PersonComponent {
  myTemplateRef!: TemplateRef<MyContext>;
}

However, it does not compile now because the 'xxx' property does not exist in 'MyContext', resulting in the error: 'Type '{ $implicit: string; xxx: string; }' is not assignable to type 'MyContext'.'

The solution is either:

  • add the 'xxx' property to 'MyContext' with the correct type or
  • add 'any(...)insidethetemplatetomaketheerrordisappear.However,addingany(...)' inside the template to make the error disappear. However, adding 'any(...)' does not correct the error but only preserves the previous behavior of the code.
  • Deprecated XhrFactory export from @angular/common/http has been removed. Use XhrFactory from @angular/common instead.

compiler

    • TypeScript 4.8 is no longer supported.

core

  • QueryList.filter now supports type guard functions, which will result in type narrowing. Previously if you used type guard functions, it resulted in no changes to the return type. Now the type would be narrowed, which might require updates to the application code that relied on the old behavior.

  • zone.js versions 0.11.x and 0.12.x are not longer supported.

    • entryComponents has been deleted from the @NgModule and @Component public APIs. Any usages can be removed since they weren't doing anyting.
    • ANALYZE_FOR_ENTRY_COMPONENTS injection token has been deleted. Any references can be removed.
  • ComponentRef.setInput will only set the input on the component if it is different from the previous value (based on Object.is equality). If code relies on the input always being set, it should be updated to copy objects or wrap primitives in order to ensure the input value differs from the previous call to setInput.

  • RendererType2.styles no longer accepts a nested arrays.

  • The APP_ID token value is no longer randomly generated. If you are bootstrapping multiple application on the same page you will need to set to provide the APP_ID yourself.

    bootstrapApplication(ComponentA, {
      providers: [
       { provide: APP_ID, useValue: 'app-a' },
       // ... other providers ...
      ]
    });
    
  • The ReflectiveInjector and related symbols were removed. Please update the code to avoid references to the ReflectiveInjector symbol. Use Injector.create as a replacement to create an injector instead.

  • Node.js v14 support has been removed

    Node.js v14 is planned to be End-of-Life on 2023-04-30. Angular will stop supporting Node.js v14 in Angular v16. Angular v16 will continue to officially support Node.js versions v16 and v18.

platform-browser

  • The deprecated BrowserTransferStateModule was removed, since it's no longer needed. The TransferState class can be injected without providing the module. The BrowserTransferStateModule was empty starting from v14 and you can just remove the reference to that module from your applications.

platform-server

  • Users that are using SSR with JIT mode will now need to add import to @angular/compiler before bootstrapping the application.

    NOTE: this does not effect users using the Angular CLI.

  • renderApplication method no longer accepts a root component as first argument. Instead, provide a bootstrapping function that returns a Promise<ApplicationRef>.

    Before

    const output: string = await renderApplication(RootComponent, options);
    

    Now

    const bootstrap = () => bootstrapApplication(RootComponent, appConfig);
    const output: string = await renderApplication(bootstrap, options);
    
  • renderModuleFactory has been removed. Use renderModule instead.

router

  • The Scroll event's routerEvent property may also be a NavigationSkipped event. Previously, it was only a NavigationEnd event.
  • ComponentFactoryResolver has been removed from Router APIs. Component factories are not required to create an instance of a component dynamically. Passing a factory resolver via resolver argument is no longer needed and code can instead use ViewContainerRef.createComponent without the factory resolver.
  • The RouterEvent type is no longer present in the Event union type representing all router event types. If you have code using something like filter((e: Event): e is RouterEvent => e instanceof RouterEvent), you'll need to update it to filter((e: Event|RouterEvent): e is RouterEvent => e instanceof RouterEvent).
  • Tests which mock ActivatedRoute instances may need to be adjusted because Router.createUrlTree now does the right thing in more scenarios. This means that tests with invalid/incomplete ActivatedRoute mocks may behave differently than before. Additionally, tests may now navigate to a real URL where before they would navigate to the root. Ensure that tests provide expected routes to match. There is rarely production impact, but it has been found that relative navigations when using an ActivatedRoute that does not appear in the current router state were effectively ignored in the past. By creating the correct URLs, this sometimes resulted in different navigation behavior in the application. Most often, this happens when attempting to create a navigation that only updates query params using an empty command array, for example router.navigate([], {relativeTo: route, queryParams: newQueryParams}). In this case, the relativeTo property should be removed.

Deprecations

core

  • makeStateKey, StateKey and TransferState exports have been moved from @angular/platform-browser to @angular/core. Please update the imports.
- import {makeStateKey, StateKey, TransferState} from '@angular/platform-browser';
+ import {makeStateKey, StateKey, TransferState} from '@angular/core';
  • EnvironmentInjector.runInContext is now deprecated, with runInInjectionContext functioning as a direct replacement:

    // Previous method version (deprecated):
    envInjector.runInContext(fn);
    // New standalone function:
    runInInjectionContext(envInjector, fn);
    
  • The @Directive/@Component moduleId property is now deprecated. It did not have any effect for multiple major versions and will be removed in v17.

platform-browser

  • BrowserModule.withServerTransition has been deprecated. APP_ID should be used instead to set the application ID. NB: Unless, you render multiple Angular applications on the same page, setting an application ID is not necessary.

    Before:

    imports: [
      BrowserModule.withServerTransition({ appId: 'serverApp' }),
      ...
    ]
    

    After:

    imports: [
      BrowserModule,
      { provide: APP_ID, useValue: 'serverApp' },
      ...
    ],
    
  • ApplicationConfig has moved, please import ApplicationConfig from @angular/core instead.

platform-server

  • PlatformConfig.baseUrl and PlatformConfig.useAbsoluteUrl platform-server config options are deprecated as these were not used.

CommitTypeDescription
48aa96ea13refactorremove Angular Compatibility Compiler (ngcc) (#49101)
2703fd6260refactorremove deprecated EventManager method addGlobalEventListener (#49645)

common

CommitTypeDescription
5dce2a5a3afeatProvide MockPlatformLocation by default in BrowserTestingModule (#49137)
d47fef72cbfixstrict type checking for ngtemplateoutlet (#48374)
c41a21658crefactorremove deprecated XhrFactory export from http entrypoint (#49251)

compiler

CommitTypeDescription
1a6ca68154featadd support for compile-time required inputs (#49304)
13dd614cd1featadd support for compile-time required inputs (#49453)
8f539c11f4featadd support for compile-time required inputs (#49468)
79cdfeb392featdrop support for TypeScript 4.8 (#49155)
1407a9aeaffeatsupport multiple configuration files in extends (#49125)
9de1e9da8ffixincorrectly matching directives on attribute bindings (#49713)
6623810e4dfixProduce diagnositc if directive used in host binding is not exported (#49527)

compiler-cli

CommitTypeDescription
03d1d00ad9featAdd an extended diagnostic for nSkipHydration (#49512)
ed817e32fefixCatch FatalDiagnosticError during template type checking (#49527)
49fe974501perfoptimize NgModule emit for standalone components (#49837)

core

CommitTypeDescription
89d291c367featadd assertInInjectionContext (#49529)
4e9531f777featadd mergeApplicationConfig method (#49253)
d7d6514addfeatAdd ability to configure NgZone in bootstrapApplication (#49557)
bc5ddabdcbfeatadd Angular Signals to the public API (#49150)
17e9862653featadd API to provide CSP nonce for inline stylesheets (#49444)
605c536420featadd migration to remove moduleId references (#49496)
99d874fe3bfeatadd support for TypeScript 5.0 (#49126)
d1617c449dfeatallow removal of previously registered DestroyRef callbacks (#49493)
b2327f4df1featAllow typeguards on QueryList.filter (#48042)
061f3d1086featDrop public factories property for IterableDiffers : Breaking change (#49598)
fdf61974d1featdrop support for zone.js versions <=0.12.0 (#49331)
9c5fd50de4feateffects can optionally return a cleanup function (#49625)
c024574f46featexpose makeStateKey, StateKey and TransferState (#49563)
a5f1737d1cfeatexpose onDestroy on ApplicationRef (#49677)
e883198460featimplement takeUntilDestroyed in rxjs-interop (#49154)
0814f20594featintroduce runInInjectionContext and deprecate prior version (#49396)
0f5c8003ccfeatintroduce concept of DestroyRef (#49158)
9b65b84cb9featMark components for check if they read a signal (#49153)
8997bdc03bfeatprototype implementation of @angular/core/rxjs-interop (#49154)
585e34bf6cfeatremove entryComponents (#49484)
aad05ebeb4featsupport usage of non-experimental decorators with TypeScript 5.0 (#49492)
6d7be42da7fixadd newline to hydration mismatch error (#49965)
f8e25864e8fixallow async functions in effects (#49783)
84216dabfcfixcatch errors from source signals outside of .next (#49769)
be23b7ce65fixComponentRef.setInput only sets input when not equal to previous (#49607)
316c91b1a4fixdeprecate moduleId @Component property (#49496)
fd9dcd36cdfixEnsure effects can be created when Zone is not defined (#49890)
9180f98f0efixensure takeUntilDestroyed unregisters onDestroy listener on unsubscribe (#49901)
4721c48a24fixerror if document body is null (#49818)
2650f1afc1fixexecute input setters in non-reactive context (#49906)
f8b95b9da6fixexecute query setters in non-reactive context (#49906)
ef91a2e0fefixexecute template creation in non-reactive context (#49883)
87549af73cfixFix capitalization of toObservableOptions (#49832)
0e5f9ba6f4fixgenerate consistent component IDs (#48253)
fedc75624cfixinclude inner ViewContainerRef anchor nodes into ViewRef.rootNodes output (#49867)
df1dfc4c17fixmake sure that lifecycle hooks are not tracked (#49701)
c34d7e0822fixonDestroy should be registered only on valid DestroyRef (#49804)
2f2ef14f9efixresolve InitialRenderPendingTasks promise on complete (#49784)
c7d8d3ee37fixtoObservable should allow writes to signals in the effect (#49769)
b4531f1d82fixtyping of TestBed Common token. (#49997)
a4e749ffcafixWhen using setInput, mark view dirty in same was as markForCheck (#49711)
9b9c818f99perfchange RendererType2.styles to accept a only a flat array (#49072)
82d6fbb109refactorgenerate a static application ID (#49422)
3b863ddc1erefactorRemove ReflectiveInjector symbol (#48103)
f594725951refactorremove Node.js v14 support (#49255)

forms

CommitTypeDescription
07a1aa3004featImprove typings form (async)Validators (#48679)

http

CommitTypeDescription
aff1512950featallow HttpClient to cache requests (#49509)
15c91a53aefixdelay accessing pendingTasks.whenAllTasksComplete (#49784)
9f0c6d1ed1fixensure new cache state is returned on each request (#49749)
45a6ac09fdfixforce macro task creation during HTTP request (#49546)
2a580b6f0bfixHTTP cache was being disabled prematurely (#49826)
2eb9b8b402fixwait for all XHR requests to finish before stabilizing application (#49776)

migrations

CommitTypeDescription
5e5dac278dfeatMigration to remove Router guard and resolver interfaces (#49337)

platform-browser

CommitTypeDescription
761e02d912featadd a public API function to enable non-destructive hydration (#49666)
630af63faefeatdeprecate withServerTransition call (#49422)
81e7d15ef6featenable HTTP request caching when using provideClientHydration (#49699)
74c925c19cfixexport deprecated TransferState as type (#50015)
2312eb53effixKeyEventsPlugin should keep the same behavior (#49330)
c934a8e72bfixonly add ng-app-id to style on server side (#49465)
9165ff2517fixreuse server generated component styles (#48253)
e8e36811d5fixset nonce attribute in a platform compatible way (#49624)
3aa85a8087refactormove ApplicationConfig to core (#49253)
9bd9a11f4erefactorremove deprecated BrowserTransferStateModule symbol (#49718)

platform-server

CommitTypeDescription
b5278cc115featrenderApplication now accepts a bootstrapping method (#49248)
056d68002ffeatadd provideServerSupport function to provide server capabilities to an application (#49380)
7870fb07fefeatrename provideServerSupport to provideServerRendering (#49678)
a08a8ff108fixbundle @angular/domino in via esbuild (#49229)
5ea624f313fixremove dependency on @angular/platform-browser-dynamic (#50064)
e99460865erefactordeprecate useAbsoluteUrl and baseUrl (#49546)
41f27ad086refactorremove renderApplication overload that accepts a component (#49463)
17abe6dc96refactorremove deprecated renderModuleFactory (#49247)

router

CommitTypeDescription
ea32c3289afeatExpose information about the last successful Navigation (#49235)
455c728525feathelper functions to convert class guards to functional (#48709)
f982a3f965featOpt-in for binding Router information to component inputs (#49633)
1f055b90b6fixEnsure anchor scrolling happens on ignored same URL navigations (#48025)
6193a3d406fixfix = not parsed in router segment name (#47332)
c0b1b7becffixRemove deprecated ComponentFactoryResolver from APIs (#49239)
1e32709e0efixremove RouterEvent from Event union type (#46061)
3c7e637374fixRoute matching should only happen once when navigating (#49163)
1600687fe5fixRoute matching should only happen once when navigating (#49163)
31f210bf2cfixRouter.createUrlTree should work with any ActivatedRoute (#48508)

service-worker

CommitTypeDescription
5e7fc259eafeatadd function to provide service worker (#48247)

15.2.9 (2023-05-03)

common

CommitTypeDescription
9107e931cafixfix incorrectly reported distortion for padded images (#49889)

compiler-cli

CommitTypeDescription
7c58885797fixcatch fatal diagnostic when getting diagnostics for components (#50046)

15.2.8 (2023-04-19)

core

CommitTypeDescription
2fff8fadbefixhandle invalid classes in class array bindings (#49924)

http

CommitTypeDescription
05a0225debfixprevent headers from throwing an error when initializing numerical values (#49379)

router

CommitTypeDescription
09a42d988efixcanceledNavigationResolution: 'computed' with redirects to the current URL (#49793)

15.2.7 (2023-04-12)

compiler

CommitTypeDescription
b0c1a90f55fixProduce diagnositc if directive used in host binding is not exported (#49792)

compiler-cli

CommitTypeDescription
a40529af2efixCatch FatalDiagnosticError during template type checking (#49792)

core

CommitTypeDescription
702ec90110fixWhen using setInput, mark view dirty in same way as markForCheck (#49747)

Special Thanks

Alan Agius, Andrew Kushnir, Andrew Scott, Kristiyan Kostadinov, Matthieu Riegler and Nikola Kološnjaji

13.4.0 (2023-04-06)

common

CommitTypeDescription
ae34dbca1bfeatBackport NgOptimizedImage to v13

Special Thanks

Alex Castle and Paul Gschwendtner

15.2.6 (2023-04-05)

core

CommitTypeDescription
d9efa1b0d7featchange the URL sanitization to only block javascript: URLs (#49659)

router

CommitTypeDescription
cad7274ef9fixcreate correct URL relative to path with empty child (#49691)
9b61379096fixEnsure initial navigation clears current navigation when blocking (#49572)

Special Thanks

Andrew Scott, Guillaume Weghsteen, John Manners, Johnny Gérard, Matthieu Riegler, Robin Richtsfeld, Sandra Limacher, Sarthak Thakkar, Vinit Neogi and vikram menon

15.2.5 (2023-03-29)

common

CommitTypeDescription
ca5acadb78fixinvalid ImageKit transformation (#49201)

compiler

CommitTypeDescription
077f6b4674fixdo not unquote CSS values (#49460)
c3cff35869fixhandle trailing comma in object literal (#49535)

core

CommitTypeDescription
d201fc2decfixset style property value to empty string instead of an invalid value (#49460)

router

CommitTypeDescription
978d37f324fixEnsure Router preloading works with lazy component and static children (#49571)
a844435514fixfix #49457 outlet activating with old info (#49459)

Special Thanks

Alan Agius, Andrew Scott, Asaf Malin, Jan Cabadaj, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Sid and Tano Abeleyra

15.2.4 (2023-03-22)

core

CommitTypeDescription
bae6b5ceb1fixAllow TestBed.configureTestingModule to work with recursive cycle of standalone components. (#49473)
087f4412affixmore accurate matching of classes during content projection (#48888)

Special Thanks

Aditya Srinivasan, Alex Rickabaugh, Andrew Scott, Kristiyan Kostadinov, Masaoki Kobayashi, Matthieu Riegler, Paul Gschwendtner, Peter Götz, Thomas Pischke, Virginia Dooley and avmaxim

15.2.3 (2023-03-16)

Special Thanks

Alan Agius, Esteban Gehring, Matthieu Riegler and Virginia Dooley

14.3.0 (2023-03-13)

common

CommitTypeDescription
37bbc61cfefeatBackport NgOptimizedImage to Angular 14.

Special Thanks

Alex Castle, Joey Perrott and Paul Gschwendtner

15.2.2 (2023-03-08)

migrations

CommitTypeDescription
6207d6f1f0fixadd protractor support if protractor imports are detected (#49274)

Special Thanks

Alan Agius, Andrew Kushnir, Andrew Scott, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Sai Kartheek Bommisetty and Vinit Neogi

15.2.1 (2023-03-01)

common

CommitTypeDescription
f0e926074dfixmake Location.normalize() return the correct path when the base path contains characters that interfere with regex syntax. (#49181)

compiler-cli

CommitTypeDescription
04d8b6c61afixdo not persist component analysis if template/styles are missing (#49184)

core

CommitTypeDescription
d60ea6ab5afixupdate zone.js peerDependencies ranges (#49244)

migrations

CommitTypeDescription
44d095a61cfixavoid migrating the same class multiple times in standalone migration (#49245)
92b0bda9e4fixdelete barrel exports in standalone migration (#49176)

router

CommitTypeDescription
3062442728fixadd error message when using loadComponent with a NgModule (#49164)

Special Thanks

Alan Agius, Andrew Kushnir, Aristeidis Bampakos, Craig Spence, Doug Parker, Iván Navarro, Joey Perrott, Kristiyan Kostadinov, Matthieu Riegler, Michael Ziluck, Paul Gschwendtner, Stephanie Tuerk, Vincent and Virginia Dooley

15.2.0 (2023-02-22)

Deprecations

  • Class and InjectionToken guards and resolvers are deprecated. Instead, write guards as plain JavaScript functions and inject dependencies with inject from @angular/core.

CommitTypeDescription
926c35f4acdocsDeprecate class and InjectionToken and resolvers (#47924)

common

CommitTypeDescription
54b24eb40ffeatAdd loaderParams attribute to NgOptimizedImage (#48907)

compiler-cli

CommitTypeDescription
0cf11167f1fixincorrectly detecting forward refs when symbol already exists in file (#48988)

core

CommitTypeDescription
a154db8a81featadd ng generate schematic to convert declarations to standalone (#48790)
345e737daafeatadd ng generate schematic to convert to standalone bootstrapping APIs (#48848)
e7318fc758featadd ng generate schematic to remove unnecessary modules (#48832)

language-service

CommitTypeDescription
4ae384fd61featAllow auto-imports of a pipe via quick fix when its selector is used, both directly and via reexports. (#48354)
141333411efeatIntroduce a new NgModuleIndex, and use it to suggest re-exports. (#48354)
d0145033bdfixgenerate forwardRef for same file imports (#48898)

migrations

CommitTypeDescription
2796230e95fixadd enum in mode option in standalone schema (#48851)
816e76a578fixautomatically prune root module after bootstrap step (#49030)
bdbf21d04bfixavoid generating imports with forward slashes (#48993)
32cf4e5cb9fixavoid internal modules when generating imports (#48958)
521ccfbe6cfixavoid interrupting the migration if language service lookup fails (#49010)
a40cd47aa7fixavoid modifying testing modules without declarations (#48921)
1afa6ed322fixdon't add ModuleWithProviders to standalone test components (#48987)
c98c6a8452fixdon't copy animations modules into the imports of test components (#49147)
8389557848fixdon't copy unmigrated declarations into imports array (#48882)
f82bdc4b01fixdon't delete classes that may provide dependencies transitively (#48866)
759db12e0bfixduplicated comments on migrated classes (#48966)
ba38178d19fixgenerate forwardRef for same file imports (#48898)
03fcb36cfdfixmigrate HttpClientModule to provideHttpClient() (#48949)
2de6dae16dfixmigrate RouterModule.forRoot with a config object to use features (#48935)
770191cf1ffixmigrate tests when switching to standalone bootstrap API (#48987)
c7926b5773fixmove standalone migrations into imports (#48987)
65c74ed93efixnormalize paths to posix (#48850)
6377487b1afixonly exclude bootstrapped declarations from initial standalone migration (#48987)
e9e4449a43fixpreserve tsconfig in standalone migration (#48987)
ffad1b49d9fixreduce number of files that need to be checked (#48987)
ba7a757cc5fixreturn correct alias when conflicting import exists (#49139)
49a7c9f94afixstandalone migration incorrectly throwing path error for multi app projects (#48958)
584976e6c8fixsupport --defaults in standalone migration (#48921)
03f47ac901fixuse consistent quotes in generated imports (#48876)
ebae506d89fixuse import remapper in root component (#49046)
40c976c909fixuse NgForOf instead of NgFor (#49022)
4ac25b2affperfavoid re-traversing nodes when resolving bootstrap call dependencies (#49010)
26cb7ab2e6perfspeed up language service lookups (#49010)

platform-browser

CommitTypeDescription
bf4ad38117fixremove styles from DOM of destroyed components (#48298)

platform-server

CommitTypeDescription
25e220a23afixavoid duplicate TransferState info after renderApplication call (#49094)

router

CommitTypeDescription
31b94c762ffeatAdd a withNavigationErrorHandler feature to provideRouter (#48551)
dedac8d3f7featAdd test helper for trigger navigations in tests (#48552)

Special Thanks

Alan Agius, Alex Castle, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Dylan Hunn, Ikko Eltociear Ashimine, Ilyass, Jessica Janiuk, Joey Perrott, John Manners, Kalbarczyk, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Virginia Dooley, Walid Bouguima, cexbrayat and mgechev

15.1.5 (2023-02-15)

forms

CommitTypeDescription
5f2a3edcf2fixMake radio buttons respect [attr.disabled] (#48864)

Special Thanks

AleksanderBodurri, Alvaro Junqueira, Dylan Hunn, Joey Perrott, Matthieu Riegler, PaloMiklo and Paul Gschwendtner

15.1.4 (2023-02-08)

Special Thanks

Jessica Janiuk, Kian Yang Lee, Matthieu Riegler, Redouane Bekkouche and Simona Cotin

15.1.3 (2023-02-02)

animations

CommitTypeDescription
d36dfd4b62fixfix non-animatable warnings for easing (#48583)

common

CommitTypeDescription
a334e4efbefixwarn if using ngSrcset without a configured image loader (#48804)

compiler

CommitTypeDescription
171b4d4640fixincorrect code when non-null assertion is used after a safe access (#48801)

migrations

CommitTypeDescription
9e86dd231bfixFixed file format issue with lint (#48859)
af31f98b00fixmigration host incorrectly reading empty files (#48849)

platform-server

CommitTypeDescription
73972c684efixinsert transfer state script before other script tags (#48868)

router

CommitTypeDescription
d5b2c249a3fixHandle routerLink directive on svg anchors. (#48857)

Special Thanks

Alan Agius, Besim Gürbüz, Brecht Billiet, Dario Piotrowicz, Dylan Hunn, Iván Navarro, Jessica Janiuk, Kristiyan Kostadinov, Matthieu Riegler, Onkar Ruikar, Payam Valadkhan, Santosh Yadav, Virginia Dooley and Walid Bouguima

15.1.2 (2023-01-25)

compiler

CommitTypeDescription
98ccb57117fixhandle css selectors with space after an escaped character. (#48558)

compiler-cli

CommitTypeDescription
145f848a10fixresolve deprecation warning (#48812)

router

CommitTypeDescription
a6b10f6e59fix'createUrlTreeFromSnapshot' with empty paths and named outlets (#48734)

Special Thanks

Alan Agius, AleksanderBodurri, Andrew Kushnir, Andrew Scott, Charles Lyding, Dylan Hunn, JoostK, Matthieu Riegler, Paul Gschwendtner, Payam Valadkhan, Virginia Dooley, Yann Thomas LE MOIGNE and dario-piotrowicz

15.1.1 (2023-01-18)

common

CommitTypeDescription
68ce4f6ab4fixUpdate Location to get a normalized URL valid in case a represented URL starts with the substring equals APP_BASE_HREF (#48489)
032b2bd689perfavoid excessive DOM mutation in NgClass (#48433)

core

CommitTypeDescription
dd54f6bd96fixmakeEnvironmentProviders should accept EnvironmentProviders (#48720)

Special Thanks

Alan Agius, Alex Rickabaugh, Andrew Scott, Aristeidis Bampakos, Bob Watson, Jens, Konstantin Kharitonov, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Vladyslav Slipchenko, ced, dario-piotrowicz, mgechev and ノウラ

15.1.0 (2023-01-10)

Deprecations

router

  • CanLoad guards in the Router are deprecated. Use CanMatch instead.

  • router writable properties

    The following strategies are meant to be configured by registering the application strategy in DI via the providers in the root NgModule or bootstrapApplication:

    • routeReuseStrategy
    • titleStrategy
    • urlHandlingStrategy

    The following options are meant to be configured using the options available in RouterModule.forRoot or provideRouter.

    • onSameUrlNavigation
    • paramsInheritanceStrategy
    • urlUpdateStrategy
    • canceledNavigationResolution

    The following options are available in RouterModule.forRoot but not available in provideRouter:

    • malformedUriErrorHandler - This was found to not be used anywhere internally.
    • errorHandler - Developers can instead subscribe to Router.events and filter for NavigationError.

common

CommitTypeDescription
fe50813664featAdd BrowserPlatformLocation to the public API (#48488)
2f4f0638c7fixAdd data attribtue to NgOptimizedImage (#48497)

compiler

CommitTypeDescription
a532d71975featallow self-closing tags on custom elements (#48535)
caf7228f8afixresolve deprecation warning (#48652)
33f35b04effixtype-only symbols incorrectly retained when downlevelling custom decorators (#48638)

compiler-cli

CommitTypeDescription
caedef0f5bfixupdate @babel/core dependency and lock version (#48634)

core

CommitTypeDescription
6acae1477afeatAdd TestBed.runInInjectionContext to help test functions which use inject (#47955)
38421578a2featMake the isStandalone() function available in public API (#48114)
dd42974b07featsupport TypeScript 4.9 (#48005)

forms

CommitTypeDescription
8aa8b4b77cfixForm provider FormsModule.withConfig return a FormsModule (#48526)

language-service

CommitTypeDescription
5f0b53c735featAllow auto-imports to suggest multiple possible imports. (#47787)
6a8ea29a04fixexpose package.json for vscode extension resolution (#48678)
ce8160ecb2fixPrevent crashes on unemitable references (#47938)
e615b598bafixship /api entry-point (#48670)
6ce7d76a0efixupdate packages/language-service/build.sh script to work with vscode-ng-language-service's new Bazel build (#48663)

localize

CommitTypeDescription
a1a8e91ecafixadd triple slash type reference on @angular/localize on `ng add (#48502)

migrations

CommitTypeDescription
cc284afbbcfixcombine newly-added imports in import manager (#48620)

router

CommitTypeDescription
228e992db7docsDeprecate canLoad guards in favor of canMatch (#48180)
0a8b8a66cddocsDeprecate public members of Router that are meant to be configured elsewhere (#48006)
332461bd0cfeatAdd ability to override onSameUrlNavigation default per-navigation (#48050)
f58ad86e51featAdd feature provider for enabling hash navigation (#48301)
73f03ad2d2featAdd new NavigationSkipped event for ignored navigations (#48024)
3fe75710d9fixpage refresh should not destroy history state (#48540)

Special Thanks

Alan Agius, Alex Castle, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Bob Watson, Charles Lyding, Derek Cormier, Doug Parker, Dylan Hunn, George Kalpakas, Greg Magolan, Jessica Janiuk, JiaLiPassion, Joey Perrott, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Renan Ferro, Tim Gates, Vadim, Virginia Dooley, ced, mgechev, piyush132000, robertIsaac and sr5434

15.0.4 (2022-12-14)

animations

CommitTypeDescription
6c1064c72ffixfix incorrect handling of camel-case css properties (#48436)

common

CommitTypeDescription
f30d18a942fixFix TestBed.overrideProvider type to include multi (#48424)

compiler-cli

CommitTypeDescription
b55d2dab5dfixevaluate const tuple types statically (#48091)

Special Thanks

Alan Agius, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, Bob Watson, BrowserPerson, Jens, Jessica Janiuk, Joey Perrott, JoostK, Konstantin Kharitonov, Lukas Matta, Piotr Kowalski, Virginia Dooley, Yannick Baron, dario-piotrowicz, lsst25, piyush132000 and why520crazy

15.0.3 (2022-12-07)

common

CommitTypeDescription
50b1c2bf52fixDon't generate srcsets with very large sources (#47997)
bf44dc234afixUpdate Location to support base href containing origin (#48327)

compiler

CommitTypeDescription
9a5d84249afixmake sure selectors inside container queries are correctly scoped (#48353)

compiler-cli

CommitTypeDescription
167bc0d163fixProduce diagnostic rather than crash when using invalid hostDirective (#48314)

core

CommitTypeDescription
e4dcaa513efixunable to inject ChangeDetectorRef inside host directives (#48355)

Special Thanks

Alan Agius, Alex Castle, Andrew Kushnir, Andrew Scott, Bob Watson, Derek Cormier, Joey Perrott, Konstantin Kharitonov, Kristiyan Kostadinov, Paul Gschwendtner, Pawel Kozlowski, dario-piotrowicz and piyush132000

15.0.2 (2022-11-30)

compiler-cli

CommitTypeDescription
86a21f5569fixaccept inheriting the constructor from a class in a library (#48156)

Special Thanks

Alan Agius, Andrew Scott, Aristeidis Bampakos, Bob Watson, Derek Cormier, JoostK, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Rokas Brazdžionis, mgechev and piyush132000

15.0.1 (2022-11-22)

common

CommitTypeDescription
930af9dd26fixFix MockPlatformLocation events and missing onPopState implementation (#48113)

forms

CommitTypeDescription
b342e55509fixdon't mutate validators array (#47830)
a12a120272fixFormBuilder.group return right type with shorthand parameters. (#48084)

language-service

CommitTypeDescription
cc8b76ef7cfixcorrectly handle host directive inputs/outputs (#48147)
a8c33bf931fixupdate packages/language-service/build.sh script to work with vscode-ng-language-service's new Bazel build (#48120)

router

CommitTypeDescription
e4309d57d8fixcorrect type of nextState parameter in canDeactivate (#48038)
9baefd085ffixEnsure renavigating in component init works with enabledBlocking (#48063)
fa5528fb5ffixrestore 'history.state' on popstate even if navigationId missing (#48033)

Special Thanks

Alan Agius, Andrew Scott, Bjarki, Bob Watson, Brooke, Derek Cormier, Dylan Hunn, George Kalpakas, Greg Magolan, Ikko Ashimine, Ivan Rodriguez, Jessica Janiuk, Joe Roxbury, Joey Perrott, Kristiyan Kostadinov, Matthieu Riegler, Mikhail Savchuk, Nebojsa Cvetkovic, Pawel Kozlowski, Volodymyr and Wooshaah

12.2.17 (2022-11-22)

Breaking Changes

core

  • Existing iframe usages may have security-sensitive attributes applied as an attribute or property binding in a template or via host bindings in a directive. Such usages would require an update to ensure compliance with the new stricter rules around iframe bindings.

core

CommitTypeDescription
b871db57dafixhardening attribute and property binding rules for )

Special Thanks

Andrew Kushnir, Andrew Scott, George Looshch, Joey Perrott and Paul Gschwendtner

13.3.12 (2022-11-21)

Breaking Changes

core

  • Existing iframe usages may have security-sensitive attributes applied as an attribute or property binding in a template or via host bindings in a directive. Such usages would require an update to ensure compliance with the new stricter rules around iframe bindings.

core

CommitTypeDescription
b1d7b79ff4fixhardening attribute and property binding rules for )

Special Thanks

Andrew Kushnir, Andrew Scott, George Looshch, Joey Perrott and Paul Gschwendtner

14.2.12 (2022-11-21)

Breaking Changes

core

  • Existing iframe usages may have security-sensitive attributes applied as an attribute or property binding in a template or via host bindings in a directive. Such usages would require an update to ensure compliance with the new stricter rules around iframe bindings.

core

CommitTypeDescription
54814c8e9bfixhardening attribute and property binding rules for )

Special Thanks

Andrew Kushnir

15.0.0 (2022-11-16)

Blog post "Angular v15 is now available".

Breaking Changes

compiler

  • 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:

    • change the component's view encapsulation to the None or ShadowDom
    • define keyframes rules in global stylesheets (e.g styles.css)
    • define keyframes rules programmatically in code.

compiler-cli

  • Invalid constructors for DI may now report compilation errors

    When a class inherits its constructor from a base class, the compiler may now report an error when that constructor cannot be used for DI purposes. This may either be because the base class is missing an Angular decorator such as @Injectable() or @Directive(), or because the constructor contains parameters which do not have an associated token (such as primitive types like string). These situations used to behave unexpectedly at runtime, where the class may be constructed without any of its constructor parameters, so this is now reported as an error during compilation.

    Any new errors that may be reported because of this change can be resolved either by decorating the base class from which the constructor is inherited, or by adding an explicit constructor to the class for which the error is reported.

  • Angular compiler option enableIvy has been removed as Ivy is the only rendering engine.

core

  • Angular no longer supports Node.js versions 14.[15-19].x and 16.[10-12].x. Current supported versions of Node.js are 14.20.x, 16.13.x and 18.10.x.
  • TypeScript versions older than 4.8 are no longer supported.
  • Existing iframe usages may have security-sensitive attributes applied as an attribute or property binding in a template or via host bindings in a directive. Such usages would require an update to ensure compliance with the new stricter rules around iframe bindings.
  • Existing iframe usages may have src or srcdoc preceding other attributes. Such usages may need to be updated to ensure compliance with the new stricter rules around iframe bindings.

forms

  • setDisabledState will always be called when a ControlValueAccessor is attached. You can opt-out with FormsModule.withConfig or ReactiveFormsModule.withConfig.

localize

    • canParse method has been removed from all translation parsers in @angular/localize/tools. analyze should be used instead.
    • the hint parameter in theparse methods is now mandatory.

router

  • Previously, the RouterOutlet would immediately instantiate the component being activated during navigation. Now the component is not instantiated until the change detection runs. This could affect tests which do not trigger change detection after a router navigation. In rarer cases, this can affect production code that relies on the exact timing of component availability.
  • The title property is now required on ActivatedRouteSnapshot
  • relativeLinkResolution is no longer configurable in the Router. This option was used as a means to opt out of a bug fix.

Deprecations

common

  • The DATE_PIPE_DEFAULT_TIMEZONE token is now deprecated in favor of the DATE_PIPE_DEFAULT_OPTIONS token, which accepts an object as a value and the timezone can be defined as a field (called timezone) on that object.

core

    • The ability to pass an NgModule to the providedIn option for @Injectable and InjectionToken is now deprecated.

    providedIn: NgModule was intended to be a tree-shakable alternative to NgModule providers. It does not have wide usage, and in most cases is used incorrectly, in circumstances where providedIn: 'root' should be preferred. If providers should truly be scoped to a specific NgModule, use NgModule.providers instead.

    • The ability to set providedIn: 'any' for an @Injectable or InjectionToken is now deprecated.

    providedIn: 'any' is an option with confusing semantics and is almost never used apart from a handful of esoteric cases internal to the framework.

  • The bit field signature of Injector.get() has been deprecated, in favor of the new options object.

  • The bit field signature of TestBed.inject() has been deprecated, in favor of the new options object.

router

  • The RouterLinkWithHref directive is deprecated, use the RouterLink directive instead. The RouterLink contains the code from the RouterLinkWithHref to handle elements with href attributes.

common

CommitTypeDescription
c0c7efaf7cfeatadd provideLocationMocks() function to provide Location mocks (#47674)
75e6297f09featadd preload tag on server for priority img (#47343)
4fde292bb5featAdd automatic srcset generation to ngOptimizedImage (#47547)
9483343ebffeatAdd fill mode to NgOptimizedImage (#47738)
bdb5371033featadd injection token for default DatePipe configuration (#47157)
449d29b701fixAdd fetchpriority to ngOptimizedImage preloads (#48010)
4f52d4e474fixdon't generate srcset if noopImageLoader is used (#47804)
3a18398d83fixDon't warn about image distortion is fill mode is enabled (#47824)
edea15f2c6fixexport the IMAGE_CONFIG token (#48051)
8abf1c844cfixfix formatting on oversized image error (#47188)
ca7bf65933fixrename rawSrc -> ngSrc in NgOptimizedImage directive (#47362)
b3879dbf14fixsupport density descriptors with 2+ decimals (#47197)
fa4798095efixupdate size error to mention 'fill' mode (#47797)
23f210c0abfixwarn if using supported CDN but not built-in loader (#47330)
945432e3fafixWarn on fill ngOptimizedImage without height (#48036)

compiler

CommitTypeDescription
051f75648dfixscope css keyframes in emulated view encapsulation (#42608)
39b72e208bfixupdate element schema (#47552)
48b354a83efixupdate element schema (#47552)

compiler-cli

CommitTypeDescription
bc54687c7bfixexclude abstract classes from strictInjectionParameters requirement (#44615)
309b2cde51fiximplement more host directive validations as diagnostics (#47768)
2e1dddec45fixsupport hasInvalidatedResolutions. (#47585)
19ad4987f9fixuse @ts-ignore. (#47636)
8fcadaad48perfcache source file for reporting type-checking diagnostics (#47471)
16f96eeabfrefactorremove enableIvy options (#47346)

core

CommitTypeDescription
e3cef4a784docsdeprecate providedIn: NgModule and providedIn: 'any' (#47616)
1b9fd46d14featadd support for Node.js version 18 (#47730)
ed11a13c3cfeatdrop support for TypeScript 4.6 and 4.7 (#47690)
db28badfe6featenable the new directive composition API (#47642)
7de1469be6featintroduce EnvironmentProviders wrapper type (#47669)
841c8e5138featsupport object-based DI flags in Injector.get() (#46761)
120555a626featsupport object-based DI flags in TestBed.inject() (#46761)
96c0e42e61fixallow readonly arrays for standalone imports (#47851)
28f289b825fixhardening attribute and property binding rules for )
d4b3c0b47cfixhardening rules related to the attribute order on iframe elements (#47935)
85330f3fd9fixupdate isDevMode to rely on ngDevMode (#47475)

forms

CommitTypeDescription
a8569e3802featexport forms utility functions: isFormArray, isFormGroup… (#47718)
96b7fe93affixcall setDisabledState on ControlValueAcessor when control is enabled (#47576)
a99d9d67f3fixdon't mutate validators array (#47830)
2625dc1312fixImprove a very commonly viewed error message by adding a guide. (#47969)
ae29f98c20fixRuntime error pages must begin with leading zero (#47991)

http

CommitTypeDescription
3ba99e286afeatallow for child HttpClients to request via parents (#47502)
84d0d33c35featintroduce provideHttpClientTesting provider function (#47502)
62c7a7a16efeatintroduce functional interceptors (#47502)
e47b129070featintroduce the provideHttpClient() API (#47502)
ea16a98dfefixbetter handle unexpected undefined XSRF tokens (#47683)
e7b48da713fixrename withLegacyInterceptors to withInterceptorsFromDi (#47901)

language-service

CommitTypeDescription
bebef5fb43featQuick fix to import a component when its selector is used (#47088)
e7ee53c541featsupport to fix invalid banana in box (#47393)

localize

CommitTypeDescription
400a6b5e37fixadd polyfill in polyfills array instead of polyfills.ts (#47569)
b6fd814542fixupdate ng add schematic to support Angular CLI version 15 (#47763)
d36fd3d9e4refactorremove deprecated canParse method from TranslationParsers (#47275)

platform-server

CommitTypeDescription
2908eba59cfixalign server renderer interface with base renderer (#47868)

router

CommitTypeDescription
7bee28d037featadd a migration to remove relativeLinkResolution usages (#47604)
5163e3d876featAdd UrlTree constructor to public API (#47186)
da58801f95featauto-unwrap default exports when lazy loading (#47586)
c3f857975dfeatmake RouterOutlet name an Input so it can be set dynamically (#46569)
f73ef21442featmerge RouterLinkWithHref into RouterLink (#47630)
16c8f55663featmigrate RouterLinkWithHref references to RouterLink (#47599)
07017a7bd3featprevent provideRouter() from usage in @Component (#47669)
79e9e8ab77fixDelay router scroll event until navigated components have rendered (#47563)
6a88bad019fixEnsure ActivatedRouteSnapshot#title has correct value (#47481)
7b89d95c0efixRemove deprecated relativeLinkResolution (#47623)

Special Thanks

Alan Agius, AleksanderBodurri, Alex Castle, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Charles Lyding, Dylan Hunn, Ferdinand Malcher, George Kalpakas, Jeremy Elbourn, Jessica Janiuk, JiaLiPassion, Joey Perrott, JoostK, Kara Erickson, Kristiyan Kostadinov, Martin Probst, Matthias Weiß, Matthieu Riegler, Paul Gschwendtner, Pawel Kozlowski, Sabareesh Kappagantu, WD Snoeijer, angular-robot[bot], arturovt, ced, dario-piotrowicz, ivanwonder and jaybell

14.2.11 (2022-11-16)

router

CommitTypeDescription
aef353c143fixEnsure renavigating in component init works with enabledBlocking (#48066)

Special Thanks

Alan Agius, Andrew Scott and Mujo Osmanovic

14.2.10 (2022-11-09)

core

CommitTypeDescription
a4312e1be5fixadd zone.js version 0.12.x as a valid peer dependency (#48002)

router

CommitTypeDescription
db867fee77fixfix redirectTo on named outlets - resolves #33783 (#47927)

Special Thanks

Alan Agius, Albert Szekely, Andrew Scott, Doug Parker, Kristiyan Kostadinov, Markus Eckstein, Peter Scriven and abergquist

14.2.9 (2022-11-03)

platform-browser

CommitTypeDescription
92d28bdd99perfresolve memory leak when using animations with shadow DOM (#47903)

platform-server

CommitTypeDescription
d2d9bbf5cefixcall onSerialize when state is empty (#47888)

Special Thanks

Alan Agius, Kristiyan Kostadinov, Virginia Dooley and mgechev

14.2.8 (2022-10-26)

Special Thanks

Andrew Scott, Balaji, Paul Gschwendtner, WD Snoeijer, onrails and vyom1611

14.2.7 (2022-10-19)

Special Thanks

Bob Watson, Charles Barnes, Joey Perrott, Virginia Dooley, WD Snoeijer, abergquist and urugator

14.2.6 (2022-10-12)

compiler-cli

CommitTypeDescription
3fd176a905fixadd missing period to error message (#47744)
c3821f5ab5perfminimize filesystem calls when generating shims (#47682)

Special Thanks

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

14.2.5 (2022-10-05)

This release contains various API docs improvements.

Special Thanks

Alexander Wiebe, Ciprian Sauliuc, Dmytro Mezhenskyi, George Kalpakas, Joe Martin (Crowdstaffing), Jordan, Ole M, Paul Gschwendtner, Pawel Kozlowski and mgechev

14.2.4 (2022-09-28)

compiler-cli

CommitTypeDescription
a4b66fe1e5perfcache source file for reporting type-checking diagnostics (#47508)

core

CommitTypeDescription
2c46b5ab24fixcorrectly check for typeof of undefined in ngDevMode check (#47480)

Special Thanks

Alan Agius, Ashley Hunter, Doug Parker, Jessica Janiuk, JoostK, Kristiyan Kostadinov, Rokas Brazdžionis and Simona Cotin

14.2.3 (2022-09-21)

animations

CommitTypeDescription
bba2dae812fixmake sure that the useAnimation function delay is applied (#47468)

Special Thanks

AleksanderBodurri, Andrew Kushnir, Andrew Scott, Bob Watson, George Kalpakas, Joey Perrott, Mauro Mattos, dario-piotrowicz, fabioemoutinho and famzila

14.2.2 (2022-09-14)

animations

CommitTypeDescription
937e6c5b3dfixmake sure that the animation function delay is applied (#47285)

common

CommitTypeDescription
c9bdf9bab1fixrename rawSrc -> ngSrc in NgOptimizedImage directive (#47362) (#47396)

core

CommitTypeDescription
a3e1303f04fiximply @Optional flag when a default value is provided (#47242)

forms

CommitTypeDescription
80c66a1e57fixdon't prevent default behavior for forms with method="dialog" (#47308)

Special Thanks

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

14.2.1 (2022-09-07)

common

CommitTypeDescription
c0d7ac9ec2fiximprove formatting of image warnings (#47299)
1875ce520afixuse DOCUMENT token to query for preconnect links (#47353)

compiler

CommitTypeDescription
0e35829580fixavoid errors for inputs with Object-builtin names (#47220)

service-worker

CommitTypeDescription
6091786696fixinclude headers in requests for assets (#47260)
28d33505fdfixonly consider GET requests as navigation requests (#47263)

Special Thanks

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

14.2.0 (2022-08-25)

animations

CommitTypeDescription
b96e571897fixfix stagger timing not handling params (#47208)

common

CommitTypeDescription
b380fdd59efeatadd a density cap for image srcsets (#47082)
7ce497e5bcfeatadd built-in Imgix loader (#47082)
bff870db61featadd cloudflare loader (#47082)
86e77a5d55featadd Image directive skeleton (#45627) (#47082)
0566205a02featAdd image lazy loading and fetchpriority (#47082)
4e952ba216featadd loaders for cloudinary & imagekit (#47082)
e854a8cddefeatadd loading attr to NgOptimizedImage (#47082)
8d3701cb4cfeatadd warnings re: image distortion (#47082)
d5f7da2120featdefine public API surface for NgOptimizedImage directive (#47082)
d3c3426aa4featdetect LCP images in NgOptimizedImage and assert if priority is set (#47082)
451b85ca17featexplain why width/height is required (#47082)
586274fe65featprovide an ability to exclude origins from preconnect checks in NgOptimizedImage (#47082)
57f3386e5bfeatsupport custom srcset attributes in NgOptimizedImage (#47082)
7baf9a46cdfeatverify that priority images have preconnect links (#47082)
f81765b333featwarn if rendered size is much smaller than intrinsic (#47082)
e2ab99b95efixallow null/undefined to be passed to ngClass input (#39280) (#46906)
bedf537951fixallow null/undefined to be passed to ngStyle input (#47069)
f9511bf6e8fixavoid interacting with a destroyed injector (#47243)
dc29e21b14fixconsider density descriptors with multiple digits as valid (#47230)
801daf82d1fixdetect data: and blob: inputs in NgOptimizedImage directive (#47082)
fff8056e7ffixfix formatting on oversized image error (#47188) (#47232)
1ca2ce19abfixremove default for image width (#47082)
c5db867ddcfixremove duplicate deepForEach (#47189)
1cf43deb18fixsanitize rawSrc and rawSrcset values in NgOptimizedImage directive (#47082)
d71dfe931ffixset bound width and height onto host element (#47082)
32caa8b669fixsupport density descriptors with 2+ decimals (#47197) (#47232)
ae4405f0bffixthrow if srcset is used with rawSrc (#47082)
0c8eb8bc82perfmonitor LCP only for images without priority attribute (#47082)

compiler-cli

CommitTypeDescription
ea89677c12featsupport more recent version of tsickle (#47018)

core

CommitTypeDescription
d1e83e1b30featadd createComponent function (#46685)
10becab70efeatadd reflectComponentType function (#46685)
4b377d3a6dfeatintroduce createApplication API (#46475)
31429eacccfeatsupport TypeScript 4.8 (#47038)
796840209cfixalign TestBed interfaces and implementation (#46635)

forms

CommitTypeDescription
426af91a42featadd FormBuilder.record() method (#46485)
b302797de4fixCorrectly infer FormBuilder types involving [value, validators] shorthand in more cases. (#47034)

language-service

CommitTypeDescription
598b72bd05featsupport fix the component missing member (#46764)

platform-browser

CommitTypeDescription
07606e3181featadd isEmpty method to the TransferState class (#46915)

platform-server

CommitTypeDescription
2b4d7f6733featsupport document reference in render functions (#47032)

router

CommitTypeDescription
0abb67af59featallow guards and resolvers to be plain functions (#46684)
75df404467featCreate APIs for using Router without RouterModule (#47010)
10289f1f6efeatexpose resolved route title (#46826)
8600732b09featExpose the default matcher for Routes used by the Router (#46913)
422323cee0featimprove typings for RouterLink boolean inputs (#47101)
26ea97688cfeatMake router directives standalone (#46758)
2a43beec15fixFix route recognition behavior with some versions of rxjs (#47098)

service-worker

CommitTypeDescription
383090858cfeatsupport sendRequest as a notificationclick action (#46912)
3f548610ddfixexport NoNewVersionDetectedEvent (#47044)
482b6119c2fixupdate golden index.md (#47044)

Special Thanks

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

14.1.3 (2022-08-17)

compiler

CommitTypeDescription
0583227708fixinfinite loop in parser assignment expression with invalid left-hand expression (#47151)

Special Thanks

AlirezaEbrahimkhani, Alma Eyre, Andrew Scott, Bob Watson, George Kalpakas, Kalbarczyk, Kristiyan Kostadinov, Leosvel Pérez Espinosa, Roman Matusevich and Sonu Kapoor

14.1.2 (2022-08-10)

core

CommitTypeDescription
5ff715c549fixcheck if transplanted views are attached to change detector (#46974)

router

CommitTypeDescription
439d77e852fixFix route recognition behavior with some versions of rxjs (#47098) (#47112)

Special Thanks

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

14.1.1 (2022-08-03)

core

CommitTypeDescription
3606917732fiximprove the missing control flow directive message (#46903)

router

CommitTypeDescription
79825d3f10fixDo not call preload method when not necessary (#47007)
05f3f7445afixUse correct return type for provideRoutes function (#46941)

Special Thanks

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

14.1.0 (2022-07-20)

Deprecations

core

  • The createNgModuleRef is deprecated in favor of newly added createNgModule one.
  • The bit field signature of inject() has been deprecated, in favor of the new options object. Correspondingly, InjectFlags is deprecated as well.

animations

CommitTypeDescription
55308f2df5featadd provideAnimations() and provideNoopAnimations() functions (#46793)

common

CommitTypeDescription
4a2e7335b1featmake the CommonModule pipes standalone (#46401)
a7597dd080featmake the CommonModule directives standalone (#46469)

compiler

CommitTypeDescription
33ce3883a5featAdd extended diagnostic to warn when missing let on ngForOf (#46683)
6f11a58040featAdd extended diagnostic to warn when text attributes are intended to be bindings (#46161)
9e836c232ffeatwarn when style suffixes are used with attribute bindings (#46651)

compiler-cli

CommitTypeDescription
93c65e7b14featadd extended diagnostic for non-nullable optional chains (#46686)
131d029da1featdetect missing control flow directive imports in standalone components (#46146)
6b8e60c06afiximprove the missingControlFlowDirective message (#46846)

core

CommitTypeDescription
e8e8e5f171featadd createComponent function
b5153814affeatadd reflectComponentType function
96c6139c9afeatadd ability to set inputs on ComponentRef (#46641)
a6d5fe202cfeatalias createNgModuleRef as createNgModule (#46789)
71e606d3c3featexpose EnvironmentInjector on ApplicationRef (#46665)
19e6d9ccd3featimport AsyncStackTaggingZone if available (#46693)
a7a14df5f8featintroduce EnvironmentInjector.runInContext API (#46653)
fa52b6e906featoptions object to supersede bit flags for inject() (#46649)
af20112222featsupport the descendants option for ContentChild queries (#46638)
945a3ad359fixFix runInContext for NgModuleRef injector (#46877)
bb7c80477bfixmake parent injector argument required in createEnvironmentInjector (#46397)

http

CommitTypeDescription
82acbf919bfeatimprove error message for nullish header (#46059)

router

CommitTypeDescription
53ca936366featAdd ability to create UrlTree from any ActivatedRouteSnapshot (#45877)
de058bba99featAdd CanMatch guard to control whether a Route should match (#46021)
6c1357dd7dfeatAdd stable cancelation code to NavigationCancel event (#46675)
a4ce273e50featAdd the target RouterStateSnapshot to NavigationError (#46731)
abe3759e24fixallow to return UrlTree from CanMatchFn (#46455)
e8c7dd10e9fixEnsure APP_INITIALIZER of enabledBlocking option completes (#46026)
ce20ed067ffixEnsure Route injector is created before running CanMatch guards (#46394)
6a7b818d94fixEnsure target RouterStateSnapshot is defined in NavigationError (#46842)
f94c6f433dfixExpose CanMatchFn as public API (#46394)
e8ae0fe3e9fixFix cancelation code for canLoad rejections (#46752)

upgrade

CommitTypeDescription
e9cb0454dcfeatmore closely align UpgradeModule#bootstrap() with angular.bootstrap() (#46214)

Special Thanks

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

14.0.7 (2022-07-20)

animations

CommitTypeDescription
5bdbb6285bfixmake sure falsy values are added to _globalTimelineStyles (#46863)

compiler

CommitTypeDescription
41253f9c46fixinputs/outputs incorrectly parsed in jit mode (#46813)

core

CommitTypeDescription
4e77c7fbf3fixdo not invoke jasmine done callback multiple times with waitForAsync

Special Thanks

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

14.0.6 (2022-07-13)

compiler-cli

CommitTypeDescription
99697dae66fixonly consider used pipes for inline type-check requirement (#46807)

forms

CommitTypeDescription
4f469cbef3fixexpose ControlConfig in public API (#46594)
e8c8b695f2fixMove all remaining errors in Forms to use RuntimeErrorCode. (#46654)

localize

CommitTypeDescription
14863acb1afixadd --project option to ng-add schematic (#46664)

Special Thanks

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

14.0.5 (2022-07-06)

router

CommitTypeDescription
a3bd65e2b8fixEnsure APP_INITIALIZER of enabledBlocking option completes (#46634)

Special Thanks

Alan Agius, Alex Rickabaugh, Andrew Kushnir, Andrew Scott, Aristeidis Bampakos, Bob Watson, George Kalpakas, Paul Gschwendtner and Pawel Kozlowski

14.0.4 (2022-06-29)

animations

CommitTypeDescription
51be9bbe29fixcleanup DOM elements when the root view is removed (#45143)
999aca86c8fixenable shadowElements to leave when their parent does (#46459)

common

CommitTypeDescription
42aed6b13efixhandle CSS custom properties in NgStyle (#46451)

core

CommitTypeDescription
1e7f22f00afixtrigger ApplicationRef.destroy when Platform is destroyed (#46497)
8bde2dbc71fixUpdate ngfor error code to be negative (#46555)
57e8fc00ebfixUpdates error to use RuntimeError code (#46526)

forms

CommitTypeDescription
74a26d870efixConvert existing reactive errors to use RuntimeErrorCode. (#46560)
747872212dfixUpdate a Forms validator error to use RuntimeError (#46537)

router

CommitTypeDescription
d6fac9e914fixEnsure that new RouterOutlet instances work after old ones are destroyed (#46554)

Special Thanks

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]

14.0.3 (2022-06-22)

animations

CommitTypeDescription
3dd7bb3f8ffixreset the start and done fns on player reset (#46364)

core

CommitTypeDescription
c086653655fixdeduplicate imports of standalone components in JIT compiler (#46439)
5d3b97e1f8fixhandle NgModules with standalone pipes in TestBed correctly (#46407)

platform-server

CommitTypeDescription
6ad7b40a6ffixinvalid style attribute being generated for null values (#46433)

Special Thanks

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

14.0.2 (2022-06-15)

common

CommitTypeDescription
ef5cba3df7fixallow null in ngComponentOutlet (#46280)

compiler-cli

CommitTypeDescription
8ecfd71fd7fixdon't emit empty providers array (#46301)
b92c1a6adafixuse inline type-check blocks for components outside rootDir (#46096)

core

CommitTypeDescription
3fd8948b4afixResolve forwardRef declarations for jit (#46334)

Special Thanks

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

14.0.1 (2022-06-08)

bazel

CommitTypeDescription
b00d237c0efixupdate API extractor version (#46259)
9a0a7bac21perfreduce input files for ng_package rollup and type bundle actions (#46187)

forms

CommitTypeDescription
dde0b7f4b3fixallow FormBuilder.group(...) to accept optional fields. (#46253)

Special Thanks

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

14.0.0 (2022-06-02)

Blog post "Angular v14 is now available".

Breaking Changes

animations

  • The 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.

common

  • Adds new required class member that any implementors of the LocationStrategy will need to satisfy. Location does not depend on PlatformLocation anymore.

compiler

  • 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:

    • change the component's view encapsulation to the None or ShadowDom
    • define keyframes rules in global stylesheets (e.g styles.css)
    • define keyframes rules programmatically in code.

core

  • Support 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

  • 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.

http

  • 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 reques

    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.

platform-browser

  • 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.

router

  • 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.

    • The type of initialUrl is set to string|UrlTree but in reality, the Router only sets it to a value that will always be UrlTree
    • initialUrl 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.

zone.js

  • 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).

Deprecations

common

  • The 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.

forms

  • The initialValueIsDefault option has been deprecated and replaced with the otherwise-identical nonNullable option, for the sake of naming consistency.
  • It is now deprecated to provide both 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.

router

  • The 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.

animations

CommitTypeDescription
a6fa37bc6efeatmake validateStyleProperty check dev-mode only (#45570)
79d334b138featprovide warnings for non-animatable CSS properties (#45212)
f8dc660605fixallow animations with unsupported CSS properties (#44729)
2a75754ee8fixapply default params when resolved value is null or undefined (#45339)
e46b379204fiximplement missing transition delay (#44799)
5c7c56bc85perfimprove algorithm to balance animation namespaces (#45057)
4c778cdb28perfmade errors in the animations package tree shakeable (#45004)
7a81481fb2perfRemove generic objects in favor of Maps (#44482)
6642e3c8fdperfremove no longer needed CssKeyframes classes (#44903)
59559fdbacrefactormake AnimationDriver.getParentElement required (#45114)

common

CommitTypeDescription
31d7c3bd71featadd getState method to LocationStrategy interface (#45648)
c89cf63059featsupport NgModule as an input to the NgComponentOutlet (#44815)
38c03a2035featsupport years greater than 9999 (#43622)
bedb257afcfixcleanup URL change listeners when the root view is removed (#44901)
10691c626bfixproperly cast http param values to strings (#42643)
05d50b849bperfmake NgLocalization token tree-shakable (#45118)

compiler

CommitTypeDescription
bb8d7091c6fixexclude empty styles from emitted metadata (#45459)
4d6a1d6722fixscope css keyframes in emulated view encapsulation (#42608)
f03e313f24fixscope css keyframes in emulated view encapsulation (#42608)

compiler-cli

CommitTypeDescription
9cf14ff03dfeatexclude abstract classes from strictInjectionParameters requirement (#44615)
0072eb48bafeatinitial implementation of standalone components (#44812)
2142ffd295featpropagate standalone flag to runtime (#44973)
6f653e05f9featstandalone types imported into NgModule scopes (#44973)
752ddbc165featSupport template binding to protected component members (#45823)
3d13343975fixbetter error messages for NgModule structural issues (#44973)
046dad1a8dfixfix issue with incremental tracking of APIs for pipes (#45672)
27b4af7240fixfull side-effectful registration of NgModules with ids (#45024)
32c625d027fixhandle forwardRef in imports of standalone component (#45869)
06050ac2b4fixhandle inline type-check blocks in nullish coalescing extended check (#45454)
a524a50361fixhandle standalone components with cycles (#46029)
724e88e042fixpreserve forwardRef for component scopes (#46139)
9cfea3d522fixreport invalid imports in standalone components during resolve phase (#45827)
c0778b4dfcfixSupport resolve animation name from the DTS (#45107)
f2e5234e07fixupdate unknown tag error for aot standalone components (#45919)
35f20afcacfixuse existing imports for standalone dependencies (#46029)
8155428ba6perfignore the module.id anti-pattern for NgModule ids (#45024)

core

CommitTypeDescription
174ce7dd13featadd ApplicationRef.destroy method (#45624)
5771b18a98featadd the bootstrapApplication function (#45674)
69018c9f42featallow for injector to be specified when creating an embedded view (#45156)
94c949a60afeatallow for injector to be specified when creating an embedded view (#45156)
e702cafcf2featallow to throw on unknown elements in tests (#45479)
6662a97c61featallow to throw on unknown elements in tests (#45479)
a6675925b0featallow to throw on unknown properties in tests (#45853)
6eaaefd22efeatdrop support for Node.js 12 (#45286)
c9d566ce4bfeatdrop support for TypeScript 4.4 and 4.5 (#45394)
b568a5e708featimplement importProvidersFrom function (#45626)
d5a6cd1111featimplement EnvironmentInjector with adapter to NgModuleRef (#45626)
5a10fc4f82featimplement standalone directives, components, and pipes (#45687)
e461f716d4featmove ANIMATION_MODULE_TYPE injection token into core (#44970)
94bba76a4afeatsupport TypeScript 4.6 (#45190)
29039fcdbcfeatsupport TypeScript 4.7 (#45749)
225e4f2dbefeattriggerEventHandler accept optional eventObj (#45279)
401dec46ebfeatupdate TestBed to recognize Standalone Components (#45809)
35653ce337fixadd more details to the MISSING_INJECTION_CONTEXT error (#46166)
d36fa111ebfixavoid Closure Compiler error in restoreView (#45445)
0bc77f4cabfixbetter error message when unknown property is present (#46147)
f3eb7d9ecbfixEnsure the StandaloneService is retained after closure minification (#45783)
701405fa71fixhandle AOT-compiled standalone components in TestBed correctly (#46052)
ddce357d1dfiximprove TestBed declarations standalone error message (#45999)
ba9f30c9a6fixinclude component name into unknown element/property error message (#46160)
9fa6f5a552fixincorrectly inserting elements inside <template> element (#43429)
d5719c2e0ffixinput coercion (#42803)
be161bef79fixmemory leak in event listeners inside embedded views (#43075)
fa755b2a54fixprevent BrowserModule providers from being loaded twice (#45826)
3172b4cc99fixproduce proper error message for unknown props on <ng-template>s (#46068)
4f1a813596fixrestore NgModule state correctly after TestBed overrides (#46049)
3f7ecec59bfixset correct context for inject() for component ctors (#45991)
4e413d9240fixsupport nested arrays of providers in EnvironmentInjector (#45789)
fde4942cdffixthrow if standalone components are present in @NgModule.bootstrap (#45825)
560188bf12fixupdate unknown property error to account for standalone components in AOT (#46159)
df339d8abffixupdate unknown tag error for jit standalone components (#45920)
aafac7228ffixverify standalone component imports in JiT (#45777)
e9317aee71perfallow checkNoChanges mode to be tree-shaken in production (#45913)
071c8af8baperfavoid storing LView in __ngContext__ (#45051)
a96c4827c4perfmake Compiler, ApplicationRef and ApplicationInitStatus tree-shakable (#45102)
45d98e7ca5perfmake IterableDiffers and KeyValueDiffers tree-shakable (#45094)
1e60fe0a3eperfmake LOCALE_ID and other tokens from ApplicationModule tree-shakable (#45102)
88f1168506perfonly track LViews that are referenced in __ngContext__ (#45172)
9add714b13refactorremove deprecated aotSummaries fields in TestBed config (#45487)

devtools tabs

CommitTypeDescription
6c284ef32efixstop scroll occuring at tabs level

forms

CommitTypeDescription
2dbdebc646featAdd FormBuilder.nonNullable. (#45852)
e0a2248b32featAdd a FormRecord type. (#45607)
7ee121f595featAdd untyped versions of the model classes for use in migration. (#45205)
89d299105afeatImplement strict types for the Angular Forms package. (#43834)
f490c2de4efeatsupport negative indices in FormArray methods. (#44848)
39be06037dfixAdd a nonNullable option to FormControl for consistency.
4332897baafixAdd UntypedFormBuilder (#45268)
5d13e58aedfixAllow NonNullableFormBuilder to be injected. (#45904)
8dd3f82f94fixCorrect empty validator to handle objects with a property length: 0. (#33729)
ff3f5a8d12fixFix a typing bug in FormBuilder. (#45684)
fe0e42a996fixMake UntypedFormBuilder assignable to FormBuilder, and vice versa. (#45421)
b36dec6b5bfixnot picking up disabled state if group is swapped out and disabled (#43499)
9f6fa5b746fixPrevent FormBuilder from distributing unions to control types. (#45942)
aa7b857be8fixProperty renaming safe code (#45271)
cae1e44608fixUpdate the typed forms migration to use FormArray<T> instead of FormArray<T[]>. (#44933)
d336ba96d9fixUpdate the typed forms migration. (#45281)
018550ed50fixValue and RawValue should be part of the public API. (#45978)
2e96cede3efixWarn on FormControls that are constructed with both options and asyncValidators.

http

CommitTypeDescription
76a9a24cdcfixencode + signs in query params as %2B (angular#11058) (#45111)
d43c0e973ffixThrow error when headers are supplied in JSONP request (#45210)

language-service

CommitTypeDescription
9d4af65e34featProvide plugin to delegate rename requests to Angular (#44696)
3ae133c69efixFix detection of Angular for v14+ projects (#45998)

localize

CommitTypeDescription
a50e2da64afixensure transitively loaded compiler code is tree-shakable (#45405)

migrations

CommitTypeDescription
d56a537196featAdd migration to add explicit Route/Routes type (#45084)

ngcc

CommitTypeDescription
74a2e2e2ecfixcope with packages following APF v14+ (#45833)

platform-browser

CommitTypeDescription
a01bcb8e7efixdo not run change detection when loading Hammer (#44921)
b32647dc68fixMake transfer state key typesafe. (#23020)
c7bf75dd5efixremove obsolete shim for Map comparison in Jasmine (#45521)
23c4c9601eperfavoid including Testability by default in bootstrapApplication (#45885)

platform-server

CommitTypeDescription
dff5586d52featimplement renderApplication function (#45785)
22c71be94cfixupdate renderApplication to move appId to options (#45844)

router

CommitTypeDescription
f4fd1a8262featAdd EnvironmentInjector to RouterOutlet.activateWith (#45597)
910de8bc33featAdd Route.title with a configurable TitleStrategy (#43307)
4e0957a4e1featAdd ability to specify providers on a Route (#45673)
dea8c86cd5featadd ariaCurrentWhenActive input to RouterLinkActive directive (#45167)
41e2a68e30featadd type properties to all router events (#44189)
4962a4a332featAllow loadChildren to return a Route array (#45700)
791bd31424featset stricter type for Route.title (#44939)
50004c143bfeatSupport lazy loading standalone components with loadComponent (#45705)
7fd416d060fixFix type of Route.pathMatch to be more accurate (#45176)
1c11a57155fixmerge interited resolved data and static data (#45276)
f8f3ab377bfixRemove any from LoadChildrenCallback type (#45524)
d4fc12fa19fixRemove deprecated initialNavigation option (#45729)
989e840ccefixRemove unused string type for ActivatedRoute.component (#45625)
64f837d2c0fixUpdate Navigation#initialUrl to match documentation and reality (#43863)
96fd29c6d2fixvalidate lazy loaded configs (#45526)
f13295f3a3perfcancel the navigation instantly if at least one resolver doesn't emit any value (#45621)
1d2f5c1101refactordeprecate no longer needed resolver fields (#45597)
7b367d9d90refactorRemove unnecessary setTimeout in UrlTree redirects (#45735)
c9679760b2refactortake only the first emitted value of every resolver to make it consistent with guards (#44573)

service-worker

CommitTypeDescription
ec0a0e0669featadd cacheOpaqueResponses option for data-groups (#44723)
bd04fbc05bfeatemit a notification when the service worker is already up-to-date after check (#45216)

Special Thanks

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.