Releases: emberjs/data
v4.11.2 - Roads Untraveled
Bugfixes to resolve major upgrade blockages (computed chains not recalcing, failing builds)
v4.8.8 - Deceleration Orbits
Fixes a memory leak in SSR/Tests and Infinite Recursion bug in develop when yielded/awaited in an ember-concurrency task.
LTS 4.8.7 - Smoother Pavement
Bugfixes to resolve major upgrade blockages (computed chains not recalcing, failing builds)
v4.9.1 Sea Legs
4.9.1 (2022-12-03)
Note: RequestManager was marked private as a package prior to publishing and did not ship with this version.
🐛 Bug Fix
tracking
- #8314 fix: tracking package should not declare exports while v1 (@runspired)
- #8308 fix: prepack addon tree for embroider (@runspired)
store
- #8307 fix: use join vs run for deleteRecord destroy of new records (@runspired)
- #8306 fix: dont skip LiveArray remove if pending queue is not empty (@runspired)
📝 Documentation
- Other
- #8324 add @ember-data/tracking to Advanced Installation (@luxzeitlos)
- #8316 docs: fix typo in README.md (@SergeAstapov)
store
- #8301 assert missing crypto.randomUUID (@luxzeitlos)
Committers: 3
- Chris Thoburn (@runspired)
- Lukas Kohler (@luxzeitlos)
- Sergey Astapov (@SergeAstapov)
v4.8.2 Slow Dancing in a Burning Room
4.8.2 (2022-11-04)
🐛 Bug Fix
- fix: (Actually fix) publish should use pnpm pack to remove
workspace:
prefix
4.8.1 (2022-11-04)
🐛 Bug Fix
- fix: publish should use pnpm pack to remove
workspace:
prefix
4.8.0 (2022-11-04)
🚀 Enhancement
model
- #8261 feat: add identifier data to Reference public API (@runspired)
-ember-data
,model
,private-build-infra
,store
,tracking
,unpublished-test-infra
- #8214 feat: @ember-data/tracking primitives to prevent backtracking render errors (@runspired)
-ember-data
,private-build-infra
,record-data
,store
- #8201 feat: enhance debug logging abilities (@runspired)
🐛 Bug Fix
-ember-data
,private-build-infra
- #8198 fix: thread config from host to nested deps (@runspired)
store
- #8264 fix: fast-push should adjust end based on start (@runspired)
debug
- #8215 fix: inspector type detection 2. attempt #8205 (@patricklx)
- #8213 fix: inspector type detection #8205 (@runspired)
-ember-data
,model
- #8211 fix: ManyReference.value should recompute when data is first received (@runspired)
-ember-data
,model
,store
- #8206 fix: fix MandatorySetter error for Proxied PromiseProxy, silence ember-concurrency deprecations (@runspired)
-ember-data
,private-build-infra
- #8198 fix: thread config from host to nested deps (@runspired)
-ember-data
,store
- #8189 Use array notation instead of at for accessing object at values (@jrjohnson)
-ember-data
,store
- #8184 Use array notation instead of at for accessing values (@jrjohnson)
-ember-data
,store
- #8171 fix: filterBy should compare values (@jrjohnson)
store
- #8172 fix: correct deprecation message for toArray (@jrjohnson)
Committers: 5
- Jon Johnson (@jrjohnson)
- Chris Thoburn (@runspired)
- Edward Faulkner (@ef4)
- Patrick Pircher (@patricklx)
- Rich Glazerman (@richgt)
v4.7.2 Hot Potato
4.7.2 (2022-09-15)
🐛 Bug Fix
store
- #8176 fix: correct deprecation message for toArray (@jrjohnson)
-ember-data
,store
- #8178 fix: filterBy should compare values (@jrjohnson)
Committers: 1
- Jon Johnson (@jrjohnson)
v4.7.1 Tunnels To Gate of White 🤍
v4.7.1 (2022-09-06)
Version 4.7 includes a number of new deprecations, several new features, bug fixes, and a large slate of significant performance improvements.
Of Note:
- Version 4.7 implements a "2.1" cache spec while deprecating the v1 cache spec. This spec differs somewhat from the original 2.0 RFC, an updated RFC specifying the modifications will be published soon. Users looking to migrate to the 2.1 cache should expect that the finalized version of 2.1 enforces that the cache is always a singleton (vs merely allowed to be a singleton), and that data provided to the store and queries to the store from the cache should always contain identifiers in their stable form. This latter point is enforced in 4.7, the former is not yet enforced.
- Explicit Polymorphic Relationships: starting in 4.7 it is no longer required to use Mixins or Inheritance to achieve polymorphic relationships. See emberjs/rfcs#793 for full details.
- Most record hook and cache APIs now have documentation on api.emberjs.com. More still to come as part of finalizing v2.1 cache.
- The return values of hasMany relationships, peekAll, findAll and query are now proxies to native arrays and as such all native array APIs are now usable. These objects will act fully as if they are native arrays. Restrictions on immutability of the result of peekAll and query still apply.
- InternalModel is dead, long live InternalModel. Similarly, nearly all private API's have undergone significant change, if your app previously abused these APIs the most likely refactor is to use a custom model or a custom cache.
⚡️ Performance Improvements
Note: many performance improvements are gated by deprecation removal, meaning that you need to resolve all deprecations for EmberData 4.7 and mark your app as compatible with that version in order to opt in to the fastest codepaths.
All applications should observe significant speed improvements when using EmberData 4.7. The below call-outs are in relation to EmberData 4.6, which was itself also the fastest version of EmberData since we began benchmarking and tracking in the late 2.x series. Many of these improvements were made possible due to the nearing completion of Project Trim (and specifically the removal of InternalModel).
⚡️Pushing new data into the cache is now ~33% faster
⚡️Accessing the LiveArray (peekAll / findAll) for the first time is now 97% faster
⚡️Creating record instances is now ~45-50% faster
⚡️Reduced memory pressure may speedup first render after a large push by ~75%
⚡️Initial Access of Related Records is now ~80% faster
⚡️Initial Access of Async Relationships sees 30% faster creation of async proxies
⚡️Unloading of all records individually (one at a time in a loop) is 40% faster
⚡️Destroying all records (e.g. also sending an API request) in a loop is 62% faster
⚡️Unloading all records (of all types) is ~98% faster
⚡️Receiving and processing updated payloads for existing hasMany relationships is ~40% faster
In addition to these improvements significantly speeding up data usage in applications, we expect to see especially dramatic improvements anywhere the application undergoes teardown (after each test in CI or Fastboot request is processed). In several applications that we looked at, fixture population for acceptance and integration tests accounted for 30% of the total test time, with teardown of those fixtures representing another 40% of the total test time. We would expect such tests to see an overall test-run improvement time in the 50-75% range.
🥅 Test
-ember-data
,model
,store
- #8128 fix: backgroundReloads should not affect recordIsLoaded (#8125) (@runspired)
-ember-data
- #8160 port test from #6147 (@runspired)
🚀 Enhancement
-ember-data
,adapter
,canary-features
,model
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
- #8122 v2.1 cache (@runspired)
-ember-data
,canary-features
,model
,private-build-infra
,record-data
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-serializer-encapsulation-test-app
- #8114 implement store portion of v2 cache (@runspired)
-ember-data
,canary-features
,model
,record-data
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8129 feat: deprecate v1 cache (@runspired)
-ember-data
,adapter
,model
,private-build-infra
,record-data
,store
,unpublished-relationship-performance-test-app
- #7955 FEAT: Explicit Polymorphic Relationship Support [emberjs/rfcs#793] (@runspired)
📝 Documentation
-ember-data
,adapter
,canary-features
,model
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
- #8122 v2.1 cache (@runspired)
-ember-data
,adapter
,canary-features
,debug
,model
,private-build-infra
,record-data
,serializer
,store
- #8121 Documentation Upgrades (@runspired)
- Other
-ember-data
,canary-features
,model
,private-build-infra
,record-data
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-serializer-encapsulation-test-app
- #8114 implement store portion of v2 cache (@runspired)
- #8138 [DOC] typo in identifier initializer documentation (@ciur)
🌲 New Deprecation
-ember-data
,adapter
,model
,private-build-infra
,serializer
,store
- #8093 deprecation: implement helper deprecations (@runspired)
-ember-data
,model
,private-build-infra
- #8092 deprecation: Model.reopen/reopenClass and eager static fields lookups (@runspired)
-ember-data
,adapter
,debug
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8084 Love of Mine (@runspired)
-ember-data
,adapter
,canary-features
,model
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
- #8122 v2.1 cache (@runspired)
-ember-data
,model
,private-build-infra
,record-data
,unpublished-adapter-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8115 deprecation: implement strict relationships (@runspired)
-ember-data
,canary-features
,model
,private-build-infra
,record-data
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-serializer-encapsulation-test-app
- #8114 implement store portion of v2 cache (@runspired)
-ember-data
,canary-features
,model
,record-data
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8129 feat: deprecate v1 cache (@runspired)
-ember-data
,adapter
,model
,private-build-infra
,record-data
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
- #8134 feat: deprecate proxies (implements emberjs/rfcs#846) (@runspired)
🏠 Internal
-ember-data
- #7634 [CHORE]: Modernized store-adapter-test (@runnerboy22)
- #7607 test: defined post model individually per test (@runnerboy22)
-ember-data
,adapter
,debug
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8084 Love of Mine (@runspired)
-ember-data
,model
, ...
v4.6.0
v4.5.0 Love of Mine ♥️
v4.5.0 (2022-07-27)
Version 4.5 includes a number of new deprecations, a significant internal refactoring of the store architecture and several bug fixes.
Of note:
-
Users of just the core of EmberData may expect their builds to be 35-50% smaller. This is due to most of the legacy support for @ember-data/model having now found its final location at home in that package instead of within the @ember-data/store package. The size of @ember-data/store is reduced from ~16kb compressed to ~9.5kb compressed, potentially a little less depending on what deprecations are resolved and what other packages are present. We expect the core to continue to shrink as we complete the final stages of removing InternalModel, complete implementations for recently accepted deprecation RFCs, and introduce RecordDataV2.
-
Users of private store APIs may find these APIs have now been deprecated or removed. Internal restructuring will be high the next 6 months as we polish off the removal of InternalModel and continue to simplify codepaths which that removal allows us to do. All but a very few private methods have been entirely eliminated from the store.
New Deprecations target 5.0 and include:
- deprecating some internal usage of
RSVP.Promise
that applications may have become dependent on if their tests are leaky - deprecating the
type
property on snapshots (which would lookup the model class). - deprecating
store.find
, a private method that has been maintained in case users accidentally fell into using ember's hidden autofetch behavior in routes - deprecating
store.hasRecordForId
, aspeekRecord
is generally more useful and provides the same information (and more). - deprecating
store.recordWasInvalid
, an unused internal api thatember-model-validations
appears to be using. - deprecating passing strings to the schema lookup functions
attributesDefinitionFor
andrelationshipsDefinitionFor
, these APIs now expect an object with at least atype
property representing the model name. - deprecating the
-json-api
fallback adapter, a hidden behavior that provided an adapter if the application failed to define one.
As always deprecated code can be eliminated from the build output by specifying the compatWith
arg on the emberData configuration in your app.
🚀 Enhancement
-ember-data
,private-build-infra
,store
- #7880 [rfc]: deprecate RSVP.Promise (@snewcomer)
🌲 New Deprecation
-ember-data
,adapter
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-model-encapsulation-test-app
- #8055 chore: Continuing InternalModel Burndown (@runspired)
🐛 Bug Fix
-ember-data
,adapter
- #8083 [BUGFIX] Serialize null array items as empty strings (@camerondubas)
-ember-data
,store
- #7901 fix: waiter should be always on (@runspired)
-ember-data
,adapter
,canary-features
,debug
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-debug-encapsulation-test-app
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-record-data-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8042 fix: RecordState cleanup, drop requireESM and node12 (@runspired)
-ember-data
,debug
- #8008 schedule watchTypeIfUnseen to prevent loop (@patricklx)
adapter
,model
,private-build-infra
,serializer
- #8013 [BUGFIX release] Fix generated import paths for test setup functions in addons (@bertdeblock)
-ember-data
,model
,store
- #8025 Fix: PromiseProxy Deprecation for Save (@runspired)
-ember-data
- #7902 test for async hasMany does not trigger relationship fetch (@snewcomer)
serializer
- #7854 fix: pass correct args to keyFor<Attribute|Relationship> when normalizing (@runspired)
-ember-data
,model
- #7945 fix for #7904 computed chains not updated for async hasMany loading (@runspired)
📝 Documentation
-ember-data
,adapter
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-model-encapsulation-test-app
- #8055 chore: Continuing InternalModel Burndown (@runspired)
model
- #8002 Update imports in doc code samples (@CuriousCorrelation)
- #7984 Add
LICENSE.md
(@ddzz)
🚿 Deprecation Removal
-ember-data
,adapter
,debug
,model
,private-build-infra
,record-data
,store
,unpublished-test-infra
- #8078 chore: InternalModel burndown (@runspired)
-ember-data
,model
,record-data
,store
,unpublished-test-infra
- #7971 chore: remove the state machine (@runspired)
-ember-data
,adapter
,debug
,model
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-debug-encapsulation-test-app
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-record-data-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #7970 chore: remove unused evented infra (@runspired)
-ember-data
,adapter
,model
,store
- #7953 chore: cleanup a few more leaf types (@runspired)
-ember-data
- #7623 [CHORE]: Modernize Find-Test (@runnerboy22)
- #7952 chore: migrate files that only re-export to ts to preserve type flow (@runspired)
- #7951 chore: remove unneeded version code in ember-data package (@runspired)
- #7629 [CHORE]: Modernize queries-test (@runnerboy22)
- #7624 [CHORE]: Modernize find-all-test (@runnerboy22)
-ember-data
,adapter
,model
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-debug-encapsulation-test-app
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-record-data-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #7950 some small cleanups and fix test container (@runspired)
-ember-data
,store
- #7849 Remove some usage of runtime require (@SergeAstapov)
🥅 Test
-ember-data
,adapter
,canary-features
,debug
,model
,private-build-infra
,record-data
,serializer
,store
,unpublished-adapter-encapsulation-test-app
,unpublished-debug-encapsulation-test-app
,unpublished-eslint-rules
,unpublished-fastboot-test-app
,unpublished-model-encapsulation-test-app
,unpublished-record-data-encapsulation-test-app
,unpublished-relationship-performance-test-app
,unpublished-serializer-encapsulation-test-app
,unpublished-test-infra
- #8027 fix test runs, update lts support tests (@runspired)
-ember-data
- #7628 [CHORE]: Modernize json-api-adapter-test (@runnerboy22)
- #7626 [CHORE]: Modernize build-url-mixin-strict-equal (@runnerboy22)
- #7630 [CHORE]: Modernize record-persistence-test (@runnerboy22)
- #7625 [CHORE]: Modernize client-side-delete-test (@runnerboy22)
🏠 Internal
-ember-data
,adapter
,debug
,model
,private-build-infra
,record-data
,store
,unpublished-test-infra
- #8078 chore: InternalModel burndown (@runspired)
-ember-data
,adapter
,model
,private-build-infra
...