__typename remove graphql
There are three ways of doing this
**First way**
Update the client parameter like this it will omit the unwanted fields in graphql.
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
    apollo.create({
      link: http,
      cache: new InMemoryCache({
        addTypename: false
      })
    });
<!-- end snippet -->
**Second Way**
By using the [omit-deep][1] package and use it as a middleware 
  [1]: https://github.com/jonschlinkert/omit-deep
    const cleanTypeName = new ApolloLink((operation, forward) => {
      if (operation.variables) {
        operation.variables = omitDeep(operation.variables,'__typename')
      }
      return forward(operation).map((data) => {
        return data;
      });
    });
**Third Way**
Creating a custom middleware and inject in the apollo
    const cleanTypeName = new ApolloLink((operation, forward) => {
      if (operation.variables) {
        const omitTypename = (key, value) => (key === '__typename' ? undefined : value);
        operation.variables = JSON.parse(JSON.stringify(operation.variables), omitTypename);
      }
      return forward(operation).map((data) => {
        return data;
      });
    });
and inject the middleware
    const httpLinkWithErrorHandling = ApolloLink.from([
      cleanTypeName,
      retry,
      error,
      http,
    ]);
Preferred method is **Third Way** Because it does not have any third pary dependency and no cache performance issues
