πŸš€ A fully-featured caching GraphQL client for any server or UI framework
TypeScript Other
Latest commit 389d87a Jan 13, 2017 @stubailo stubailo committed on GitHub Merge pull request #1180 from apollostack/greenkeeper-rollup-0.41.3
Update rollup to version 0.41.3 πŸš€
Permalink
Failed to load latest commit information.
.github Update PULL_REQUEST_TEMPLATE.md Sep 21, 2016
.vscode Ignore Redux typings Sep 17, 2016
analyze Added an analyze script Dec 14, 2016
designs Update errors.md Dec 19, 2016
scripts Fix jsnext:main Jan 13, 2017
src Merge branch 'master' into patch-1 Jan 13, 2017
test Fix typo in test warning message Jan 12, 2017
.babelrc Fix tests Jan 4, 2017
.gitignore Set up alm Jul 22, 2016
.npmignore Make everything ready to npm publish Jan 4, 2017
.travis.yml disable cache Dec 3, 2016
AUTHORS chore(package): Update AUTHORS Jan 12, 2017
CHANGELOG.md update CHANGELOG.md Jan 13, 2017
CONTRIBUTING.md Wording changes Aug 23, 2016
DESIGNS.md update errors design based on feedback Nov 29, 2016
Gruntfile.js Fix linting to actually run on all files using Grunt (#140) Apr 21, 2016
LICENSE Move "Google, Inc." from the LICENSE to the src/AUTHORS file. Aug 30, 2016
README.md Update README.md Nov 18, 2016
ROADMAP.md Merge branch 'master' into zero-decimal-six Jan 4, 2017
appveyor.yml remove appveyor cache Dec 5, 2016
design.md Unordered Mar 22, 2016
fetch-mock.typings.d.ts Speed up network tests by using `fetch-mock`. Oct 3, 2016
package.json chore(package): update rollup to version 0.41.3 Jan 14, 2017
rollup.config.js Merge branch 'zero-decimal-six' into lodash-leftovers Jan 5, 2017
tsconfig.json Inlude mising tests Jan 4, 2017
tsconfig.test.json Remove lodash completely Jan 5, 2017
tslint.json remove rule that no longer applies Dec 13, 2016
typings.d.ts Update types against GraphQL 0.8.2 and @types/graphql Dec 14, 2016

README.md

Apollo client

npm version Get on Slack

Apollo Client can be used in any JavaScript frontend where you want to use data from a GraphQL server. It's:

  1. Incrementally adoptable, so that you can drop it into an existing JavaScript app and start using GraphQL for just part of your UI.
  2. Universally compatible, so that Apollo works with any build setup, any GraphQL server, and any GraphQL schema.
  3. Simple to get started with, you can start loading data right away and learn about advanced features later.
  4. Inspectable and understandable, so that you can have great developer tools to understand exactly what is happening in your app.
  5. Built for interactive apps, so your users can make changes and see them reflected in the UI immediately.
  6. Small and flexible, so you don't get stuff you don't need. The core is under 40kb compressed.
  7. Community driven, Apollo is driven by the community and serves a variety of use cases. Everything is planned and developed in the open.

Get started on the home page, which has great examples for a variety of frameworks.

Installing

npm install apollo-client

To use this client 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.

Learn how to use Apollo Client with your favorite framework


Contributing

Build status Build status Coverage Status

Read the Apollo Contributor Guidelines.

Running tests locally:

# nvm use node
npm install
npm test

This project uses TypeScript for static typing and TSLint for linting. You can get both of these built into your editor with no configuration by opening this project in Visual Studio Code, an open source IDE which is available for free on all platforms.

Useful tools

Should be moved into some kind of CONTRIBUTING.md soon...

  • AST explorer: you can use this to see what the GraphQL query AST looks like for different queries

Important discussions

If you're getting booted up as a contributor, here are some discussions you should take a look at:

  1. Static typing and why we went with TypeScript also covered in the Medium post
  2. Idea for pagination handling
  3. Discussion about interaction with Redux and domain vs. client state
  4. Long conversation about different client options, before this repo existed