Angular: 17.0.0-next.8 Release

Release date:
October 11, 2023
Previous version:
17.0.0-next.7 (released October 4, 2023)
Magnitude:
8,611 Diff Delta
Contributors:
24 total committers
Data confidence:
Commits:

Top Contributors in 17.0.0-next.8

crisbeto
AndrewKushnir
mmalerba
atscott
jessicajaniuk
pmvald
jelbourn
pkozlowski-opensource
dylhunn
devversion

Directory Browser for 17.0.0-next.8

We haven't yet finished calculating and confirming the files and directories changed in this release. Please check back soon.

Release Notes Published

<a name="17.0.0-next.8"></a>

17.0.0-next.8 (2023-10-11)

benchpress

| Commit | Description | | -- | -- | | feat - 2da3551a70 | report gc and render time spent in script (#50771) |

common

| Commit | Description | | -- | -- | | fix - da056a1fe2 | add missing types field for @angular/common/locales of exports in package.json (#52080) | | fix - 85843e8212 | allow to specify only some properties of DatePipeConfig (#51287) | | fix - 28a5925f53 | use === operator to match NgSwitch cases (#51504) |

compiler

| Commit | Description | | -- | -- | | feat - 1934524a0c | add docs extraction for type aliases (#52118) | | feat - 7bfe20707f | extract api for fn overloads and abtract classes (#52040) | | fix - 7dbd47fb30 | allow newlines in track and let expressions (#52137) | | fix - 9d19c8e317 | don't allocate variable to for loop expression (#52158) | | fix - 16ff08ec70 | narrow the type of expressions in event listeners inside if blocks (#52069) | | fix - ac0d5dcfd6 | narrow the type of expressions in event listeners inside switch blocks (#52069) | | fix - 17078a3fe1 | pipes used inside defer triggers not being picked up (#52071) | | fix - 861ce3a7c5 | pipes using DI not working in blocks (#52112) | | fix - 386e1e9500 | work around TypeScript bug when narrowing switch statements (#52110) |

compiler-cli

| Commit | Description | | -- | -- | | fix - 11bb19cafc | handle nested qualified names in ctor injection in local compilation mode (#51947) |

core

| Commit | Description | | -- | -- | | feat - 50275e58b8 | Add schematic to migrate control flow syntax (#52035) | | feat - 048f400efc | add warnings for oversized images and lazy-lcp (#51846) | | feat - 4427e1ebc2 | create function to assert not running inside reactive context (#52049) | | feat - 5b88d136af | mark core signal APIs as stable (#51821) | | feat - 8eef694def | Provide a diagnostic for missing Signal invocation in template interpolation. (#49660) | | feat - 40113f653c | Remove deprecated CompilerOptions.useJit andCompilerOptions.missingTranslation. (#49672) | | feat - 68ba798ae3 | revamp the runtime error message for orphan components to include full component info (#51919) | | feat - 1a4aee7e49 | show runtime error for orphan component rendering (#52061) | | fix - 5411864c2e | adjust toSignal types to handle more common cases (#51991) | | fix - df58c0b714 | disallow afterRender in reactive contexts (#52138) | | fix - 5d61221ed7 | disallow using effect inside reactive contexts (#52138) | | fix - c7ff9dff2c | drop mutate function from the signals public API (#51821) | | fix - 00128e3853 | drop mutate function from the signals public API (#51821) (#51986) | | fix - 50ad074505 | framework debug APIs getDependenciesForTokenInInjector and getInjectorMetadata (#51719) | | fix - 7368b8aaeb | host directive validation not picking up duplicate directives on component node (#52073) | | fix - d487014785 | Remove no longer needed build rule related to removed migration (#52143) | | fix - 4da08dc2ef | remove unnecessary migration (#52141) | | fix - d5dad3eb4c | viewport trigger deregistering callbacks multiple times (#52115) | | perf - e90694259e | build-in for should update indexes only when views were added / removed (#52051) |

forms

| Commit | Description | | -- | -- | | fix - ddd7212ee2 | reset() call with null values on nested group (#48830) |

http

| Commit | Description | | -- | -- | | feat - 7dde42a5df | allow customization of the HttpTransferCache. (#52029) |

language-service

| Commit | Description | | -- | -- | | feat - 449830f24e | Complete inside @switch (#52153) | | feat - 023a181ba5 | Implement outlining spans for control flow blocks (#52062) | | feat - 7c052bb6ef | Support autocompletion for blocks (#52121) |

migrations

| Commit | Description | | -- | -- | | feat - f0da7c2e44 | schematic to remove deprecated CompilerOptions properties (#49672) | | feat - 965ce5a8c5 | Schematics for TransferState, StateKey and makeStateKey migration. (#49594) |

platform-browser

| Commit | Description | | -- | -- | | fix - 5b375d106f | Fire Animations events when using async animations. (#52087) | | fix - 65786b2b96 | prevent duplicate stylesheets from being created (#52019) | | fix - 75d610d420 | set animation properties when using async animations. (#52087) | | refactor - dbc14eb41d | remove withNoDomReuse function (#52057) |

router

| Commit | Description | | -- | -- | | feat - 1da28f4825 | Add callback to execute when a view transition is created (#52002) | | fix - 37df395be0 | children of routes with loadComponent should not inherit parent data by default (#52114) |

Breaking Changes

common

  • the NgSwitch directive now defaults to the === equality operator, migrating from the previously used ==. NgSwitch expressions and / or individual condition values need adjusting to this stricter equality check. The added warning message should help pinpointing NgSwitch usages where adjustements are needed. ### core
  • The mutate method was removed from the WritableSignal interface and completely dropped from the public API surface. As an alternative please use the update method and make immutable changes to the object.

Example before:

  items.mutate(itemsArray => itemsArray.push(newItem));

Example after:

  items.update(itemsArray => [itemsArray, …newItem]);
  • The mutate method was removed from the WritableSignal interface and completely dropped from the public API surface. As an alternative please use the update method and make immutable changes to the object.

Example before:

  items.mutate(itemsArray => itemsArray.push(newItem));

Example after:

  items.update(itemsArray => [itemsArray, …newItem]);

platform-browser

  • The withNoDomReuse() function was removed from the public API. If you need to disable hydration, you can exclude the provideClientHydration() call from provider list in your application (which would disable hydration features for the entire application) or use ngSkipHydration attribute to disable hydration for particular components. See this guide for additional information: https://angular.io/guide/hydration#how-to-skip-hydration-for-particular-components. ### router
  • Routes with loadComponent would incorrectly cause child routes to inherit their data by default. The default paramsInheritanceStrategy is emptyOnly. If parent data should be inherited in child routes, this should be manually set to always.