Chester 0.15.0

Chester 0.15.0

LangLanguage SwiftSwift
License MIT
ReleasedLast Release Mar 2021
SPMSupports SPM

Maintained by Jan Gorman.

Chester 0.15.0


CI SwiftPM Compatible Carthage compatible Version License Platform

Experimental: @functionBuilder support

@functionBuilder seems like a natural match for this kind of task. There's a separate GraphQLBuilderTests test suite that shows the supported cases. In it's basic form you can construct a query like this:

import Chester

let query = GraphQLQuery {
  Fields("id", "title")

Nested queries can be defined in their logical order now:

let query = GraphQLQuery {
  Fields("id", "title")
  SubQuery {
    SubQuery {

Known Issues

  • Queries with multiple root fields and arguments produce a compiler error (e.g. 'Int' is not convertible to 'Any')


Chester uses the builder pattern to construct GraphQL queries. In its basic form use it like this:

import Chester

let query = QueryBuilder()
  .with(arguments: Argument(key: "id", value: "20"), Argument(key: "author", value: "Chester"))
  .with(fields: "id", "title", "content")

// For cases with dynamic input, probably best to use a do-catch:

do {
  let queryString = try
} catch {
  // Can specify which errors to catch

// Or if you're sure of your query

guard let queryString = try? else { return }

You can add subqueries. Add as many as needed. You can nest them as well.

let commentsQuery = QueryBuilder()
  .with(fields: "id", content)
let postsQuery = QueryBuilder()
  .with(fields: "id", "title")
  .with(subQuery: commentsQuery)

You can search on multiple collections at once

let search = QueryBuilder()
  .with(arguments: Argument(key: "text", value: "an"))
  .on("Human", "Droid")
  .with(fields: "name")

Check the included unit tests for further examples.


  • Swift 5
  • Xcode 10.2+
  • iOS 8


Chester is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "Chester"

Or Carthage. Add Chester to your Cartfile:

github "JanGorman/Chester"

Or Swift Package Manager. To install it, simply go to File > Swift Package > Add Swift Package Dependency and add "" as Swift Package URL. Or add the following line to Package.swift:

dependencies: [
    .package(url: "", from: "0.13.0")


Jan Gorman


Chester is available under the MIT license. See the LICENSE file for more info.