This PR contains the following updates:
Release Notes
angular/angular (@angular/animations)
Compare Source
Compare Source
common
compiler-cli
| Commit |
Type |
Description |
| 901c1e1a7f |
fix |
correctly get the type of nested function call expressions (#57010) |
core
| Commit |
Type |
Description |
| 2f347ef8fc |
fix |
provide flag to opt into manual cleanup for after render hooks (#57917) |
http
| Commit |
Type |
Description |
| ca637fe6a9 |
fix |
cleanup JSONP script listeners once loading completed (#57877) |
migrations
| Commit |
Type |
Description |
| b9d846dad7 |
fix |
delete constructor if it only has super call (#58013) |
upgrade
Compare Source
Compare Source
compiler-cli
| Commit |
Type |
Description |
| e685ed883a |
fix |
extended diagnostics not validating ICUs (#57845) |
core
| Commit |
Type |
Description |
| 76709d5d6e |
fix |
Handle @let declaration with array when preparingForHydration (#57816) |
migrations
| Commit |
Type |
Description |
| 5c866942a1 |
fix |
account for explicit standalone: false in migration (#57803) |
Compare Source
compiler
| Commit |
Type |
Description |
| b619d6987e |
fix |
produce less noisy errors when parsing control flow (#57711) |
migrations
| Commit |
Type |
Description |
| 9895e4492f |
fix |
replace leftover modules with their exports during pruning (#57684) |
Compare Source
http
| Commit |
Type |
Description |
| de68e049e4 |
fix |
Dynamicaly call the global fetch implementation (#57531) |
Compare Source
core
http
| Commit |
Type |
Description |
| 5d2e243c76a |
fix |
Dynamicaly call the global fetch implementation (#57531) |
router
| Commit |
Type |
Description |
| 804925b1149 |
fix |
Do not unnecessarily run matcher twice on route matching (#57530) |
upgrade
Compare Source
core
| Commit |
Type |
Description |
| 9de30a7b1c |
fix |
Allow zoneless scheduler to run inside fakeAsync (#56932) |
| 286012fb89 |
fix |
handle hydration of components that project content conditionally (#57383) |
migrations
Compare Source
Breaking Changes
zone.js
fakeAsync will now flush pending timers at the end of
the given function by default. To opt-out of this, you can use {flush: false} in options parameter of fakeAsync
compiler
| Commit |
Type |
Description |
| d9d68e73d2 |
fix |
reduce chance of conflicts between generated factory and local variables (#57181) |
compiler-cli
| Commit |
Type |
Description |
| 0b1dd39663 |
perf |
improve performance of interpolatedSignalNotInvoked extended diagnostic (#57291) |
core
| Commit |
Type |
Description |
| f7918f5272 |
feat |
Add 'flush' parameter option to fakeAsync to flush after the test (#57239) |
| 7919982063 |
feat |
Add whenStable helper on ApplicationRef (#57190) |
Compare Source
compiler-cli
| Commit |
Type |
Description |
| 5401332b0e |
fix |
generate valid TS 5.6 type checking code (#57303) |
core
| Commit |
Type |
Description |
| e39b22a932 |
fix |
Account for addEventListener to be passed a Window or Document. (#57282) |
| db65bc25ca |
fix |
Account for addEventListener to be passed a Window or Document. (#57354) |
| 0e024ecc27 |
fix |
complete post-hydration cleanup in components that use ViewContainerRef (#57300) |
| 822db64b93 |
fix |
skip hydration for i18n nodes that were not projected (#57356) |
| 810f76f574 |
fix |
take skip hydration flag into account while hydrating i18n blocks (#57299) |
Compare Source
compiler
| Commit |
Type |
Description |
| 6a99f83659 |
fix |
reduce chance of conflicts between generated factory and local variables (#57181) |
compiler-cli
| Commit |
Type |
Description |
| afb05ff1cb |
fix |
support JIT transforms before other transforms modifying classes (#57262) |
| bae54a1621 |
perf |
improve performance of interpolatedSignalNotInvoked extended diagnostic (#57291) |
language-service
| Commit |
Type |
Description |
| 6ac209c24f |
fix |
avoid generating TS suggestion diagnostics for templates (#56241) |
Compare Source
compiler
| Commit |
Type |
Description |
| 31dea066d6 |
fix |
reduce chance of conflicts between generated factory and local variables (#57181) |
compiler-cli
core
| Commit |
Type |
Description |
| f7ab04018e |
fix |
errors during ApplicationRef.tick should be rethrown for zoneless tests (#56993) |
| eaa83f9d27 |
fix |
hydration error in some let declaration setups (#57173) |
Compare Source
compiler
| Commit |
Type |
Description |
| 463945003d |
fix |
limit the number of chained instructions (#57069) |
compiler-cli
| Commit |
Type |
Description |
| e904f34020 |
fix |
add warning for unused let declarations (#57033) |
core
Compare Source
Compare Source
common
compiler
| Commit |
Type |
Description |
| fd6cd0422d |
feat |
Add extended diagnostic to warn when there are uncalled functions in event bindings (#56295) |
| 341a116d61 |
fix |
allow more characters in let declaration name (#56764) |
| 2a1291e942 |
fix |
give precedence to local let declarations over parent ones (#56752) |
compiler-cli
| Commit |
Type |
Description |
| 66e582551e |
fix |
avoid duplicate diagnostics for let declarations read before definition (#56843) |
| 4d18c5bfd5 |
fix |
flag all conflicts between let declarations and local symbols (#56752) |
| 9e21582456 |
fix |
Show template syntax errors in local compilation modified (#55855) |
| 5996502921 |
fix |
type check let declarations nested inside nodes (#56752) |
| cdebf751e4 |
fix |
used before declared diagnostic not firing for control flow blocks (#56843) |
core
forms
| Commit |
Type |
Description |
| 00bde8b1c2 |
fix |
Make NgControlStatus host bindings OnPush compatible (#55720) |
http
| Commit |
Type |
Description |
| cc21989132 |
fix |
Make Content-Type header case insensitive (#56541) |
language-service
router
| Commit |
Type |
Description |
| a13f5da773 |
feat |
Allow UrlTree as an input to routerLink (#56265) |
| 1d3a7529b4 |
feat |
Set a different browser URL from the one for route matching (#53318) |
Compare Source
compiler
http
| Commit |
Type |
Description |
| 95d7076d1a |
perf |
execute fetch outside of Angular zone (#56820) |
migrations
| Commit |
Type |
Description |
| d6fff45e73 |
fix |
Fix cf migration let condition semicolon order (#56913) |
Compare Source
common
| Commit |
Type |
Description |
| a55719f55e |
fix |
Don't run preconnect assertion on the server. (#56213) |
core
| Commit |
Type |
Description |
| 4909844805 |
fix |
establish proper defer injector hierarchy for components attached to ApplicationRef (#56763) |
| fec5b80aaf |
fix |
support injection of object with null constructor. (#56553) |
router
| Commit |
Type |
Description |
| b7d3ecc873 |
fix |
routes should not get stale providers (#56798) |
Compare Source
core
Compare Source
compiler-cli
| Commit |
Type |
Description |
| ec0d1bf6f3 |
fix |
insert constant statements after the first group of imports (#56431) |
core
| Commit |
Type |
Description |
| 83ffa94783 |
fix |
do not activate event replay when no events are registered (#56509) |
router
| Commit |
Type |
Description |
| 5578681da2 |
fix |
Delay the view transition to ensure renders in microtasks complete (#56494) |
Compare Source
benchpress
| Commit |
Type |
Description |
| ebf00aa0659 |
fix |
adjust supported browser names for headless chrome (#56360) |
core
| Commit |
Type |
Description |
| dbd0fa00f8c |
fix |
async EventEmitter should contribute to app stability (#56308) |
| 625ca3e2b3f |
fix |
signals should be tracked when embeddedViewRef.detectChanges is called (#55719) |
localize
| Commit |
Type |
Description |
| d6dd3dbdb09 |
fix |
add @angular/localize/init as polyfill in angular.json (#56300) |
migrations
Compare Source
core
| Commit |
Type |
Description |
| 78cf9bfc0e |
fix |
Do not migrate HttpClientModule imports on components. (#56067) |
| 616cdef474 |
fix |
don't coerce all producers to consumers on liveness change (#56140) |
| 2a440e1064 |
fix |
Fix shouldPreventDefaultBeforeDispatching bug (#56188) |
| 290a47d842 |
fix |
handle missing withI18nSupport() call for components that use i18n blocks (#56175) |
migrations
| Commit |
Type |
Description |
| b70b80ba55 |
fix |
do not generate aliased variables with the same name (#56154) |
Compare Source
compiler
| Commit |
Type |
Description |
| 419ffa2026 |
fix |
optimize track function that only passes $index (#55872) |
compiler-cli
| Commit |
Type |
Description |
| 4c7efc005a |
fix |
interpolatedSignalNotInvoked diagnostic for class, style, attribute and animation bindings (#55969) |
core
migrations
Compare Source
Blog post "Angular v18 is now available".
Breaking Changes
animations
- Deprecated
matchesElement method has been removed from AnimationDriver as it is unused.
common
- The deprecated
isPlatformWorkerUi and isPlatformWorkerApp have been removed without replacement, as they serve no purpose since the removal of the WebWorker platform.
compiler
- Angular only supports writable expressions inside of two-way bindings.
compiler-cli
-
- Angular no longer supports TypeScript versions older than 5.4.
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.
-
ComponentFixture.whenStable now matches the
ApplicationRef.isStable observable. Prior to this change, stability
of the fixture did not include everything that was considered in
ApplicationRef. whenStable of the fixture will now include unfinished
router navigations and unfinished HttpClient requests. This will cause
tests that await the whenStable promise to time out when there are
incomplete requests. To fix this, remove the whenStable,
instead wait for another condition, or ensure HttpTestingController
mocks responses for all requests. Try adding HttpTestingController.verify()
before your await fixture.whenStable to identify the open requests.
Also, make sure your tests wait for the stability promise. We found many
examples of tests that did not, meaning the expectations did not execute
within the test body.
In addition, ComponentFixture.isStable would synchronously switch to
true in some scenarios but will now always be asynchronous.
-
Angular will ensure change detection runs, even when the state update originates from
outside the zone, tests may observe additional rounds of change
detection compared to the previous behavior.
This change will be more likely to impact existing unit tests.
This should usually be seen as more correct and the test should be updated,
but in cases where it is too much effort to debug, the test can revert to the old behavior by adding
provideZoneChangeDetection({schedulingMode: NgZoneSchedulingMode.NgZoneOnly})
to the TestBed providers.
Similarly, applications which may want to update state outside the zone
and not trigger change detection can add
provideZoneChangeDetection({schedulingMode: NgZoneSchedulingMode.NgZoneOnly})
to the providers in bootstrapApplication or add
schedulingMode: NgZoneSchedulingMode.NgZoneOnly to the
BootstrapOptions of bootstrapModule.
-
When Angular runs change detection, it will continue to
refresh any views attached to ApplicationRef that are still marked for
check after one round completes. In rare cases, this can result in infinite
loops when certain patterns continue to mark views for check using
ChangeDetectorRef.detectChanges. This will be surfaced as a runtime
error with the NG0103 code.
-
async has been removed, use waitForAsync instead.
-
The ComponentFixture.autoDetect feature now executes
change detection for the fixture within ApplicationRef.tick. This more
closely matches the behavior of how a component would refresh in
production. The order of component refresh in tests may be slightly
affected as a result, especially when dealing with additional components
attached to the application, such as dialogs. Tests sensitive to this
type of change (such as screenshot tests) may need to be updated.
Concretely, this change means that the component will refresh before
additional views attached to ApplicationRef (i.e. dialog components).
Prior to this change, the fixture component would refresh after other
views attached to the application.
-
The exact timing of change detection execution when
using event or run coalescing with NgZone is now the first of either
setTimeout or requestAnimationFrame. Code which relies on this
timing (usually by accident) will need to be adjusted. If a callback
needs to execute after change detection, we recommend afterNextRender
instead of something like setTimeout.
-
Newly created and views marked for check and reattached
during change detection are now guaranteed to be refreshed in that same
change detection cycle. Previously, if they were attached at a location
in the view tree that was already checked, they would either throw
ExpressionChangedAfterItHasBeenCheckedError or not be refreshed until
some future round of change detection. In rare circumstances, this
correction can cause issues. We identified one instance that relied on
the previous behavior by reading a value on initialization which was
queued to be updated in a microtask instead of being available in the
current change detection round. The component only read this value during
initialization and did not read it again after the microtask updated it.
-
Testability methods increasePendingRequestCount,
decreasePendingRequestCount and getPendingRequestCount have been
removed. This information is tracked with zones.
http
-
By default we now prevent caching of HTTP requests that require authorization . To opt-out from this behaviour use the includeRequestsWithAuthHeaders option in withHttpTransferCache.
Example:
withHttpTransferCache({
includeRequestsWithAuthHeaders: true,
})
platform-browser
- Deprecated
StateKey, TransferState and makeStateKey have been removed from @angular/platform-browser, use the same APIs from @angular/core.
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
- 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.
- 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.
- 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.
- 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.
- 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.
Deprecations
common
getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits
core
@Component.interpolation is deprecated. Use Angular's
delimiters instead.
http
-
HttpClientModule, HttpClientXsrfModule and HttpClientJsonpModule
As mentionned, those modules can be replaced by provider function only.
animations
| Commit |
Type |
Description |
| bcce85af72 |
refactor |
remove deprecated matchesElement from AnimationDriver (#55479) |
common
| Commit |
Type |
Description |
| d34c033902 |
refactor |
Deprecate Local Data API functions (#54483) |
| 3b0de30b37 |
refactor |
remove deprecated isPlatformWorkerApp and isPlatformWorkerUi API (#55302) |
compiler
compiler-cli
| Commit |
Type |
Description |
| 5bd188a394 |
feat |
add partial compilation support for deferred blocks (#54908) |
| b02b31a915 |
feat |
drop support for TypeScript older than 5.4 (#54961) |
| 78188e877a |
fix |
add diagnostic if initializer API is used outside of an initializer (#54993) |
| 69a83993b3 |
fix |
do not throw when retrieving TCB symbol for signal input with restricted access (#55774) |
| 4f4f41016e |
fix |
dom property binding check in signal extended diagnostic (#54324) |
| [7a16d7e969](https://redirect.github.com/angular |
|
|
Configuration
📅 Schedule: Branch creation - "every 2nd week starting on the 2 week of the year before 4am on Monday" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
⚠️ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
- any of the package files in this branch needs updating, or
- the branch becomes conflicted, or
- you click the rebase/retry checkbox if found above, or
- you rename this PR's title to start with "rebase!" to trigger it manually
The artifact failure details are included below:
File name: package-lock.json
npm error code ERESOLVE
npm error ERESOLVE unable to resolve dependency tree
npm error
npm error While resolving: @bitwarden/[email protected]
npm error Found: [email protected]
npm error node_modules/zone.js
npm error zone.js@"0.14.10" from the root project
npm error
npm error Could not resolve dependency:
npm error peer zone.js@"~0.15.0" from @angular/[email protected]
npm error node_modules/@angular/core
npm error @angular/core@"19.1.1" from the root project
npm error peer @angular/core@"19.1.1" from @angular/[email protected]
npm error node_modules/@angular/animations
npm error @angular/animations@"19.1.1" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry
npm error this command with --force or --legacy-peer-deps
npm error to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /tmp/renovate/cache/others/npm/_logs/2025-01-16T12_30_06_455Z-eresolve-report.txt
npm error A complete log of this run can be found in: /tmp/renovate/cache/others/npm/_logs/2025-01-16T12_30_06_455Z-debug-0.log
🤠 Slow down there, partner: https://github.com/bitwarden/clients/pull/12218
Will need to be updated alongside the other angular dependencies using Angular's update tooling.
Renovate Ignore Notification
Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 19.x releases. But if you manually upgrade to 19.x then Renovate will re-enable minor and patch updates automatically.
If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.