The Links in this repo have been migrated to the apollo-client project (as of >= @apollo/[email protected]
). Please refer to the Apollo Client migration guide for more details. All Apollo Link issues / pull requests should now be opened in the apollo-client repo.
apollo-link
is a standard interface for modifying control flow of GraphQL requests and fetching GraphQL results, designed to provide a simple GraphQL client that is capable of extensions.
The high level use cases of apollo-link
are highlighted below:
- fetch queries directly without normalized cache
- network interface for Apollo Client
- network interface for Relay Modern
- fetcher for GraphiQL
The apollo link interface is designed to make links composable and easy to share, each with a single purpose. In addition to the core, this repository contains links for the most common fetch methods—http, local schema, websocket—and common control flow manipulations, such as retrying and polling. For a more detailed view of extended use cases, please see this list of community created links.
npm install apollo-link --save
To use apollo-link in a web browser or mobile app, you'll need a build system capable of loading NPM packages on the client. Some common choices include Browserify, Webpack, and Meteor +1.3.
To start, begin by reading this introduction. For a deeper understanding and to fully leverage the power of Apollo Links, please view the concepts overview. To see example links from around the community, check out this list. If you would like your link to be featured, please open a pull request.
Apollo Link uses Lerna to manage multiple packages. To get started contributing, run npm run bootstrap
in the root of the repository, which will install all dependencies and connect the dependent projects with symlinks in node_modules
. Then run npm run build
to compile the typescript source. Finally for incremental compilation, use npm run watch
.
Your feedback and contributions are always welcome.
apollo-link
strives to follow the Apollo design principles:
- Incrementally adoptable
- Universally compatible
- Simple to get started with
- Inspectable and understandable
- Built for interactive apps
- Small and flexible
- Community driven