Skip to content

feat: universal reactivity hooks #9965

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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 27 commits into from
Apr 27, 2025
Merged

feat: universal reactivity hooks #9965

merged 27 commits into from
Apr 27, 2025

Conversation

runspired
Copy link
Contributor

@runspired runspired commented Apr 24, 2025

A redesign and streamlining of the current signals integration to prepare for additional frameworks and the split-out to @warp-drive/core

  • move config into @warp-drive/ember/install
  • have ember-data include @warp-drive/ember
  • have @ember-data/store meaningfully error if no configuration was ever done
  • use macroConditions to setup config with deprecation in @ember-data/store if @warp-drive/ember is available
  • use macroConditions to setup config with deprecation in @ember-data/store if @ember-data/tracking is available
  • leave one module in @ember-data/tracking to serve as a conditional import

@github-project-automation github-project-automation bot moved this to needs triage in EmberData Apr 24, 2025
@runspired runspired added 🎯 canary PR is targeting canary (default) 🏷️ chore This PR primarily refactors code or updates dependencies ci-perf Activates Performance Checks in CI labels Apr 24, 2025
Copy link

github-actions bot commented Apr 24, 2025

Performance Report for 89ade2b

Scenario - basic-record-materialization: ☑️ Performance is stable

☑️ duration
phase no difference [-22ms to 8ms]
☑️ Phase [navigationStart] => [start-data-generation]
phase no difference [-1ms to 0ms]
☑️ Phase [start-data-generation] => [start-push-payload]
phase no difference [-1ms to 1ms]
☑️ Phase [start-push-payload] => [start-peek-records]
phase no difference [-4ms to 9ms]
☑️ Phase [start-peek-records] => [start-record-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-record-materialization] => [end-record-materialization]
phase no difference [-5ms to 7ms]
✅ Phase [end-record-materialization] => [Test End]
phase estimated improvement -1ms [-3ms to 0ms] OR -3.11% [-8.7% to -0.08%]

Scenario - complex-record-materialization: ☑️ Performance is stable

☑️ duration
phase no difference [-7ms to 7ms]
☑️ Phase [navigationStart] => [start-data-generation]
phase no difference [0ms to 1ms]
☑️ Phase [start-data-generation] => [start-push-payload]
phase no difference [-2ms to 1ms]
☑️ Phase [start-push-payload] => [start-peek-records]
phase no difference [-4ms to 6ms]
☑️ Phase [start-peek-records] => [start-record-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-record-materialization] => [end-record-materialization]
phase no difference [-3ms to 1ms]
✅ Phase [end-record-materialization] => [Test End]
phase estimated improvement -1ms [-1ms to 0ms] OR -1.96% [-3.2% to -0.69%]

Scenario - complex-record-materialization-with-relationship-materialization: ☑️ Performance is stable

☑️ duration
phase no difference [-4ms to 10ms]
⚠️ Phase [navigationStart] => [start-data-generation]
phase estimated regression +1ms [0ms to 1ms] OR +0.88% [0.08% to 1.74%]
☑️ Phase [start-data-generation] => [start-push-payload]
phase no difference [-2ms to 1ms]
☑️ Phase [start-push-payload] => [start-peek-records]
phase no difference [-3ms to 8ms]
☑️ Phase [start-peek-records] => [start-record-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-record-materialization] => [start-field-access]
phase no difference [-1ms to 3ms]
☑️ Phase [start-field-access] => [start-relationship-access]
phase no difference [-1ms to 1ms]
☑️ Phase [start-relationship-access] => [end-relationship-access]
phase no difference [0ms to 0ms]
☑️ Phase [end-relationship-access] => [Test End]
phase no difference [0ms to 0ms]

Scenario - relationship-materialization-simple: ✅ Performance improved

✅ duration
phase estimated improvement -41ms [-44ms to -37ms] OR -8.62% [-9.4% to -7.92%]
☑️ Phase [navigationStart] => [start-find-all]
phase no difference [0ms to 1ms]
☑️ Phase [start-find-all] => [start-materialization]
phase no difference [-3ms to 0ms]
✅ Phase [start-materialization] => [end-materialization]
phase estimated improvement -40ms [-43ms to -38ms] OR -20.39% [-21.53% to -19.31%]
☑️ Phase [end-materialization] => [Test End]
phase no difference [0ms to 1ms]

Scenario - relationship-materialization-complex: ✅ Performance improved

✅ duration
phase estimated improvement -102ms [-122ms to -84ms] OR -3.59% [-4.27% to -2.93%]
☑️ Phase [navigationStart] => [start-data-generation]
phase no difference [-1ms to 0ms]
✅ Phase [start-data-generation] => [start-push-payload]
phase estimated improvement -5ms [-6ms to -4ms] OR -1.53% [-1.85% to -1.21%]
☑️ Phase [start-push-payload] => [start-peek-records]
phase no difference [-3ms to 6ms]
☑️ Phase [start-peek-records] => [start-record-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-record-materialization] => [start-relationship-materialization]
phase no difference [-2ms to 2ms]
✅ Phase [start-relationship-materialization] => [start-push-payload2]
phase estimated improvement -35ms [-48ms to -23ms] OR -2.7% [-3.69% to -1.72%]
☑️ Phase [start-push-payload2] => [start-relationship-materialization2]
phase no difference [-7ms to 2ms]
✅ Phase [start-relationship-materialization2] => [end-relationship-materialization2]
phase estimated improvement -48ms [-51ms to -46ms] OR -24.45% [-25.72% to -23.26%]
✅ Phase [end-relationship-materialization2] => [Test End]
phase estimated improvement -14ms [-16ms to -13ms] OR -8.56% [-9.64% to -7.48%]

Scenario - unload: ☑️ Performance is stable

☑️ duration
phase no difference [-4ms to 2ms]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-1ms to 1ms]
☑️ Phase [start-push-payload] => [start-unload-records]
phase no difference [-2ms to 2ms]
☑️ Phase [start-unload-records] => [end-unload-records]
phase no difference [-2ms to 1ms]
☑️ Phase [end-unload-records] => [Test End]
phase no difference [-1ms to 0ms]

Scenario - unload-all: ⚠️ Performance regressed

⚠️ duration
phase estimated regression +71ms [64ms to 78ms] OR +5.73% [5.18% to 6.28%]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-1ms to 1ms]
☑️ Phase [start-push-payload] => [start-materialization]
phase no difference [-4ms to 3ms]
☑️ Phase [start-materialization] => [start-unload-all]
phase no difference [-2ms to 2ms]
⚠️ Phase [start-unload-all] => [end-unload-all]
phase estimated regression +70ms [67ms to 73ms] OR +25.58% [24.4% to 26.66%]
☑️ Phase [end-unload-all] => [Test End]
phase no difference [0ms to 1ms]

Scenario - destroy: ☑️ Performance is stable

☑️ duration
phase no difference [0ms to 6ms]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-1ms to 1ms]
☑️ Phase [start-push-payload] => [start-destroy-records]
phase no difference [-4ms to 0ms]
☑️ Phase [start-destroy-records] => [end-destroy-records]
phase no difference [-2ms to 2ms]
⚠️ Phase [end-destroy-records] => [Test End]
phase estimated regression +3ms [1ms to 8ms] OR +11.9% [2.88% to 29.83%]

Scenario - add-children: ☑️ Performance is stable

☑️ duration
phase no difference [-1ms to 3ms]
☑️ Phase [navigationStart] => [start-push-initial-payload]
phase no difference [0ms to 1ms]
☑️ Phase [start-push-initial-payload] => [start-push-update-payload]
phase no difference [-1ms to 1ms]
☑️ Phase [start-push-update-payload] => [end-push-update-payload]
phase no difference [0ms to 3ms]
☑️ Phase [end-push-update-payload] => [Test End]
phase no difference [0ms to 1ms]

Scenario - unused-relationships: ☑️ Performance is stable

☑️ duration
phase no difference [-2ms to 3ms]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-1ms to 1ms]
☑️ Phase [start-push-payload] => [end-push-payload]
phase no difference [-2ms to 2ms]
☑️ Phase [end-push-payload] => [Test End]
phase no difference [0ms to 1ms]

Scenario - update-with-same-state: ⚠️ Performance regressed

⚠️ duration
phase estimated regression +23ms [16ms to 28ms] OR +2.05% [1.49% to 2.56%]
☑️ Phase [navigationStart] => [start-data-generation]
phase no difference [0ms to 0ms]
⚠️ Phase [start-data-generation] => [start-push-initial-payload]
phase estimated regression +1ms [0ms to 1ms] OR +0.63% [0.02% to 1.25%]
☑️ Phase [start-push-initial-payload] => [start-peek-records]
phase no difference [0ms to 2ms]
☑️ Phase [start-peek-records] => [start-record-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-record-materialization] => [start-relationship-materialization]
phase no difference [-2ms to 1ms]
☑️ Phase [start-relationship-materialization] => [start-local-removal]
phase no difference [-4ms to 3ms]
⚠️ Phase [start-local-removal] => [start-push-minus-one-payload]
phase estimated regression +12ms [11ms to 13ms] OR +4.27% [3.91% to 4.6%]
☑️ Phase [start-push-minus-one-payload] => [start-local-addition]
phase no difference [0ms to 0ms]
⚠️ Phase [start-local-addition] => [start-push-plus-one-payload]
phase estimated regression +7ms [6ms to 8ms] OR +18.35% [15.89% to 21.07%]
⚠️ Phase [start-push-plus-one-payload] => [end-push-plus-one-payload]
phase estimated regression +1ms [1ms to 2ms] OR +2.27% [0.95% to 3.71%]
⚠️ Phase [end-push-plus-one-payload] => [Test End]
phase estimated regression +1ms [0ms to 1ms] OR +2.24% [1.05% to 3.25%]

Scenario - update-with-same-state-m2m: ✅ Performance improved

✅ duration
phase estimated improvement -47ms [-51ms to -43ms] OR -5.12% [-5.58% to -4.64%]
☑️ Phase [navigationStart] => [start-data-generation]
phase no difference [-1ms to 0ms]
☑️ Phase [start-data-generation] => [start-push-initial-payload]
phase no difference [-1ms to 1ms]
☑️ Phase [start-push-initial-payload] => [start-peek-records]
phase no difference [-1ms to 1ms]
☑️ Phase [start-peek-records] => [start-record-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-record-materialization] => [start-relationship-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-relationship-materialization] => [start-local-removal]
phase no difference [0ms to 0ms]
✅ Phase [start-local-removal] => [start-push-minus-one-payload]
phase estimated improvement -29ms [-30ms to -28ms] OR -19.4% [-20.36% to -18.52%]
☑️ Phase [start-push-minus-one-payload] => [start-local-addition]
phase no difference [-1ms to 0ms]
✅ Phase [start-local-addition] => [start-push-plus-one-payload]
phase estimated improvement -16ms [-18ms to -15ms] OR -12.62% [-13.87% to -11.49%]
☑️ Phase [start-push-plus-one-payload] => [end-push-plus-one-payload]
phase no difference [-1ms to 1ms]
☑️ Phase [end-push-plus-one-payload] => [Test End]
phase no difference [0ms to 0ms]

@runspired runspired force-pushed the pluggable-reactivity branch from 4d43dcf to 2f714c9 Compare April 26, 2025 07:53
@runspired runspired marked this pull request as ready for review April 27, 2025 09:50
@runspired runspired added the 🏷️ feat This PR introduces a new feature label Apr 27, 2025
@runspired runspired merged commit 9c20689 into main Apr 27, 2025
22 of 23 checks passed
@runspired runspired deleted the pluggable-reactivity branch April 27, 2025 22:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ci-perf Activates Performance Checks in CI 🎯 canary PR is targeting canary (default) 🏷️ chore This PR primarily refactors code or updates dependencies 🏷️ feat This PR introduces a new feature
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

1 participant