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

Stop calling addTypenameToDocument before InMemoryCache reads/writes. #5320

Conversation

benjamn
Copy link
Member

@benjamn benjamn commented Sep 13, 2019

Adding __typename fields to the query by calling addTypenameToDocument used to be necessary for writing results to the cache, but now (thanks to this PR) __typename fields in result objects are automatically written to the cache, so no transformation is necessary.

ApolloClient still calls cache.transformDocument to get a query with __typename fields to send to the server, and the cache still relies on results from the server coming back with __typename fields, but the cache no longer needs the query to be transformed to include __typename.

Compared to PR #5311, this commit should not be a breaking change. PR #5311 ultimately failed because hiding __typename fields threatened to disrupt readFragment => transform => writeFragment workflows, because writeFragment needs __typename information to work properly, so readFragment must return that information.

Adding __typename fields to the query by calling addTypenameToDocument
used to be necessary for writing results to the cache, but now __typename
fields in result objects are automatically written to the cache, so no
transformation is necessary.

ApolloClient still calls cache.transformDocument to get a query with
__typename fields to send to the server, and the cache still relies on
results from the server coming back with __typename fields, but the cache
no longer needs the query to be transformed to include __typename.

Compared to PR #5311, this commit should not be a breaking change.
Copy link
Member

@hwillson hwillson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good @benjamn - thanks!

dataIdFromObject: this.config.dataIdFromObject,
});

this.broadcastWatches();
}

public diff<T>(query: Cache.DiffOptions): Cache.DiffResult<T> {
public diff<T>(options: Cache.DiffOptions): Cache.DiffResult<T> {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for changing these to options👌.

@benjamn benjamn merged commit 2de5d3b into release-3.0 Sep 13, 2019
StephenBarlow pushed a commit that referenced this pull request Oct 1, 2019
…#5320)

Adding __typename fields to the query by calling addTypenameToDocument
used to be necessary for writing results to the cache, but now __typename
fields in result objects are automatically written to the cache, so no
transformation is necessary.

ApolloClient still calls cache.transformDocument to get a query with
__typename fields to send to the server, and the cache still relies on
results from the server coming back with __typename fields, but the cache
no longer needs the query to be transformed to include __typename.

Compared to PR #5311, this commit should not be a breaking change.
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 16, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants