Skip to content
📱 A strongly-typed, caching GraphQL client for iOS, written in Swift
Swift Other
  1. Swift 98.7%
  2. Other 1.3%
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
Apollo.xcodeproj Add convenience method to perform async if needed Sep 16, 2019
Apollo.xcworkspace Extract all configuration from the Xcode projects so that it can be s… Mar 21, 2019
ApolloSQLite.xcodeproj oh hai xcode 10.3 Aug 14, 2019
ApolloWebSocket.xcodeproj oh hai xcode 10.3 Aug 14, 2019
Carthage/Checkouts reject batch loader loads if a loader fails to allow exceptions to ca… Sep 13, 2019
Configuration Update changelog and version for 0.15.3 Sep 13, 2019
Sources use return result async if needed where actual comment was 😛 Sep 16, 2019
Tests add convenience method to return a result asynchronously that can han… Sep 16, 2019
docs Update dependency gatsby-theme-apollo-docs to v2.1.4 Sep 20, 2019
screenshots Update README and add some screenshots Oct 13, 2016
scripts Revert "bump required CLI version to 2.18" Sep 13, 2019
.gitignore Don't use global installation of Apollo CLI (#326) Jul 29, 2018
.gitmodules Fix submodule dependencies Jun 24, 2018
.jazzy.yaml New async query execution model and batched normalized cache Mar 8, 2017
.travis.yml bump nvm version to 10 Aug 8, 2019
Apollo.podspec pin dependency versions for CocoaPods Jul 11, 2019 Update changelog and version for 0.15.3 Sep 13, 2019 Create (#45) Jan 31, 2017
Cartfile.private Separate Carthage optional dependencies Jul 15, 2019
Cartfile.resolved update carthage stuff again Sep 13, 2019 Remove outdated information in and link to docs instead Oct 19, 2016
LICENSE Update LICENSE Dec 1, 2017
Package.resolved Add ApolloSQLite and ApolloWebSockets to Package.swift Jul 26, 2019
Package.swift Use `.exact` versions in Package.swift Jul 28, 2019 (chore) - replace slack with spectrum Jul 3, 2019 add notes about plans for example and documentation improvement Aug 16, 2019
netlify.toml Upgrade docs theme (#553) May 29, 2019
renovate.json Remove renovate config from docs/package.json (#248) Apr 6, 2018

Apollo iOS

GitHub license Carthage compatible CocoaPods Join the community on Spectrum

Apollo iOS is a strongly-typed, caching GraphQL client for iOS, written in Swift.

It allows you to execute queries and mutations against a GraphQL server, and returns results as query-specific Swift types. This means you don’t have to deal with parsing JSON, or passing around dictionaries and making clients cast values to the right type manually. You also don't have to write model types yourself, because these are generated from the GraphQL definitions your UI uses.

As the generated types are query-specific, you're only able to access data you actually specify as part of a query. If you don't ask for a field, you won't be able to access the corresponding property. In effect, this means you can now rely on the Swift type checker to make sure errors in data access show up at compile time. With our Xcode integration, you can conveniently work with your UI code and corresponding GraphQL definitions side by side, and it will even validate your query documents, and show errors inline.

Apollo iOS does more than simply run your queries against a GraphQL server however. It normalizes query results to construct a client-side cache of your data, which is kept up to date as further queries and mutations are run. This means your UI is always internally consistent, and can be kept fully up-to-date with the state on the server with the minimum number of queries required.

This combination of models with value semantics, one way data flow, and automatic consistency management, leads to a very powerful and elegant programming model that allows you to eliminate common glue code and greatly simplifies app development.


Read the full docs at


Read about the latest changes to the library


Build status

This project is being developed using Xcode 10 and Swift 5.0.

If you open Apollo.xcodeproj, you should be able to run the tests of the Apollo target.

Some of the tests run against a simple GraphQL server serving the Star Wars example schema (see installation instructions there).

If you'd like to contribute, please refer to the Apollo Contributor Guide.

You can’t perform that action at this time.