fix(core): render hooks should not specifically run outside the Angul…#55399
Closed
atscott wants to merge 1 commit intoangular:mainfrom
Closed
fix(core): render hooks should not specifically run outside the Angul…#55399atscott wants to merge 1 commit intoangular:mainfrom
atscott wants to merge 1 commit intoangular:mainfrom
Conversation
…ar zone The timing of render hook execution is almost entirely identical to `ngZone.onMicrotaskEmpty`. Developers working towards zoneless compatibility will need to migrate `onMicrotaskEmpty` calls to use `afterNextRender`/`afterRender` instead. This, however, would lead to confusing issues if there are promises in the callbacks because `onMicrotaskEmpty` emits inside the Angular zone while render hooks execute outside today. This is problematic because it's not documented and does not produce any notification or error message when async work is done inside the hooks that requires change detection. Instead, change detection simply does not run, and this behavior has proven to be surprising to developers who are used to ZoneJS change detection behavior. fixes angular#55299
pkozlowski-opensource
approved these changes
Apr 18, 2024
Contributor
|
This PR was merged into the repository by commit 7e89753. |
AndrewKushnir
pushed a commit
that referenced
this pull request
Apr 25, 2024
…ar zone (#55399) The timing of render hook execution is almost entirely identical to `ngZone.onMicrotaskEmpty`. Developers working towards zoneless compatibility will need to migrate `onMicrotaskEmpty` calls to use `afterNextRender`/`afterRender` instead. This, however, would lead to confusing issues if there are promises in the callbacks because `onMicrotaskEmpty` emits inside the Angular zone while render hooks execute outside today. This is problematic because it's not documented and does not produce any notification or error message when async work is done inside the hooks that requires change detection. Instead, change detection simply does not run, and this behavior has proven to be surprising to developers who are used to ZoneJS change detection behavior. fixes #55299 PR Close #55399
AndrewKushnir
pushed a commit
that referenced
this pull request
Apr 25, 2024
…ar zone (#55399) The timing of render hook execution is almost entirely identical to `ngZone.onMicrotaskEmpty`. Developers working towards zoneless compatibility will need to migrate `onMicrotaskEmpty` calls to use `afterNextRender`/`afterRender` instead. This, however, would lead to confusing issues if there are promises in the callbacks because `onMicrotaskEmpty` emits inside the Angular zone while render hooks execute outside today. This is problematic because it's not documented and does not produce any notification or error message when async work is done inside the hooks that requires change detection. Instead, change detection simply does not run, and this behavior has proven to be surprising to developers who are used to ZoneJS change detection behavior. fixes #55299 PR Close #55399
atscott
added a commit
to atscott/angular
that referenced
this pull request
May 1, 2024
…he Angular zone (angular#55399)" This reverts commit 7e89753. Running render hooks inside the zone is specifically problematic for `afterRender` hooks. If the callback has async task, it would cause an infinite change detection. In addition, updating state in render hooks is generally discourages and certainly should update state in a way that notifies Angular of the change (either via signal or with `markForCheck`) rather than relying on ZoneJS to pick it up (which would only work if the change is done inside an async task).
AndrewKushnir
pushed a commit
that referenced
this pull request
May 2, 2024
…he Angular zone (#55399)" (#55624) This reverts commit 7e89753. Running render hooks inside the zone is specifically problematic for `afterRender` hooks. If the callback has async task, it would cause an infinite change detection. In addition, updating state in render hooks is generally discourages and certainly should update state in a way that notifies Angular of the change (either via signal or with `markForCheck`) rather than relying on ZoneJS to pick it up (which would only work if the change is done inside an async task). PR Close #55624
AndrewKushnir
pushed a commit
that referenced
this pull request
May 2, 2024
…he Angular zone (#55399)" (#55624) This reverts commit 7e89753. Running render hooks inside the zone is specifically problematic for `afterRender` hooks. If the callback has async task, it would cause an infinite change detection. In addition, updating state in render hooks is generally discourages and certainly should update state in a way that notifies Angular of the change (either via signal or with `markForCheck`) rather than relying on ZoneJS to pick it up (which would only work if the change is done inside an async task). PR Close #55624
AndrewKushnir
pushed a commit
that referenced
this pull request
May 2, 2024
…he Angular zone (#55399)" (#55624) This reverts commit 7e89753. Running render hooks inside the zone is specifically problematic for `afterRender` hooks. If the callback has async task, it would cause an infinite change detection. In addition, updating state in render hooks is generally discourages and certainly should update state in a way that notifies Angular of the change (either via signal or with `markForCheck`) rather than relying on ZoneJS to pick it up (which would only work if the change is done inside an async task). PR Close #55624
This was referenced May 22, 2024
This was referenced May 23, 2024
|
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


…ar zone
The timing of render hook execution is almost entirely identical to
ngZone.onMicrotaskEmpty. Developers working towards zoneless compatibility will need to migrateonMicrotaskEmptycalls to useafterNextRender/afterRenderinstead. This, however, would lead to confusing issues if there are promises in the callbacks becauseonMicrotaskEmptyemits inside the Angular zone while render hooks execute outside today. This is problematic because it's not documented and does not produce any notification or error message when async work is done inside the hooks that requires change detection. Instead, change detection simply does not run, and this behavior has proven to be surprising to developers who are used to ZoneJS change detection behavior.fixes #55299