The effect() function has returned to developer preview. A dedicated "Special Angular Event" is set for November 6. Angular 17 is set to introduce limited local change detection capabilities.
Special Event
The upcoming episode, scheduled for next week, is expected to cover Angular 17. Today, on 6th November, the Angular team has organized a live stream, calling it a "Special Event", and swapped their YouTube and X logos to a question mark.
It is strongly advised to join the broadcast or catch the replay afterwards.
Developer Preview for effect()
Up until the latest week, the plan held that Signals would reach stability with version 17. However, that timeline has now shifted. The effect() function has reverted to developer preview status.
The commit message points to problems detected when certain Angular API functions are invoked within the context of an effect.
refactor(core): mark `effect` as developer preview again
#52490
Hi, Enea ❤️
Local Change Detection in Angular 17
With Signal Components, change detection becomes granular — Angular no longer needs to scan the whole component tree. That said, 17 won't ship with this capability just yet.
Still, a feature that brings us close to Signal Components is arriving in 17.
Under the current OnPush strategy, when a component is flagged dirty, so are all its ancestors. Consequently, the change detection process must evaluate the entire chain.
Starting in 17, when a Signal associated with an OnPush component updates, only that component gets dirty-checked; its OnPush parents won't be examined.
Dive deeper with Matthieu Riegler's write-up and his interactive demo (built on earlier work by Daniel Wiehl), or review the commit log for the full details.
perf(core): Update LView consumer to only mark component for check
#52302
In this change, reactive template and host binding consumers are adjusted so only their declaring components get flagged for refresh, skipping any parent or ancestor components.
The AfterViewChecked hook is likewise updated to fire when a component gets refreshed during change detection even if its host does not. When a signal triggers a component refresh, it's logical for the ngAfterViewChecked lifecycle hook to execute as well. Since these hooks typically run as part of the host's refresh, omitting this tweak would have prevented ngAfterViewChecked from running now that ancestors are no longer marked dirty.
resolves #14628 resolves #22646
resolves #34347 - although this wasn't the exact issue request, forcing change detection is generally only needed to sync an updated value to the DOM. Signals that update automatically mark their component for checking, so accessing a child's ChangeDetectorRef becomes unnecessary. The request's other half aimed to eliminate the need to "mark all views for checking since it wouldn't affect anything but itself," which this PR directly handles—updating a signal used in a child view's template won't refresh ancestors or "all views."
New Releases
Several new minor versions shipped, including Cypress 13.4 and PrimeNg 17.6.
JHipster, a well-known full-stack development framework/platform for Spring, released a new major version 8.
JHipster — A Complete Full Stack Platform for Today’s Developers
With JHipster, developers can generate, build, and launch contemporary web applications and microservice setups in record time.
