With Apollo Client, you need to do some extra setup to get Apollo to place nice with heurstics based on unions. If not, it will fail based on a heuristic missing pieces of data.
This results in the error state being thrown by the client.
In order to resolve this, it requires us to install a few pieces of work.
yarn add -D @graphql-codegen/cli @graphql-codegen/fragment-matcher
Add graphql-codegen to npm scripts.
Ensure you are using @apollo/client and drop @apollo/react-hooks as it is included now (see the GitHub issue here
This also means ensuring imports for the ApolloProvider and other hooks come from @apollo/client.
With Apollo Client 3, you'll need to make the following changes to your current file that sets up the client:
import { InMemoryCache, IntrospectionFragmentMatcher, } from 'apollo-cache-inmemory'; // generated by Fragment Matcher plugin import possibleTypes from '../introspection-result'; const cache = new InMemoryCache({ possibleTypes, });
Create a codegen.yml file with some config options:
# codegen.yml schema: http://localhost:7000/performance/api/v2/graphql overwrite: true generates: ./src/introspection-result.ts: plugins: - fragment-matcher
Run yarn codegen to generate the schema while your API is running.
When all of this is done, you will be able to query your data with no warnings or errors!