apollo-client v2.6.0 Release Notes
-
- In production,
invariant(condition, message)
failures will now include a unique error code that can be used to trace the error back to the point of failure. @benjamn in #4521
Apollo Client 2.6.0
๐ If you can be sure your application code does not modify cache result objects (see
freezeResults
note below), you can unlock substantial performance improvements by communicating this assumption vianew ApolloClient({ assumeImmutableResults: true })
which allows the client to avoid taking defensive snapshots of past results using
cloneDeep
, as explained by @benjamn in #4543.๐ฆ Identical overlapping queries are now deduplicated internally by
apollo-client
, rather than using theapollo-link-dedup
package. @benjamn in commit 7cd8479fThe
FetchPolicy
type has been split into two types, so that passingcache-and-network
toApolloClient#query
is now forbidden at the type level, whereas previously it was forbidden by a runtimeinvariant
assertion:export type FetchPolicy = | 'cache-first' | 'network-only' | 'cache-only' | 'no-cache' | 'standby';
export type WatchQueryFetchPolicy = | FetchPolicy | 'cache-and-network';
The exception thrown if you ignore the type error has also been improved to explain the motivation behind this restriction. <br/> [Issue #3130 (comment)](https://github.com/apollographql/apollo-client/issues/3130#issuecomment-478409066) and commit [cf069bc7](github.com/apollographql/apollo-client/commit/cf069bc7ee6577092234b0eb0ac32e05d50f5a1c) - โก๏ธ Avoid updating (and later invalidating) cache watches when `fetchPolicy` is `'no-cache'`. <br/> [@bradleyayers](https://github.com/bradleyayers) in [PR #4573](https://github.com/apollographql/apollo-client/pull/4573), part of [issue #3452](https://github.com/apollographql/apollo-client/issues/3452) - โ Remove temporary `queryId` after `fetchMore` completes. <br/> [@doomsower](https://github.com/doomsower) in [#4440](https://github.com/apollographql/apollo-client/pull/4440) - Call `clearStore` callbacks after clearing store. <br/> [@ds8k](https://github.com/ds8k) in [#4695](https://github.com/apollographql/apollo-client/pull/4695) - Perform all `DocumentNode` transforms once, and cache the results. <br/> [@benjamn](https://github.com/benjamn) in [#4601](https://github.com/apollographql/apollo-client/pull/4601) - Accommodate `@client @export` variable changes in `ObservableQuery`. <br/> [@hwillson](https://github.com/hwillson) in [#4604](https://github.com/apollographql/apollo-client/pull/4604) - ๐ Support the `returnPartialData` option for watched queries again. <br/> [@benjamn](https://github.com/benjamn) in [#4743](https://github.com/apollographql/apollo-client/pull/4743) - Preserve `networkStatus` for incomplete `cache-and-network` queries. <br/> [@benjamn](https://github.com/benjamn) in [#4765](https://github.com/apollographql/apollo-client/pull/4765) - Preserve `cache-and-network` `fetchPolicy` when refetching. <br/> [@benjamn](https://github.com/benjamn) in [#4840](https://github.com/apollographql/apollo-client/pull/4840) - โก๏ธ Update the React Native docs to remove the request for external example apps that we can link to. We're no longer going to manage a list of external example apps. <br /> [@hwillson](https://github.com/hwillson) in [#4531](https://github.com/apollographql/apollo-client/pull/4531) - โฑ Polling queries are no longer batched together, so their scheduling should be more predictable. <br/> [@benjamn](https://github.com/benjamn) in [#4800](https://github.com/apollographql/apollo-client/pull/4800) ### Apollo Cache In-Memory 1.6.0 - ๐ Support `new InMemoryCache({ freezeResults: true })` to help enforce immutability. <br/> [@benjamn](https://github.com/benjamn) in [#4514](https://github.com/apollographql/apollo-client/pull/4514) - ๐ Allow `IntrospectionFragmentMatcher` to match fragments against the root `Query`, as `HeuristicFragmentMatcher` does. <br/> [@rynobax](https://github.com/rynobax) in [#4620](https://github.com/apollographql/apollo-client/pull/4620) - Rerential identity (`===`) of arrays in cache results will now be preserved for unchanged data. <br/> [@benjamn](https://github.com/benjamn) in commit [f3091d6a](https://github.com/apollographql/apollo-client/pull/4586/commits/f3091d6a7e91be98549baea58903282cc540f460) - Avoid adding `__typename` field to `@client` selection sets that have been `@export`ed as input variables. <br/> [@benjamn](https://github.com/benjamn) in [#4784](https://github.com/apollographql/apollo-client/pull/4784) ### GraphQL Anywhere 4.2.2 - ๐ง The `graphql` function can now be configured to ignore `@include` and `@skip` directives (useful when walking a fragment to generate prop types or filter result data). <br/> [@GreenGremlin](https://github.com/GreenGremlin) in [#4373](https://github.com/apollographql/apollo-client/pull/4373)
- In production,