Angular Versions Save

Deliver web apps with confidence 🚀

18.0.0-next.3

3 weeks ago

18.0.0-next.3 (2024-04-03)

compiler

Commit Description
fix - f824911510 For FatalDiagnosticError, hide the message field without affecting the emit (#55160)

compiler-cli

Commit Description
fix - c04ffb1fa6 use switch statements to narrow Angular switch blocks (#55168)

core

Commit Description
feat - 666d646575 Add event delegation library to queue up events and replay them when the application is ready (#55121)
feat - 146306a141 add support for i18n hydration (#54823)
fix - 840c375255 do not save point-in-time setTimeout and rAF references (#55124)
fix - 231e0a3528 handle ChainedInjectors in injector debug utils (#55144)
fix - a5fa279b6e prevent i18n hydration from cleaning projected nodes (#54823)
fix - f44a5e4604 support content projection and VCRs in i18n (#54823)
fix - 914e4530b0 test cleanup should not throw if Zone is not present (#55096)
fix - a99cb7ce5b zoneless scheduler should check if Zone is defined before accessing it (#55118)

forms

Commit Description
feat - 1c736dc3b2 Unified Control State Change Events (#54579)

language-service

Commit Description
fix - a48afe0d94 avoid generating TS syntactic diagnostics for templates (#55091)

migrations

Commit Description
fix - 0c20c4075a avoid conflicts with some greek letters in control flow migration (#55113)

platform-browser

Commit Description
feat - 45ae7a6b60 add withI18nSupport() in developer preview (#55130)

router

Commit Description
feat - 87f3f27f90 Allow resolvers to return RedirectCommand (#54556)
fix - 3839cfbb18 Routed components never inherit RouterOutlet EnvironmentInjector (#54265)

Breaking Changes

router

  • Providers available to the routed components always come from the injector heirarchy of the routes and never inherit from the RouterOutlet. This means that providers available only to the component that defines the RouterOutlet will no longer be available to route components in any circumstances. This was already the case whenever routes defined providers, either through lazy loading an NgModule or through explicit providers on the route config.

17.3.3

3 weeks ago

17.3.3 (2024-04-03)

core

Commit Description
fix - 158ceaf062 handle ChainedInjectors in injector debug utils (#55144)
fix - 4d043992e5 test cleanup should not throw if Zone is not present (#55096)

migrations

Commit Description
fix - 949dec26b8 avoid conflicts with some greek letters in control flow migration (#55113)

18.0.0-next.2

4 weeks ago

18.0.0-next.2 (2024-03-28)

compiler

Commit Description
fix - 7fc7f3f05f capture all control flow branches for content projection in if blocks (#54921)
fix - a369f43fbd capture switch block cases for content projection (#54921)
fix - eb625d3783 declare for loop aliases in addition to new name (#54942)
fix - bfd0bd574e invoke method-based tracking function with context (#54960)
fix - e1650e3b13 throw error if item name and context variables conflict (#55045)

compiler-cli

Commit Description
feat - 5bd188a394 add partial compilation support for deferred blocks (#54908)
feat - b02b31a915 drop support for TypeScript older than 5.4 (#54961)
fix - 78188e877a add diagnostic if initializer API is used outside of an initializer (#54993)
fix - 694ba79cbf report cases where initializer APIs are used in a non-directive class (#54993)
fix - 6219341d26 report errors when initializer APIs are used on private fields (#54981)

core

Commit Description
feat - a600a39d0c add support for fallback content in ng-content (#54854)
fix - 658cf8c384 ComponentFixture stability should match ApplicationRef (#54949)
fix - 2fc11eae9e account for re-projected ng-content elements with fallback content (#54854)
fix - 1c0ec56c46 correctly project single-root content inside control flow (#54921)
fix - 86a359b399 establish proper injector resolution order for @defer blocks (#55079)
fix - e02bcf89cf Fix clearing of pending task in zoneless cleanup implementation (#55074)

http

Commit Description
fix - cf73983fdc include transferCache when cloning HttpRequest (#54939)
fix - 13554f9637 manage different body types for caching POST requests (#54980)

language-service

Commit Description
fix - 6d1b82df32 allow external projects to use provided compiler options (#55035)
fix - 4166dfc1b6 prevent underlying TS Service from handling template files (#55003)

migrations

Commit Description
fix - 63688714ae account for variables in imports initializer (#55081)

router

Commit Description
fix - 60f1d681e0 preserve replaceUrl when returning a urlTree from CanActivate (#54042)
fix - eae75ff3f9 RouterLinkActive will always remove active classes when links are not active (#54982)

Breaking Changes

compiler-cli

    • Angular no longer supports TypeScript versions older than 5.4.

core

  • ComponentFixture.whenStable now matches the ApplicationRef.isStable observable. Prior to this change, stability of the fixture did not include everything that was considered in ApplicationRef. whenStable of the fixture will now include unfinished router navigations and unfinished HttpClient requests. This will cause tests that await the whenStable promise to time out when there are incomplete requests. To fix this, remove the whenStable, instead wait for another condition, or ensure HttpTestingController mocks responses for all requests. Try adding HttpTestingController.verify() before your await fixture.whenStable to identify the open requests. Also, make sure your tests wait for the stability promise. We found many examples of tests that did not, meaning the expectations did not execute within the test body.

    In addition, ComponentFixture.isStable would synchronously switch to true in some scenarios but will now always be asynchronous.

router

  • When a a guard returns a UrlTree as a redirect, the redirecting navigation will now use replaceUrl if the initial navigation was also using the replaceUrl option. If this is not desirable, the redirect can configure new NavigationBehaviorOptions by returning a RedirectCommand with the desired options instead of UrlTree.

17.3.2

4 weeks ago

17.3.2 (2024-03-28)

compiler

Commit Description
fix - 2b7bad5151 invoke method-based tracking function with context (#54960)

compiler-cli

Commit Description
fix - b478dfbfda report errors when initializer APIs are used on private fields (#55070)

core

Commit Description
fix - 708ba8115f establish proper injector resolution order for @defer blocks (#55079)

http

Commit Description
fix - cb433af0e1 include transferCache when cloning HttpRequest (#54939)
fix - 64f202cab9 manage different body types for caching POST requests (#54980)

migrations

Commit Description
fix - 2f9d94bc4a account for variables in imports initializer (#55081)

router

Commit Description
fix - 365fd50407 RouterLinkActive will always remove active classes when links are not active (#54982)

18.0.0-next.1

1 month ago

18.0.0-next.1 (2024-03-20)

compiler

Commit Description
fix - 879bd80b57 capture data bindings for content projection purposes in blocks (#54876)

compiler-cli

Commit Description
fix - 6aff144232 symbol feature detection for the compiler (#54711)

core

Commit Description
fix - 314112de99 Prevent markForCheck during change detection from causing infinite loops (#54900)

platform-browser-dynamic

Commit Description
refactor - eb20c1a8b1 unused RESOURCE_CACHE_PROVIDER API has been removed (#54875)

platform-server

Commit Description
refactor - 07ac017731 remove deprecated platformDynamicServer API (#54874)
refactor - e8b588d8b7 remove deprecated ServerTransferStateModule API (#54874)
refactor - 3b1967ca64 remove deprecated useAbsoluteUrl and baseUrl from PlatformConfig (#54874)
refactor - 2357d3566c remove legacy URL handling logic (#54874)

router

Commit Description
feat - 2b802587f2 Allow Route.redirectTo to be a function which returns a string or UrlTree (#52606)
fix - da906fdafc Routed components never inherit RouterOutlet EnvironmentInjector (#54265)

Breaking Changes

platform-browser-dynamic

  • No longer used RESOURCE_CACHE_PROVIDER APIs have been removed.

platform-server

  • deprecated platformDynamicServer has been removed. Add an import @angular/compiler and replace the usage with platformServer

  • deprecated ServerTransferStateModule has been removed. TransferState can be use without providing this module.

  • deprecated useAbsoluteUrl and baseUrl been removed from PlatformConfig. Provide and absolute url instead.

  • Legacy handling or Node.js URL parsing has been removed from ServerPlatformLocation.

    The main differences are;

    • pathname is always suffixed with a /.
    • port is empty when http: protocol and port in url is 80
    • port is empty when https: protocol and port in url is 443

router

  • This change allows Route.redirectTo to be a function in addition to the previous string. Code which expects redirectTo to only be a string on Route objects will need to be adjusted.
  • Providers available to the routed components always come from the injector heirarchy of the routes and never inherit from the RouterOutlet. This means that providers available only to the component that defines the RouterOutlet will no longer be available to route components in any circumstances. This was already the case whenever routes defined providers, either through lazy loading an NgModule or through explicit providers on the route config.

17.3.1

1 month ago

17.3.1 (2024-03-20)

compiler

Commit Description
fix - c0788200e2 capture data bindings for content projection purposes in blocks (#54876)

compiler-cli

Commit Description
fix - 99e9474aa2 symbol feature detection for the compiler (#54711)

18.0.0-next.0

1 month ago

18.0.0-next.0 (2024-03-14)

compiler-cli

Commit Description
fix - 9b424d7224 preserve original reference to non-deferrable dependency (#54759)

core

Commit Description
fix - d888da4606 ApplicationRef.tick should respect OnPush for host bindings (#53718)
fix - 64f870c12b ApplicationRef.tick should respect OnPush for host bindings (#53718) (#53718)
fix - 8cad4e8cbe ComponentFixture autoDetect respects OnPush flag of host view (#54824)
fix - ba8e465974 Change Detection will continue to refresh views while marked for check (#54734)
fix - 24bc0ed4f2 ComponentFixture autodetect should detect changes within ApplicationRef.tick (#54733)
fix - 10c5cdb49c ensure change detection runs in a reasonable timeframe with zone coalescing (#54578)
fix - ad045efd4b Ensure views marked for check are refreshed during change detection (#54735)
fix - 700c0520bb Update ApplicationRef.tick loop to only throw in dev mode (#54848)

router

Commit Description
feat - 8735af08b9 Add ability to return UrlTree with NavigationBehaviorOptions from guards (#45023)

Breaking Changes

core

  • OnPush views at the root of the application need to be marked dirty for their host bindings to refresh. Previously, the host bindings were refreshed for all root views without respecting the OnPush change detection strategy.
  • OnPush views at the root of the application need to be marked dirty for their host bindings to refresh. Previously, the host bindings were refreshed for all root views without respecting the OnPush change detection strategy.
  • The ComponentFixture autoDetect feature will no longer refresh the component's host view when the component is OnPush and not marked dirty. This exposes existing issues in components which claim to be OnPush but do not correctly call markForCheck when they need to be refreshed. If this change causes test failures, the easiest fix is to change the component to ChangeDetectionStrategy.Default.
  • When Angular runs change detection, it will continue to refresh any views attached to ApplicationRef that are still marked for check after one round completes. In rare cases, this can result in infinite loops when certain patterns continue to mark views for check using ChangeDetectorRef.detectChanges. This will be surfaced as a runtime error with the NG0103 code.
  • The ComponentFixture.autoDetect feature now executes change detection for the fixture within ApplicationRef.tick. This more closely matches the behavior of how a component would refresh in production. The order of component refresh in tests may be slightly affected as a result, especially when dealing with additional components attached to the application, such as dialogs. Tests sensitive to this type of change (such as screenshot tests) may need to be updated. Concretely, this change means that the component will refresh before additional views attached to ApplicationRef (i.e. dialog components). Prior to this change, the fixture component would refresh after other views attached to the application.
  • The exact timing of change detection execution when using event or run coalescing with NgZone is now the first of either setTimeout or requestAnimationFrame. Code which relies on this timing (usually by accident) will need to be adjusted. If a callback needs to execute after change detection, we recommend afterNextRender instead of something like setTimeout.
  • Newly created and views marked for check and reattached during change detection are now guaranteed to be refreshed in that same change detection cycle. Previously, if they were attached at a location in the view tree that was already checked, they would either throw ExpressionChangedAfterItHasBeenCheckedError or not be refreshed until some future round of change detection. In rare circumstances, this correction can cause issues. We identified one instance that relied on the previous behavior by reading a value on initialization which was queued to be updated in a microtask instead of being available in the current change detection round. The component only read this value during initialization and did not read it again after the microtask updated it.

router

  • Guards can now return RedirectCommand for redirects in addition to UrlTree. Code which expects only boolean or UrlTree values in Route types will need to be adjusted.

17.3.0

1 month ago

17.3.0 (2024-03-13)

compiler

Commit Description
feat - 1a6beae8a2 Enable template pipeline by default. (#54571)
fix - f386a04c9d handle two-way bindings to signal-based template variables in instruction generation (#54714)
fix - 1f129f114e not catching for loop empty tracking expressions (#54772)

compiler-cli

Commit Description
fix - 12dc4d074e account for as expression in docs extraction (#54414)
fix - da7fbb40f0 detect when the linker is working in unpublished angular and widen supported versions (#54439)
fix - 492e03f699 flag two-way bindings to non-signal values in templates (#54714)
fix - 5afa4f0ec1 support ModuleWithProviders literal detection with typeof (#54650)

core

Commit Description
feat - 331b16efd2 add API to inject attributes on the host node (#54604)
feat - fb540e169a add migration for invalid two-way bindings (#54630)
feat - c687b8f453 expose new output() API (#54650)
feat - c809069f21 introduce outputFromObservable() interop function (#54650)
feat - aff65fd1f4 introduce outputToObservable interop helper (#54650)
feat - 974958913c support TypeScript 5.4 (#54414)
fix - 39a50f9a8d ensure all initializer functions run in an injection context (#54761)
fix - 243ccce624 exclude class attribute intended for projection matching from directive matching (#54800)
fix - 2909e9817d prevent infinite loops in clobbered elements check (#54425)
fix - 7243c704cf return a readonly signal on asReadonly. (#54706)
perf - bb35414a38 speed up retrieval of DestroyRef in EventEmitter (#54748)

http

Commit Description
fix - 8d37ed035c exclude caching for authenticated HTTP requests (#54746)

router

Commit Description
feat - c1c7384e02 Add reusable types for router guards (#54580)
fix - 7225485311 Navigations triggered by cancellation events should cancel previous navigation (#54710)

17.3.0-rc.0

1 month ago

17.3.0-rc.0 (2024-03-06)

compiler-cli

Commit Description
fix - 5afa4f0ec1 support ModuleWithProviders literal detection with typeof (#54650)
fix - ae7dbe42de unwrap expressions with type parameters in query read property (#54647)

core

Commit Description
feat - fb540e169a add migration for invalid two-way bindings (#54630)
feat - c687b8f453 expose new output() API (#54650)
feat - c809069f21 introduce outputFromObservable() interop function (#54650)
feat - aff65fd1f4 introduce outputToObservable interop helper (#54650)
fix - 33a6fab094 apply TestBed provider overrides to @defer dependencies (#54667)
fix - 78e69117f0 generic inference for signal inputs may break with --strictFunctionTypes (#54652)
fix - 7243c704cf return a readonly signal on asReadonly. (#54706)
fix - ffad7b8ea9 untrack various core operations (#54614)

router

Commit Description
feat - c1c7384e02 Add reusable types for router guards (#54580)

17.2.4

1 month ago

17.2.4 (2024-03-06)

compiler-cli

Commit Description
fix - 917b9bdd2e unwrap expressions with type parameters in query read property (#54647)

core

Commit Description
fix - 586cc24a10 apply TestBed provider overrides to @defer dependencies (#54667)
fix - b558a01c84 generic inference for signal inputs may break with --strictFunctionTypes (#54652)
fix - 443e5f1591 return a readonly signal on asReadonly. (#54719)
fix - ffbafc7d4a untrack various core operations (#54614)