Apollo iOS v1.1 primarily focuses on adding generated initializers to the generated operation models.
In most cases, the upgrade from v1.0 to v1.1 should require no changes to your code.
@include/@skip directive that has a different parent type than the selection set it is being spread into, the shape of the generated models has changed.
... on DetailNode @include(if: $includeDetails) would have previously been named asDetailNode; it will now be generated as asDetailNodeIfIncludeDetails.public but intended for internal usage only have been changed.
SelectionSet models now keep track of which fragments were fulfilled during GraphQL execution in order to enable conversions between type cases. While this does not cause functional changes while using public APIs, this is a fundamental change to the way that the underlying data for a SelectionSet is formatted, it is now required that all SelectionSet creation must be processed by the GraphQLExecutor or a generated initializer that is guaranteed to correctly format the data. This means that initializing a SelectionSet using raw JSON data directly will no longer work. Please ensure that raw JSON data is only used with the new RootSelectionSet.init(data: variables) initializer.null or nil values to the cache was causing crashes in 1.1 Beta 1. This is now fixed.selectionSetInitializers option on your code generation configuration. Manually initialized selection sets can be used for a number of purposes, including:
SelectionSet models with raw JSON: In 1.0, initializing SelectionSet models with raw JSON was unsafe and required usage of underscore prefixed APIs that were intended for internal usage only. Apollo iOS 1.1 introduces a new, safe initializer: RootSelectionSet.init(data: variables).
SelectionSet models. If the provided data is invalid, this initializer throws an error, ensuring that your model usage is always safe.__typename selection for generated models: In 1.1, the code generator adds the __typename field to each root object. In previous versions, this selection was automatically inferred by the GraphQLExecutor, however generating it directly should improve performance of GraphQL execution.Fetched April 11, 2026