19.0.0-next.7 (2024-09-25)
core
Commit | Description |
---|---|
change effect() execution timing & no-op allowSignalWrites (#57874)
| |
mark signal-based query APIs as stable (#57921) | |
migrate ExperimentalPendingTasks to PendingTasks (#57533) | |
Ensure the ViewContext is retained after closure minification (#57903)
|
language-service
Commit | Description |
---|---|
The suppress diagnostics option should work for external templates (#57873) |
Breaking Changes
core
-
Generally this PR has two implications:
-
effects which are triggered outside of change detection run as part of
the change detection process instead of as a microtask. Depending on the
specifics of application/test setup, this can result in them executing
earlier or later (or requiring additional test steps to trigger; see below
examples). -
effects which are triggered during change detection (e.g. by input
signals) run earlier, before the component's template.
We've seen a few common failure cases:
-
Tests which used to rely on the
Promise
timing of effects now need to
await whenStable()
or call.detectChanges()
in order for effects to
run. -
Tests which use faked clocks may need to fast-forward/flush the clock to
cause effects to run. -
effect()
s triggered during CD could rely on the application being fully
rendered (for example, they could easily read computed styles, etc). With
the change, they run before the component's updates and can get incorrect
answers. The recentafterRenderEffect()
API is a natural replacement for
this style of effect. -
effect()
s which synchronize with the forms system are particularly
timing-sensitive and might need to adjust their initialization timing.
-
-
ExperimentalPendingTasks
has been renamed to
PendingTasks
.