angular/packages/core/test
Alex Rickabaugh 4e890cc5ac refactor(core): add support for new effect scheduling. (#56501)
The original effect design for Angular had one "bucket" of effects, which
are scheduled on the microtask queue. This approach got us pretty far, but
as developers have built more complex reactive systems, we've hit the
limitations of this design.

This commit changes the nature of effects significantly. In particular,
effects created in components have a completely new scheduling system, which
executes them as a part of the change detection cycle. This results in
behavior similar to that of nested effects in other reactive frameworks. The
scheduling behavior here uses the "mark for traversal" flag
(`HasChildViewsToRefresh`). This has really nice behavior:

 * if the component is dirty already, effects run following preorder hooks
   (ngOnInit, etc).
 * if the component isn't dirty, it doesn't get change detected only because
   of the dirty effect.

This is not a breaking change, since `effect()` is in developer preview (and
it remains so).

As a part of this redesigned `effect()` behavior, the `allowSignalWrites`
flag was removed. Effects no longer prohibit writing to signals at all. This
decision was taken in response to feedback / observations of usage patterns,
which showed the benefit of the restriction did not justify the DX cost.

The new effect timing is not yet enabled - a future PR will flip the flag.

PR Close #56501
2024-09-18 14:52:25 -07:00
..
acceptance refactor(core): add support for new effect scheduling. (#56501) 2024-09-18 14:52:25 -07:00
animation refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
authoring refactor(core): add support for new effect scheduling. (#56501) 2024-09-18 14:52:25 -07:00
bundling refactor(core): add support for new effect scheduling. (#56501) 2024-09-18 14:52:25 -07:00
change_detection refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
compiler refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
debug refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
di refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
dom refactor(core): replace usages of removeChild (#57203) 2024-08-07 16:46:09 +00:00
event_dispatch fix(core): Do not bubble capture events. (#57476) 2024-08-23 14:46:54 -07:00
hydration refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
i18n refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
linker test: avoid leaking some LViews in tests (#57546) 2024-08-27 13:29:08 -07:00
metadata refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
playground/zone-signal-input refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
reflection refactor(core): remove unused logic from reflection capabilities (#45335) 2022-03-24 11:02:39 -07:00
render3 refactor(core): add support for new effect scheduling. (#56501) 2024-09-18 14:52:25 -07:00
sanitization refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
signals refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
strict_types refactor(core): rename ...WithMeta types to ...Declaration and alias to unknown (#41119) 2021-03-22 08:57:18 -07:00
testability refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
util refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
zone fix(core): Allow zoneless scheduler to run inside fakeAsync (#56932) 2024-08-15 12:32:24 -04:00
application_config_spec.ts refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
application_init_spec.ts fix(core): link errors to ADEV (#55554) (#56038) 2024-05-28 12:50:53 +02:00
application_module_spec.ts refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
application_ref_integration_spec.ts refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
application_ref_spec.ts fix(core): link errors to ADEV (#55554) (#56038) 2024-05-28 12:50:53 +02:00
BUILD.bazel test(core): Add scheduler in tests to tie into ApplicationRef.isStable (#53579) 2024-01-09 16:05:31 -08:00
change_detection_scheduler_spec.ts fix(core): Allow zoneless scheduler to run inside fakeAsync (#56932) 2024-08-15 12:32:24 -04:00
component_fixture_spec.ts fix(core): Fix fixture.detectChanges with autoDetect disabled and zoneless (#57416) 2024-08-27 13:12:44 -07:00
defer_fixture_spec.ts refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
dev_mode_spec.ts test(core): clean up unnecessary nesting in old tests (#52239) 2023-10-19 09:26:15 -07:00
directive_lifecycle_integration_spec.ts refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
error_handler_spec.ts refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
event_emitter_spec.ts feat(core): Add whenStable helper on ApplicationRef (#57190) 2024-08-06 21:28:16 +00:00
fake_async_spec.ts fix(zone.js): Update the default behavior of fakeAsync to flush after the test (#57240) 2024-08-05 20:24:54 +00:00
forward_ref_integration_spec.ts refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00
runtime_error_spec.ts refactor(docs-infra): complete removal of aio directory (#56496) 2024-06-18 12:26:00 -07:00
test_bed_effect_spec.ts refactor(core): add support for new effect scheduling. (#56501) 2024-09-18 14:52:25 -07:00
test_bed_spec.ts refactor(core): handle incomplete DOCUMENT instances during cleanup in tests (#56422) 2024-06-17 09:05:52 -07:00
transfer_state_spec.ts refactor(core): replace usages of removeChild (#57203) 2024-08-07 16:46:09 +00:00
util_spec.ts refactor: migrate core to prettier formatting (#55488) 2024-04-29 09:49:19 -07:00