Relates to #8189
If we're already asking folks to change how they pass local `resolvers` to the `ApolloClient` constructor, **I think we should take this opportunity (AC4) to release local `resolvers` _back into the link chain_**, which involves the following steps:
1. Sending queries into the link chain with `@client` directives still intact
2. Stripping those `@client` fields in `HttpLink` and other terminal links, if not handled earlier
3. Providing an `@apollo/client/link/local-resolvers` package that moves the current [`LocalState` implementation](https://github.com/apollographql/apollo-client/blob/release-3.4/src/core/LocalState.ts) into an easy-to-switch-to `ApolloLink`, prioritizing backwards compatibility (and equivalent bundle sizes) as much as possible
4. Providing another link that wraps the `graphql` package's `execute` pipeline, like `@apollo/client/link/schema` currently does, which may indicate an opportunity to reuse `@apollo/client/link/schema`, though that package pulls in the `validate` code as well, so we might want a version without that code (TBD)
I want to thank @vigie for pointing out in https://github.com/apollographql/apollo-client/issues/7072 that it's not fair/reasonable of us to deprecate local resolvers AND keep standing in the way of implementing them in the link chain (like `apollo-link-state` did) by stripping out `@client` directives before passing queries into the link chain.
Since the link chain is async-friendly, it's tempting to save bundle size by using dynamic `import()` to fetch parts of the `graphql` package, though that may not be helpful for code that's always needed during page load.
_Originally posted by @benjamn in https://github.com/apollographql/apollo-client/issues/8189#issuecomment-857199932_