Skip to content
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

feat: @ember-data/tracking primitives to prevent backtracking render errors #8214

Merged
merged 16 commits into from Oct 16, 2022

Conversation

runspired
Copy link
Contributor

@runspired runspired commented Oct 14, 2022

work on #8173

Introduces @ember-data/tracking package with the exports transact and memoTransact for executing/authoring code for which all change notifications in ember-data should be flattened. This prevents backtracking render errors for read-before-write in situations in which doing so is actually safe.

Backtracking render errors will still occur if you've already read something before the transaction you write during the transaction.

I also added untracked to this, which silences reads and defers write notifications via a micro task.

Note: while this package introduces a new public API to stop-gap the issues Ember and @glimmer/tracking currently have around read-write interleaving etc, it's intended that any future primitives from glimmer itself that serve the same purpose would be able to replace these. We'll likely always keep these ourselves purely to ensure interop with other frameworks.

@runspired runspired added 🎯 release PR should be backported to release 🎯 canary PR is targeting canary (default) 🏷️ bug This PR primarily fixes a reported issue labels Oct 14, 2022
@github-actions
Copy link

github-actions bot commented Oct 14, 2022

Asset Size Report for a70fbb7

Modern Builds

🛑 The size of the library EmberData has increased by +1.14 KB (+189.0 B compressed) which exceeds the failure threshold of 75 bytes.

Warnings

⚠️ The uncompressed size of the package @ember-data/store has increased by +48.0 B.
⚠️ The uncompressed size of the package @ember-data/tracking has increased by +1.24 KB.

Changeset


EmberData 166.61 KB +1.14 KB (35.54 KB +189.0 B compressed)
    @ember-data/model 44.67 KB -97.0 B (9.53 KB -15.66 B compressed)
        @ember-data/model/-private 44.19 KB -97.0 B (9.43 KB -15.66 B compressed)
    @ember-data/store 43.01 KB +48.0 B (9.17 KB +7.75 B compressed)
        @ember-data/store/-private 42.01 KB +48.0 B (8.96 KB +7.75 B compressed)
    ember-data 8.28 KB -47.0 B (1.77 KB -7.59 B compressed)
        ember-data/index 1.94 KB -47.0 B (423.4 B -7.59 B compressed)
    @ember-data/tracking 1.24 KB +1.24 KB (270.25 B +204.49 B compressed)
        @ember-data/tracking/-private 839.0 B +839.0 B (178.95 B +135.42 B compressed)
        @ember-data/tracking/index 428.0 B +428.0 B (91.29 B +69.08 B compressed)

Full Asset Analysis (Modern)

Asset Size Report
=================


Library: EmberData
┌────────────┬─────────────┐
│  (index)   │   Values    │
├────────────┼─────────────┤
│   bytes    │ '166.61 KB' │
│ compressed │ '35.54 KB'  │
│  packages  │      9      │
│  modules   │     46      │
└────────────┴─────────────┘

Package: @ember-data/model
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '44.67 KB' │
│  compressed  │ '9.53 KB'  │
│ % Of Library │   '26.8'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/model/-private                        | 44.19 KB  | 9.43 KB    | 98.9          | 26.5
	@ember-data/model/index                           | 486.00 B  | 103.66 B   | 1.1           | 0.3

Package: @ember-data/store
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '43.01 KB' │
│  compressed  │ '9.17 KB'  │
│ % Of Library │   '25.8'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/store/-private                        | 42.01 KB  | 8.96 KB    | 97.7          | 25.2
	@ember-data/store/index                           | 1022.00 B | 217.99 B   | 2.3           | 0.6

Package: @ember-data/record-data
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '23.36 KB' │
│  compressed  │ '4.98 KB'  │
│ % Of Library │   '14.0'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/record-data/-private                  | 23.36 KB  | 4.98 KB    | 100.0         | 14.0

Package: @ember-data/serializer
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '20.42 KB' │
│  compressed  │ '4.35 KB'  │
│ % Of Library │   '12.3'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/serializer/json                       | 7.36 KB   | 1.57 KB    | 36.0          | 4.4
	@ember-data/serializer/-private                   | 5.60 KB   | 1.19 KB    | 27.4          | 3.4
	@ember-data/serializer/json-api                   | 3.79 KB   | 827.82 B   | 18.6          | 2.3
	@ember-data/serializer/rest                       | 2.87 KB   | 625.82 B   | 14.0          | 1.7
	@ember-data/serializer/index                      | 611.00 B  | 130.32 B   | 2.9           | 0.4
	@ember-data/serializer/transform                  | 215.00 B  | 45.85 B    | 1.0           | 0.1

Package: @ember-data/adapter
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '15.93 KB' │
│  compressed  │ '3.40 KB'  │
│ % Of Library │   '9.6'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/adapter/rest                          | 7.88 KB   | 1.68 KB    | 49.5          | 4.7
	@ember-data/adapter/-private                      | 3.79 KB   | 826.75 B   | 23.8          | 2.3
	@ember-data/adapter/error                         | 1.82 KB   | 398.01 B   | 11.4          | 1.1
	@ember-data/adapter/index                         | 1.41 KB   | 308.43 B   | 8.9           | 0.8
	@ember-data/adapter/json-api                      | 1.03 KB   | 225.88 B   | 6.5           | 0.6

Package: ember-data
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '8.28 KB' │
│  compressed  │ '1.77 KB' │
│ % Of Library │   '5.0'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-data/index                                  | 1.94 KB   | 423.40 B   | 23.4          | 1.2
	ember-data/-private                               | 1.53 KB   | 335.09 B   | 18.5          | 0.9
	ember-data/adapters/errors                        | 1.19 KB   | 259.58 B   | 14.4          | 0.7
	ember-data/setup-container                        | 368.00 B  | 78.49 B    | 4.3           | 0.2
	ember-data/relationships                          | 318.00 B  | 67.82 B    | 3.8           | 0.2
	ember-data/serializers/embedded-records-mixin     | 274.00 B  | 58.44 B    | 3.2           | 0.2
	ember-data/serializers/json-api                   | 251.00 B  | 53.53 B    | 3.0           | 0.1
	ember-data/adapters/json-api                      | 245.00 B  | 52.25 B    | 2.9           | 0.1
	ember-data/serializers/json                       | 243.00 B  | 51.83 B    | 2.9           | 0.1
	ember-data/serializers/rest                       | 243.00 B  | 51.83 B    | 2.9           | 0.1
	ember-data/transform                              | 241.00 B  | 51.40 B    | 2.8           | 0.1
	ember-data/adapters/rest                          | 237.00 B  | 50.55 B    | 2.8           | 0.1
	ember-data/serializer                             | 232.00 B  | 49.48 B    | 2.7           | 0.1
	ember-data/adapter                                | 226.00 B  | 48.20 B    | 2.7           | 0.1
	ember-data/model                                  | 222.00 B  | 47.35 B    | 2.6           | 0.1
	ember-data/store                                  | 222.00 B  | 47.35 B    | 2.6           | 0.1
	ember-data/attr                                   | 218.00 B  | 46.49 B    | 2.6           | 0.1
	ember-data/version                                | 161.00 B  | 34.34 B    | 1.9           | 0.1

Package: ember-inflector
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '6.71 KB' │
│  compressed  │ '1.43 KB' │
│ % Of Library │   '4.0'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-inflector/lib/system/inflector              | 3.00 KB   | 655.68 B   | 44.8          | 1.8
	ember-inflector/lib/system/inflections            | 1.59 KB   | 347.03 B   | 23.7          | 1.0
	ember-inflector/lib/system                        | 471.00 B  | 100.46 B   | 6.9           | 0.3
	ember-inflector/index                             | 379.00 B  | 80.84 B    | 5.5           | 0.2
	ember-inflector/lib/helpers/pluralize             | 369.00 B  | 78.70 B    | 5.4           | 0.2
	ember-inflector/lib/utils/make-helper             | 332.00 B  | 70.81 B    | 4.8           | 0.2
	ember-inflector/lib/system/string                 | 318.00 B  | 67.82 B    | 4.6           | 0.2
	ember-inflector/lib/helpers/singularize           | 296.00 B  | 63.13 B    | 4.3           | 0.2

Package: @ember-data/debug
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '3.02 KB'  │
│  compressed  │ '658.67 B' │
│ % Of Library │   '1.8'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/debug/index                           | 2.27 KB   | 496.56 B   | 75.4          | 1.4
	@ember-data/debug/setup                           | 760.00 B  | 162.10 B   | 24.6          | 0.4

Package: @ember-data/tracking
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '1.24 KB'  │
│  compressed  │ '270.25 B' │
│ % Of Library │   '0.7'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/tracking/-private                     | 839.00 B  | 178.95 B   | 66.2          | 0.5
	@ember-data/tracking/index                        | 428.00 B  | 91.29 B    | 33.8          | 0.3

Modern Builds (No Rollup)

🛑 The size of the library EmberData has increased by +1.07 KB (+124.0 B compressed) which exceeds the failure threshold of 75 bytes.

Warnings

⚠️ The uncompressed size of the package @ember-data/tracking has increased by +1.24 KB.

Changeset


EmberData 204.92 KB +1.07 KB (39.1 KB +124.0 B compressed)
    @ember-data/store 63.42 KB -21.0 B (12.1 KB -2.38 B compressed)
        @ember-data/store/-private/store-service 10.51 KB -77.0 B (2.01 KB -8.73 B compressed)
        @ember-data/store/-private/caches/instance-cache 5.85 KB -47.0 B (1.12 KB -5.33 B compressed)
        @ember-data/store/-private/network/fetch-manager 4.84 KB -47.0 B (945.53 B -5.33 B compressed)
        @ember-data/store/-private/record-arrays/identifier-array 4.45 KB +183.0 B (868.83 B +20.74 B compressed)
        @ember-data/store/-private/network/snapshot 3.25 KB -62.0 B (634.93 B -7.03 B compressed)
        @ember-data/store/-private/managers/record-array-manager 3.15 KB +76.0 B (614.9 B +8.61 B compressed)
        @ember-data/store/-private/legacy-model-support/schema-definition-service 1.33 KB -47.0 B (259.46 B -5.33 B compressed)
    @ember-data/model 50.73 KB -105.0 B (9.68 KB -11.9 B compressed)
        @ember-data/model/-private/legacy-relationships-support 7.82 KB -122.0 B (1.49 KB -13.83 B compressed)
        @ember-data/model/-private/record-state 6.54 KB +17.0 B (1.25 KB +1.93 B compressed)
    ember-data 8.59 KB -47.0 B (1.64 KB -5.33 B compressed)
        ember-data/index 1.94 KB -47.0 B (378.7 B -5.33 B compressed)
    @ember-data/tracking 1.24 KB +1.24 KB (241.72 B +143.61 B compressed)
        @ember-data/tracking/-private 839.0 B +839.0 B (160.06 B +95.1 B compressed)
        @ember-data/tracking/index 428.0 B +428.0 B (81.65 B +48.51 B compressed)

Full Asset Analysis (Modern)

Asset Size Report
=================


Library: EmberData
┌────────────┬─────────────┐
│  (index)   │   Values    │
├────────────┼─────────────┤
│   bytes    │ '204.92 KB' │
│ compressed │ '39.10 KB'  │
│  packages  │      9      │
│  modules   │     128     │
└────────────┴─────────────┘

Package: @ember-data/store
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '63.42 KB' │
│  compressed  │ '12.10 KB' │
│ % Of Library │   '30.9'   │
└──────────────┴────────────┘
	Module                                                                        | Bytes     | Compressed | % of Package  | % Of Library
	---------------------------------------------------------------------------------------------------------------------------------
	@ember-data/store/-private/store-service                                      | 10.51 KB  | 2.01 KB    | 16.6          | 5.1
	@ember-data/store/-private/managers/record-data-manager                       | 7.90 KB   | 1.51 KB    | 12.5          | 3.9
	@ember-data/store/-private/caches/instance-cache                              | 5.85 KB   | 1.12 KB    | 9.2           | 2.9
	@ember-data/store/-private/network/fetch-manager                              | 4.84 KB   | 945.53 B   | 7.6           | 2.4
	@ember-data/store/-private/record-arrays/identifier-array                     | 4.45 KB   | 868.83 B   | 7.0           | 2.2
	@ember-data/store/-private/caches/identifier-cache                            | 3.66 KB   | 715.44 B   | 5.8           | 1.8
	@ember-data/store/-private/network/snapshot                                   | 3.25 KB   | 634.93 B   | 5.1           | 1.6
	@ember-data/store/-private/managers/record-array-manager                      | 3.15 KB   | 614.90 B   | 5.0           | 1.5
	@ember-data/store/-private/index                                              | 2.74 KB   | 534.38 B   | 4.3           | 1.3
	@ember-data/store/-private/managers/record-data-store-wrapper                 | 1.62 KB   | 317.08 B   | 2.6           | 0.8
	@ember-data/store/-private/network/request-cache                              | 1.61 KB   | 313.65 B   | 2.5           | 0.8
	@ember-data/store/-private/legacy-model-support/shim-model-class              | 1.55 KB   | 302.01 B   | 2.4           | 0.8
	@ember-data/store/-private/network/finders                                    | 1.51 KB   | 295.71 B   | 2.4           | 0.7
	@ember-data/store/-private/legacy-model-support/record-reference              | 1.34 KB   | 261.56 B   | 2.1           | 0.7
	@ember-data/store/-private/legacy-model-support/schema-definition-service     | 1.33 KB   | 259.46 B   | 2.1           | 0.6
	@ember-data/store/-private/proxies/promise-proxies                            | 1.09 KB   | 213.10 B   | 1.7           | 0.5
	@ember-data/store/index                                                       | 1022.00 B | 194.98 B   | 1.6           | 0.5
	@ember-data/store/-private/utils/uuid-polyfill                                | 786.00 B  | 149.95 B   | 1.2           | 0.4
	@ember-data/store/-private/managers/record-notification-manager               | 753.00 B  | 143.66 B   | 1.2           | 0.4
	@ember-data/store/-private/network/snapshot-record-array                      | 691.00 B  | 131.83 B   | 1.1           | 0.3
	@ember-data/store/-private/utils/construct-resource                           | 688.00 B  | 131.26 B   | 1.1           | 0.3
	@ember-data/store/-private/utils/common                                       | 572.00 B  | 109.12 B   | 0.9           | 0.3
	@ember-data/store/-private/utils/coerce-id                                    | 473.00 B  | 90.24 B    | 0.7           | 0.2
	@ember-data/store/-private/proxies/promise-proxy-base                         | 403.00 B  | 76.88 B    | 0.6           | 0.2
	@ember-data/store/-private/caches/record-data-for                             | 325.00 B  | 62.00 B    | 0.5           | 0.2
	@ember-data/store/-private/utils/identifer-debug-consts                       | 304.00 B  | 57.99 B    | 0.5           | 0.1
	@ember-data/store/-private/utils/promise-record                               | 291.00 B  | 55.51 B    | 0.4           | 0.1
	@ember-data/store/-private/utils/serializer-response                          | 258.00 B  | 49.22 B    | 0.4           | 0.1
	@ember-data/store/-private/utils/normalize-model-name                         | 219.00 B  | 41.78 B    | 0.3           | 0.1
	@ember-data/store/-debug/index                                                | 207.00 B  | 39.49 B    | 0.3           | 0.1
	@ember-data/store/-private/utils/is-non-empty-string                          | 204.00 B  | 38.92 B    | 0.3           | 0.1

Package: @ember-data/model
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '50.73 KB' │
│  compressed  │ '9.68 KB'  │
│ % Of Library │   '24.8'   │
└──────────────┴────────────┘
	Module                                                      | Bytes     | Compressed | % of Package  | % Of Library
	---------------------------------------------------------------------------------------------------------------
	@ember-data/model/-private/model                            | 11.25 KB  | 2.15 KB    | 22.2          | 5.5
	@ember-data/model/-private/legacy-relationships-support     | 7.82 KB   | 1.49 KB    | 15.4          | 3.8
	@ember-data/model/-private/record-state                     | 6.54 KB   | 1.25 KB    | 12.9          | 3.2
	@ember-data/model/-private/references/has-many              | 3.21 KB   | 627.68 B   | 6.3           | 1.6
	@ember-data/model/-private/references/belongs-to            | 2.81 KB   | 549.65 B   | 5.5           | 1.4
	@ember-data/model/-private/promise-many-array               | 2.70 KB   | 527.90 B   | 5.3           | 1.3
	@ember-data/model/-private/legacy-data-fetch                | 2.59 KB   | 505.19 B   | 5.1           | 1.3
	@ember-data/model/-private/many-array                       | 2.35 KB   | 458.64 B   | 4.6           | 1.1
	@ember-data/model/-private/errors                           | 2.31 KB   | 451.20 B   | 4.6           | 1.1
	@ember-data/model/-private/index                            | 1.48 KB   | 289.80 B   | 2.9           | 0.7
	@ember-data/model/-private/relationship-meta                | 991.00 B  | 189.06 B   | 1.9           | 0.5
	@ember-data/model/-private/notify-changes                   | 913.00 B  | 174.18 B   | 1.8           | 0.4
	@ember-data/model/-private/attr                             | 839.00 B  | 160.06 B   | 1.6           | 0.4
	@ember-data/model/-private/has-many                         | 817.00 B  | 155.87 B   | 1.6           | 0.4
	@ember-data/model/-private/belongs-to                       | 736.00 B  | 140.41 B   | 1.4           | 0.4
	@ember-data/model/-private/promise-belongs-to               | 615.00 B  | 117.33 B   | 1.2           | 0.3
	@ember-data/model/-private/util                             | 522.00 B  | 99.58 B    | 1.0           | 0.2
	@ember-data/model/index                                     | 486.00 B  | 92.72 B    | 0.9           | 0.2
	@ember-data/model/-private/diff-array                       | 445.00 B  | 84.89 B    | 0.9           | 0.2
	@ember-data/model/-private/model-for-mixin                  | 407.00 B  | 77.64 B    | 0.8           | 0.2
	@ember-data/model/-private/deprecated-promise-proxy         | 403.00 B  | 76.88 B    | 0.8           | 0.2
	@ember-data/model/-private/legacy-data-utils                | 395.00 B  | 75.36 B    | 0.8           | 0.2
	@ember-data/model/-private/promise-proxy-base               | 284.00 B  | 54.18 B    | 0.5           | 0.1

Package: @ember-data/record-data
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '30.75 KB' │
│  compressed  │ '5.87 KB'  │
│ % Of Library │   '15.0'   │
└──────────────┴────────────┘
	Module                                                                            | Bytes     | Compressed | % of Package  | % Of Library
	-------------------------------------------------------------------------------------------------------------------------------------
	@ember-data/record-data/-private/record-data                                      | 7.17 KB   | 1.37 KB    | 23.3          | 3.5
	@ember-data/record-data/-private/graph/graph                                      | 5.89 KB   | 1.12 KB    | 19.1          | 2.9
	@ember-data/record-data/-private/graph/operations/replace-related-records         | 3.63 KB   | 709.91 B   | 11.8          | 1.8
	@ember-data/record-data/-private/graph/-edge-definition                           | 3.12 KB   | 608.79 B   | 10.1          | 1.5
	@ember-data/record-data/-private/graph/-utils                                     | 2.10 KB   | 411.14 B   | 6.8           | 1.0
	@ember-data/record-data/-private/graph/operations/update-relationship             | 1.51 KB   | 295.14 B   | 4.9           | 0.7
	@ember-data/record-data/-private/graph/operations/merge-identifier                | 1.26 KB   | 245.92 B   | 4.1           | 0.6
	@ember-data/record-data/-private/graph/operations/replace-related-record          | 1.21 KB   | 236.38 B   | 3.9           | 0.6
	@ember-data/record-data/-private/graph/operations/add-to-related-records          | 829.00 B  | 158.16 B   | 2.6           | 0.4
	@ember-data/record-data/-private/graph/operations/remove-from-related-records     | 708.00 B  | 135.07 B   | 2.2           | 0.3
	@ember-data/record-data/-private/relationships/state/belongs-to                   | 707.00 B  | 134.88 B   | 2.2           | 0.3
	@ember-data/record-data/-private/relationships/state/has-many                     | 692.00 B  | 132.02 B   | 2.2           | 0.3
	@ember-data/record-data/-private/index                                            | 497.00 B  | 94.82 B    | 1.6           | 0.2
	@ember-data/record-data/-private/graph/index                                      | 482.00 B  | 91.95 B    | 1.5           | 0.2
	@ember-data/record-data/-private/coerce-id                                        | 379.00 B  | 72.30 B    | 1.2           | 0.2
	@ember-data/record-data/-private/graph/-state                                     | 293.00 B  | 55.90 B    | 0.9           | 0.1
	@ember-data/record-data/-private/normalize-link                                   | 238.00 B  | 45.40 B    | 0.8           | 0.1
	@ember-data/record-data/-private/graph/-operations                                | 150.00 B  | 28.61 B    | 0.5           | 0.1

Package: @ember-data/serializer
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '22.43 KB' │
│  compressed  │ '4.28 KB'  │
│ % Of Library │   '10.9'   │
└──────────────┴────────────┘
	Module                                                     | Bytes     | Compressed | % of Package  | % Of Library
	--------------------------------------------------------------------------------------------------------------
	@ember-data/serializer/json                                | 7.36 KB   | 1.40 KB    | 32.8          | 3.6
	@ember-data/serializer/-private/embedded-records-mixin     | 4.59 KB   | 897.45 B   | 20.5          | 2.2
	@ember-data/serializer/json-api                            | 3.79 KB   | 740.43 B   | 16.9          | 1.8
	@ember-data/serializer/rest                                | 2.87 KB   | 559.76 B   | 12.8          | 1.4
	@ember-data/serializer/-private/index                      | 1018.00 B | 194.21 B   | 4.4           | 0.5
	@ember-data/serializer/index                               | 611.00 B  | 116.56 B   | 2.7           | 0.3
	@ember-data/serializer/-private/transforms/date            | 530.00 B  | 101.11 B   | 2.3           | 0.3
	@ember-data/serializer/-private/transforms/boolean         | 504.00 B  | 96.15 B    | 2.2           | 0.2
	@ember-data/serializer/-private/transforms/number          | 439.00 B  | 83.75 B    | 1.9           | 0.2
	@ember-data/serializer/-private/transforms/string          | 371.00 B  | 70.78 B    | 1.6           | 0.2
	@ember-data/serializer/-private/transforms/transform       | 226.00 B  | 43.11 B    | 1.0           | 0.1
	@ember-data/serializer/transform                           | 215.00 B  | 41.01 B    | 0.9           | 0.1

Package: @ember-data/adapter
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '18.04 KB' │
│  compressed  │ '3.44 KB'  │
│ % Of Library │   '8.8'    │
└──────────────┴────────────┘
	Module                                                        | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------------------
	@ember-data/adapter/rest                                      | 7.88 KB   | 1.50 KB    | 43.7          | 3.8
	@ember-data/adapter/-private/build-url-mixin                  | 1.92 KB   | 374.70 B   | 10.6          | 0.9
	@ember-data/adapter/error                                     | 1.82 KB   | 356.00 B   | 10.1          | 0.9
	@ember-data/adapter/index                                     | 1.41 KB   | 275.87 B   | 7.8           | 0.7
	@ember-data/adapter/json-api                                  | 1.03 KB   | 202.04 B   | 5.7           | 0.5
	@ember-data/adapter/-private/index                            | 1.03 KB   | 201.46 B   | 5.7           | 0.5
	@ember-data/adapter/-private/utils/serialize-query-params     | 769.00 B  | 146.71 B   | 4.2           | 0.4
	@ember-data/adapter/-private/utils/determine-body-promise     | 556.00 B  | 106.07 B   | 3.0           | 0.3
	@ember-data/adapter/-private/utils/parse-response-headers     | 488.00 B  | 93.10 B    | 2.6           | 0.2
	@ember-data/adapter/-private/utils/fetch                      | 450.00 B  | 85.85 B    | 2.4           | 0.2
	@ember-data/adapter/-private/utils/serialize-into-hash        | 382.00 B  | 72.87 B    | 2.1           | 0.2
	@ember-data/adapter/-private/utils/continue-on-reject         | 222.00 B  | 42.35 B    | 1.2           | 0.1
	@ember-data/adapter/-private/fastboot-interface               | 147.00 B  | 28.04 B    | 0.8           | 0.1

Package: ember-data
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '8.59 KB' │
│  compressed  │ '1.64 KB' │
│ % Of Library │   '4.2'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-data/index                                  | 1.94 KB   | 378.70 B   | 22.6          | 0.9
	ember-data/-private/index                         | 1.49 KB   | 291.32 B   | 17.4          | 0.7
	ember-data/adapters/errors                        | 1.19 KB   | 232.18 B   | 13.8          | 0.6
	ember-data/-private/core                          | 368.00 B  | 70.20 B    | 4.2           | 0.2
	ember-data/setup-container                        | 368.00 B  | 70.20 B    | 4.2           | 0.2
	ember-data/relationships                          | 318.00 B  | 60.66 B    | 3.6           | 0.2
	ember-data/serializers/embedded-records-mixin     | 274.00 B  | 52.27 B    | 3.1           | 0.1
	ember-data/serializers/json-api                   | 251.00 B  | 47.88 B    | 2.9           | 0.1
	ember-data/adapters/json-api                      | 245.00 B  | 46.74 B    | 2.8           | 0.1
	ember-data/serializers/json                       | 243.00 B  | 46.36 B    | 2.8           | 0.1
	ember-data/serializers/rest                       | 243.00 B  | 46.36 B    | 2.8           | 0.1
	ember-data/transform                              | 241.00 B  | 45.97 B    | 2.7           | 0.1
	ember-data/adapters/rest                          | 237.00 B  | 45.21 B    | 2.7           | 0.1
	ember-data/serializer                             | 232.00 B  | 44.26 B    | 2.6           | 0.1
	ember-data/adapter                                | 226.00 B  | 43.11 B    | 2.6           | 0.1
	ember-data/model                                  | 222.00 B  | 42.35 B    | 2.5           | 0.1
	ember-data/store                                  | 222.00 B  | 42.35 B    | 2.5           | 0.1
	ember-data/attr                                   | 218.00 B  | 41.59 B    | 2.5           | 0.1
	ember-data/version                                | 161.00 B  | 30.71 B    | 1.8           | 0.1

Package: ember-inflector
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '6.71 KB' │
│  compressed  │ '1.28 KB' │
│ % Of Library │   '3.3'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-inflector/lib/system/inflector              | 3.00 KB   | 586.47 B   | 44.8          | 1.5
	ember-inflector/lib/system/inflections            | 1.59 KB   | 310.40 B   | 23.7          | 0.8
	ember-inflector/lib/system                        | 471.00 B  | 89.85 B    | 6.9           | 0.2
	ember-inflector/index                             | 379.00 B  | 72.30 B    | 5.5           | 0.2
	ember-inflector/lib/helpers/pluralize             | 369.00 B  | 70.39 B    | 5.4           | 0.2
	ember-inflector/lib/utils/make-helper             | 332.00 B  | 63.34 B    | 4.8           | 0.2
	ember-inflector/lib/system/string                 | 318.00 B  | 60.66 B    | 4.6           | 0.2
	ember-inflector/lib/helpers/singularize           | 296.00 B  | 56.47 B    | 4.3           | 0.1

Package: @ember-data/debug
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '3.02 KB'  │
│  compressed  │ '589.14 B' │
│ % Of Library │   '1.5'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/debug/index                           | 2.27 KB   | 444.14 B   | 75.4          | 1.1
	@ember-data/debug/setup                           | 760.00 B  | 144.99 B   | 24.6          | 0.4

Package: @ember-data/tracking
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '1.24 KB'  │
│  compressed  │ '241.72 B' │
│ % Of Library │   '0.6'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/tracking/-private                     | 839.00 B  | 160.06 B   | 66.2          | 0.4
	@ember-data/tracking/index                        | 428.00 B  | 81.65 B    | 33.8          | 0.2

@github-actions
Copy link

github-actions bot commented Oct 14, 2022

Performance Report for a70fbb7

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

☑️ duration
phase no difference [-54ms to 13ms]
☑️ Phase [navigationStart] => [start-data-generation]
phase no difference [-2ms to 4ms]
☑️ Phase [start-data-generation] => [start-push-payload]
phase no difference [-1ms to 3ms]
☑️ Phase [start-push-payload] => [start-peek-records]
phase no difference [-18ms to 0ms]
☑️ Phase [start-peek-records] => [start-record-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-record-materialization] => [end-record-materialization]
phase no difference [-27ms to 5ms]
☑️ Phase [end-record-materialization] => [Test End]
phase no difference [-9ms to 1ms]

Scenario - relationship-materialization-simple: ☑️ Performance is stable

☑️ duration
phase no difference [-13ms to 7ms]
☑️ Phase [navigationStart] => [start-find-all]
phase no difference [-3ms to 4ms]
☑️ Phase [start-find-all] => [start-materialization]
phase no difference [-5ms to 4ms]
✅ Phase [start-materialization] => [end-materialization]
phase estimated improvement -4ms [-8ms to -1ms] OR -4.58% [-8.24% to -0.97%]
☑️ Phase [end-materialization] => [Test End]
phase no difference [0ms to 1ms]

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

☑️ duration
phase no difference [-27ms to 28ms]
☑️ Phase [navigationStart] => [start-data-generation]
phase no difference [-2ms to 5ms]
☑️ Phase [start-data-generation] => [start-push-payload]
phase no difference [-1ms to 1ms]
☑️ Phase [start-push-payload] => [start-peek-records]
phase no difference [-5ms to 5ms]
☑️ Phase [start-peek-records] => [start-record-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-record-materialization] => [start-relationship-materialization]
phase no difference [-6ms to 3ms]
☑️ Phase [start-relationship-materialization] => [end-relationship-materialization]
phase no difference [-16ms to 30ms]
✅ Phase [end-relationship-materialization] => [Test End]
phase estimated improvement -6ms [-9ms to -2ms] OR -1.46% [-2.25% to -0.56%]

Scenario - unload: ☑️ Performance is stable

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

Scenario - unload-all: ☑️ Performance is stable

☑️ duration
phase no difference [-24ms to 5ms]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-5ms to 4ms]
☑️ Phase [start-push-payload] => [start-materialization]
phase no difference [-10ms to 3ms]
☑️ Phase [start-materialization] => [start-unload-all]
phase no difference [-6ms to 2ms]
✅ Phase [start-unload-all] => [end-unload-all]
phase estimated improvement -5ms [-8ms to -1ms] OR -1.13% [-1.95% to -0.31%]
☑️ Phase [end-unload-all] => [Test End]
phase no difference [0ms to 0ms]

Scenario - destroy: ☑️ Performance is stable

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

Scenario - add-children: ☑️ Performance is stable

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

Scenario - unused-relationships: ☑️ Performance is stable

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

@github-actions
Copy link

github-actions bot commented Oct 14, 2022

Commit v Release Performance Report for a70fbb7

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

☑️ duration
phase no difference [-63ms to 56ms]
☑️ Phase [navigationStart] => [start-data-generation]
phase no difference [-11ms to 8ms]
☑️ Phase [start-data-generation] => [start-push-payload]
phase no difference [-5ms to 13ms]
☑️ Phase [start-push-payload] => [start-peek-records]
phase no difference [-21ms to 41ms]
☑️ Phase [start-peek-records] => [start-record-materialization]
phase no difference [0ms to 0ms]
☑️ Phase [start-record-materialization] => [end-record-materialization]
phase no difference [-23ms to 35ms]
✅ Phase [end-record-materialization] => [Test End]
phase estimated improvement -8ms [-27ms to 0ms] OR -8.68% [-28.56% to -0.03%]

Scenario - relationship-materialization-simple: ☑️ Performance is stable

☑️ duration
phase no difference [-15ms to 22ms]
☑️ Phase [navigationStart] => [start-find-all]
phase no difference [-10ms to 7ms]
☑️ Phase [start-find-all] => [start-materialization]
phase no difference [-9ms to 12ms]
☑️ Phase [start-materialization] => [end-materialization]
phase no difference [-2ms to 6ms]
☑️ Phase [end-materialization] => [Test End]
phase no difference [-1ms to 1ms]

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

☑️ duration
phase no difference [-27ms to 148ms]
☑️ Phase [navigationStart] => [start-data-generation]
phase no difference [-4ms to 14ms]
⚠️ Phase [start-data-generation] => [start-push-payload]
phase estimated regression +5ms [0ms to 10ms] OR +2.24% [0.12% to 4.44%]
☑️ Phase [start-push-payload] => [start-peek-records]
phase no difference [-5ms to 30ms]
☑️ 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 15ms]
☑️ Phase [start-relationship-materialization] => [end-relationship-materialization]
phase no difference [-21ms to 95ms]
☑️ Phase [end-relationship-materialization] => [Test End]
phase no difference [-14ms to 1ms]

Scenario - unload: ☑️ Performance is stable

☑️ duration
phase no difference [-28ms to 24ms]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-13ms to 12ms]
☑️ Phase [start-push-payload] => [start-unload-records]
phase no difference [-12ms to 12ms]
☑️ Phase [start-unload-records] => [end-unload-records]
phase no difference [-5ms to 5ms]
☑️ Phase [end-unload-records] => [Test End]
phase no difference [-1ms to 1ms]

Scenario - unload-all: ☑️ Performance is stable

☑️ duration
phase no difference [-20ms to 66ms]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-18ms to 13ms]
☑️ Phase [start-push-payload] => [start-materialization]
phase no difference [-2ms to 43ms]
☑️ Phase [start-materialization] => [start-unload-all]
phase no difference [-3ms to 16ms]
☑️ Phase [start-unload-all] => [end-unload-all]
phase no difference [-11ms to 9ms]
☑️ Phase [end-unload-all] => [Test End]
phase no difference [-2ms to 1ms]

Scenario - destroy: ☑️ Performance is stable

☑️ duration
phase no difference [-21ms to 38ms]
☑️ Phase [navigationStart] => [start-push-payload]
phase no difference [-18ms to 12ms]
☑️ Phase [start-push-payload] => [start-destroy-records]
phase no difference [-6ms to 21ms]
☑️ Phase [start-destroy-records] => [end-destroy-records]
phase no difference [-2ms to 8ms]
☑️ Phase [end-destroy-records] => [Test End]
phase no difference [-1ms to 2ms]

Scenario - add-children: ☑️ Performance is stable

☑️ duration
phase no difference [-16ms to 14ms]
☑️ Phase [navigationStart] => [start-push-initial-payload]
phase no difference [-15ms to 9ms]
☑️ Phase [start-push-initial-payload] => [start-push-update-payload]
phase no difference [-7ms to 0ms]
⚠️ Phase [start-push-update-payload] => [end-push-update-payload]
phase estimated regression +7ms [4ms to 10ms] OR +4.52% [2.49% to 6.41%]
☑️ Phase [end-push-update-payload] => [Test End]
phase no difference [-1ms to 0ms]

Scenario - unused-relationships: ☑️ Performance is stable

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

@runspired runspired added the 🏷️ feat This PR introduces a new feature label Oct 15, 2022
@runspired runspired merged commit 0af2e4b into master Oct 16, 2022
@delete-merged-branch delete-merged-branch bot deleted the fix-8173 branch October 16, 2022 23:01
@runspired runspired changed the title fix: 4.7 backtracking render error feat: @ember-data/tracking primitives to prevent backtracking render errors Oct 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🎯 canary PR is targeting canary (default) 🎯 release PR should be backported to release 🏷️ bug This PR primarily fixes a reported issue 🏷️ feat This PR introduces a new feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant