apollographql / apollo-link-state

✨ Manage your application's state with Apollo!
MIT License
1.4k stars 100 forks source link

apollo-cache-persist and apollo-link-state sync up problem #243

Open ajaymore opened 6 years ago

ajaymore commented 6 years ago

First of all thank you all for this wonderful library, I cannot thank enough.

I am using below type definition with apollo-link-state

export const typeDefs = `
  type User {
    phoneNumber: String!,
    cognitoUsername: ID!
    name: String!
  }
  type Mutation {
    updateUser: User!
  }
`;

Now I use CachePersistor from apollo-cache-persist like below in componentDidMount

persistor.restore().then(() => this.setState({ restored: true }));

This works well. However when I change the typeDefs and add new types, and add values to the deafults they are always overwritten, since persistor.restore() is called later. If I reverse this mechanism then my cached state is overwritten by defaults. I am stuck at how to overcome this.

MrSaints commented 6 years ago

I've encountered a similar issue recently.

Without defaults, I'd get query errors when firing resetStore. With defaults, a page refresh will somehow use those defaults instead of what has been restored by the cache persistor.