title: Graphql react-apollo IntrospectionFragmentMatcher
body: <p>I'm using GitHub Graphql API and I wrote following code with react-apollo but when I paginate after many requests I get following errors on the console.</p>
  
  <blockquote>
    <p>You are using the simple (heuristic) fragment matcher, but your queries contain union or interface types. Apollo Client will not be able to accurately map fragments. To make this error go away, use the <code>IntrospectionFragmentMatcher</code> as described in the docs: <a href="https://www.apollographql.com/docs/react/recipes/fragment-matching.html" rel="nofollow noreferrer">https://www.apollographql.com/docs/react/recipes/fragment-matching.html</a></p>
  </blockquote>
  
  <p>.</p>
  
  <blockquote>
    <p>WARNING: heuristic fragment matching going on!</p>
  </blockquote>
  
  <p>.</p>
  
  <blockquote>
    <p>Missing field name in {
      "__typename": "Organization"
    }</p>
    
    <p>Missing field avatarUrl in {
      "__typename": "Organization"
    }</p>
    
    <p>Missing field repositories in {
      "__typename": "Organization"
    }</p>
  </blockquote>
  
  <p>and I wrote the following codes:</p>
  
  <pre><code>gql`
    query($username: String!, $nextPage: String) {
      search(query: $username, type: USER, first: 100, after: $nextPage) {
        pageInfo {
          hasNextPage
          endCursor
        }
        edges {
          node {
            ... on User {
              name
              avatarUrl
              repositories {
                totalCount
              }
            }
          }
        }
      }
    }
  `;
  
  
  handleSubmit = ({ username }) =&gt; {
      const { client } = this.props;
      this.setState({
        loading: true,
        searchTerm: username,
      });
      client
        .query({
          query: SEARCH_USER,
          variables: {
            username
          }
        })
        .then(({ data }) =&gt; {
          this.setState({
            loading: false,
            searchList: data.search.edges,
            pagination: data.search.pageInfo,
          });
        })
        .catch(err =&gt; {
          console.warn(err);
        });
    };
  </code></pre>