- Notifications
You must be signed in to change notification settings - Fork26.4k
feat(core): RemoveprovideZonelessChangeDetection
requirement when ZoneJS is not present#62655
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Draft
atscott wants to merge1 commit intoangular:mainChoose a base branch fromatscott:selectSchedulerDynamically
base:main
Could not load branches
Branch not found:{{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline, and old review comments may become outdated.
+79 −47
Conversation
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
…ZoneJS is not presentThis change updates the internals to provide zoneless scheduling bydefault when ZoneJS. This change means that for most applications,simply omitting the ZoneJS polyfill will be enough to use zonelesschange detection.Developers may still need to use `provideZonelessChangeDetection` in the providers if the applicationexists alongside another one that uses ZoneJS (because ZoneJS would thenbe present and the zone-based change detection scheduler would then beselected).This is one step towards zoneless by default, but does not yet go as faras removing the `provideZoneChangeDetection` from the internals. Thatwould/will be larger breaking change since it will require existingZone-based applications to manually include `provideZoneChangeDetection`to the application providers (and for all tests).This approach works well because all existing Zone-based applications_must_ have ZoneJS already included on the page for them to work. Inaddition, this does not affect existing zoneless applications becausethey all must already manually use `provideZonelessChangeDetection`since the only scheduler provided by default prior to this change wasthe zone-based one. Only "custom" zoneless (zoneless apps prior to realzoneless support) may be affected.BREAKING CHANGE: Applications that configure a custom zoneless implementationnow and _do not_ want the Angular zoneless scheduler to be enabled willneed to include `provideZoneChangeDetection` as well as a providerfor `NgZone` in the application providers:```bootstrapApplication(App, {providers: [ provideZoneChangeDetection(), {provide: NgZone, useClass: MyNoopNgZone}]});```
65cea4b
to73a7685
Compareatscott added a commit to atscott/angular-cli that referenced this pull requestJul 15, 2025
This change updates applications to omit the ZoneJS dependency bydefault. It depends onangular/angular#62655,which allows us to also exclude the `provideZonelessChangeDetection`provider.
atscott added a commit to atscott/angular-cli that referenced this pull requestJul 16, 2025
This change updates applications to omit the ZoneJS dependency bydefault. It depends onangular/angular#62655,which allows us to also exclude the `provideZonelessChangeDetection`provider.
atscott added a commit to atscott/angular-cli that referenced this pull requestJul 16, 2025
This change updates applications to omit the ZoneJS dependency bydefault. It depends onangular/angular#62655,which allows us to also exclude the `provideZonelessChangeDetection`provider.
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Labels
area: coreIssues related to the framework runtime detected: breaking changePR contains a commit with a breaking change detected: featurePR contains a feature commit target: majorThis PR is targeted for the next major release
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.
This change updates the internals to provide zoneless scheduling by default when ZoneJS. Developers may still need to use
provideZonelessChangeDetection
in the providers if the application exists alongside another one that uses ZoneJS (because ZoneJS would then be present and the zone-based change detection scheduler would then be selected). For most applications, this will be sufficient for selecting the correct scheduler without needing the provider.This is one step towards zoneless by default, but does not yet go as far as removing the
provideZoneChangeDetection
from the internals. That would/will be larger breaking change since it will require existing Zone-based applications to manually includeprovideZoneChangeDetection
to the application providers (and for all tests).BREAKING CHANGE: Applications that configure a custom zoneless implementation now anddo not want the Angular zoneless scheduler to be enabled will need to include
provideZoneChangeDetection
as well as a provider forNgZone
in the application providers: