Swiftpack.co - apollographql/apollo-ios as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by apollographql.
apollographql/apollo-ios v0.3.0
📱  A strongly-typed, caching GraphQL client for iOS, written in Swift.
⭐️ 3,581
🕓 12 hours ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/apollographql/apollo-ios.git", from: "v0.3.0")

Apollo GraphQL

CircleCI build status MIT license Supported Platforms: iOS, macOS, tvOS, watchOS

Swift 5.7 supported Swift Package Manager compatible CocoaPods compatible

Apollo iOS is a strongly-typed, caching GraphQL client, 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: 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.

Getting started

If you are new to Apollo iOS we recommend our Getting Started guide.

There is also comprehensive documentation including an API reference.

Releases and changelog

All releases are catalogued and we maintain a changelog which details all changes to the library.


The roadmap is a high-level document that describes the next major steps or milestones for this project. We are always open to feature requests, and contributions from the community.


This project is being developed using Xcode 14 and Swift 5.7.

If you open Apollo.xcodeproj, you should be able to run the tests of the Apollo, ApolloSQLite, and ApolloWebSocket frameworks on your Mac or an iOS Simulator. ApolloCodegenLib tests can only be run on macOS.

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.


Who is Apollo?

Apollo builds open-source software and a graph platform to unify GraphQL across your apps and services. We help you ship faster with:

  • Apollo Studio – A free, end-to-end platform for managing your GraphQL lifecycle. Track your GraphQL schemas in a hosted registry to create a source of truth for everything in your graph. Studio provides an IDE (Apollo Explorer) so you can explore data, collaborate on queries, observe usage, and safely make schema changes.
  • Apollo Federation – The industry-standard open architecture for building a distributed graph. Use Apollo’s gateway to compose a unified graph from multiple subgraphs, determine a query plan, and route requests across your services.
  • Apollo Client – The most popular GraphQL client for the web. Apollo also builds and maintains Apollo iOS and Apollo Android.
  • Apollo Server – A production-ready JavaScript GraphQL server that connects to any microservice, API, or database. Compatible with all popular JavaScript frameworks and deployable in serverless environments.

Learn how to build with Apollo

Check out the Odyssey learning platform, the perfect place to start your GraphQL journey with videos and interactive code challenges. Join the Apollo Community to interact with and get technical help from the GraphQL community.


Stars: 3582
Last commit: 8 hours ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Related Packages

Release Notes

4 weeks ago


  • Quotes in operation identifiers are not escaped (#2671): Query strings are now enclosed within extended delimiters to allow inclusion of special characters such as quotation marks. #2701 - Thank you to @StarLard for raising the issue.
  • Cannot find type graphQLSchema in scope (#2705): Generated fragments now use the correct schema namespace casing. #2730 - Thank you to @iAmericanBoy for raising the issue.
  • Updating a local cache mutation with an optional field fails with a ApolloAPI.JSONDecodingError.missingValue error (#2697): Cache mutations will now allow incomplete data to be written to the cache without expecting all fields to be set. Please note that cache manipulation is an advanced feature and you should be aware of how the data written will affect network requests and cache policies. #2751 - Thank you to @amseddi for raising the issue.
  • GraphQLEnum value camel case conversion strategy (#2640), (#2749): The camel case conversion logic for GraphQL enums has been improved to handle a wider range of edge cases that were causing invalid Swift code generation. #2745 - Thank you to @ddanielczyk and @hispanico94 for raising the issues.
  • Naming collision with Selection type from apollo (#2708): ParentType and Selection types in generated selection sets now use a fully qualified namespace to prevent typename conflicts. #2754 - Thank you to @tahirmt for raising the issue.
  • Namespace collision when using "Schema" for schemaName (#2664): Certain strings are now disallowed for use as the schema namespace. #2755 - Thank you to @StarLard for raising the issue.
  • Naming collision with fragments and scalars (#2691): Shared referenced schema types will always use the fully qualified names as the types of fields in selections sets. This prevents collisions with names of other generated selection sets for entity type fields whose names are the same as a referenced schema type. #2757 - Thank you to @scottasoutherland for raising the issue.
  • Naming collision with DocumentType in generated mock code (#2719): All shared referenced schema types within test mocks now use a fully qualified named type. #2762 - Thank you to @dafurman for raising the issue.
  • Schema/Target/Module name with spaces in it breaks generated code (#2653): Spaces are no longer allowed in the schema namespace. Additional validation has been added to the CLI commands to provide the correct error response. #2760 - Thank you to @Narayane for raising the issue.


  • Raised minimum required tooling versions: Swift 5.7 and Xcode 14 are now the minimum required versions to build Apollo iOS and the generated code. #2695

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics