---
name: Apollo iOS
slug: apollo-ios
type: github
source_url: https://github.com/apollographql/apollo-ios
changelog_url: https://github.com/apollographql/apollo-ios/blob/HEAD/CHANGELOG.md
organization: Apollo GraphQL
organization_slug: apollo-graphql
total_releases: 100
latest_version: 1.25.5
latest_date: 2026-04-07
last_updated: 2026-04-18
tracking_since: 2021-09-02
canonical: https://releases.sh/apollo-graphql/apollo-ios
organization_url: https://releases.sh/apollo-graphql
---

<Release version="1.25.5" date="April 7, 2026" published="2026-04-07T18:26:12.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/1.25.5">
### Fixed

- **Fixed concurrency crash in `compileGraphQLResult` on Swift 6.3/macOS 26 ([#929](https://github.com/apollographql/apollo-ios-dev/pull/929)):** Serialized `async let` calls in `compileGraphQLResult` to work around a [Swift concurrency runtime crash](https://github.com/swiftlang/swift/pull/87665) triggered when code generation is used in an `AsyncParsableCommand`. See PR [#942](https://github.com/apollographql/apollo-ios-dev/pull/942). _Thank you to [@m4p](https://github.com/m4p) for the contribution._
</Release>

<Release version="2.1.0" date="April 2, 2026" published="2026-04-02T18:02:42.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.1.0">
### New
- **WebSocket Transport:** Apollo iOS 2.0 now supports WebSocket connections using the `graphql-transport-ws` protocol for subscriptions, queries, and mutations. See the [WebSocket Transport documentation](https://www.apollographql.com/docs/ios/networking/websocket-transport) for setup and usage details.
- **Swift 6.2 MainActor default isolation support ([#925](https://github.com/apollographql/apollo-ios-dev/pull/925)):** Added a `markTypesNonisolated` codegen option that emits `nonisolated` on all generated type declarations. This prevents compilation errors when `SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor` is enabled. The option defaults to `true` when the codegen tool is compiled with Swift 6.2+.
- **ApolloURLSession delegate injection ([#899](https://github.com/apollographql/apollo-ios-dev/pull/899)):** Added support for injecting a custom `URLSessionTaskDelegate` into `ApolloURLSession`, enabling delegate callback handling. _Thank you to [@hammy-e](https://github.com/hammy-e) for the contribution._
### Fixed
- **Fix concurrency issue in `compileGraphQLResult` ([#929](https://github.com/apollographql/apollo-ios-dev/pull/929)):** Resolved a Swift compiler crash triggered by `async let` stack management during code generation in `AsyncParsableCommand` contexts. _Thank you to [@m4p](https://github.com/m4p) for the contribution._
### New
- **WebSocket Transport:** Apollo iOS 2.0 now supports WebSocket connections using the `graphql-transport-ws` protocol for subscriptions, queries, and mutations. See the [WebSocket Transport documentation](https://www.apollographql.com/docs/ios/networking/websocket-transport) for setup and usage details.
- **ApolloURLSession delegate injection ([#899](https://github.com/apollographql/apollo-ios-dev/pull/899)):** Added support for injecting a custom `URLSessionTaskDelegate` into `ApolloURLSession`, enabling delegate callback handling. _Thank you to [@hammy-e](https://github.com/hammy-e) for the contribution._
- **Make `JSONRequest.useGetForQueries` mutable ([#897](https://github.com/apollographql/apollo-ios-dev/pull/897)):** The `useGetForQueries` property on `JSONRequest` is now a `var`, allowing interceptors to mutate the request directly instead of copying it. _Thank you to [@nevil](https://github.com/nevil) for the contribution._
### Fixed
- **Add preflight HTTP header for CSRF prevention ([#900](https://github.com/apollographql/apollo-ios-dev/pull/900)):** Added the `X-Apollo-Operation-Name` header to requests to satisfy Apollo Router's CSRF prevention requirements.
### Improved
- **Use dictionary for `objectType(forTypename:)` lookup ([#918](https://github.com/apollographql/apollo-ios-dev/pull/918)):** Replaced the generated `switch` statement in `SchemaMetadata.objectType(forTypename:)` with a static dictionary lookup, improving deserialization performance by ~75% for schemas with many types (4000+). _Thank you to [@erneestoc](https://github.com/erneestoc) for the contribution._
</Release>

<Release version="1.25.4" date="March 25, 2026" published="2026-03-25T21:32:09.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/1.25.4">
### Improvement

- **Use dictionary instead of switch for `objectType(forTypename:)` lookup ([#3631](https://github.com/apollographql/apollo-ios/issues/3631)):** The generated `SchemaMetadata.objectType(forTypename:)` method now uses a static dictionary for O(1) hash-based lookup instead of a switch statement that performed O(n) linear scanning. For schemas with many object types (~4300 types), this improves deserialization times by approximately 75%. See PR [#926](https://github.com/apollographql/apollo-ios-dev/pull/926).
</Release>

<Release version="2.1.0-rc-1" date="March 23, 2026" published="2026-03-23T18:16:13.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.1.0-rc-1">
### New
- **WebSocket Transport:** Apollo iOS 2.0 now supports WebSocket connections using the `graphql-transport-ws` protocol for subscriptions, queries, and mutations. See the [WebSocket Transport documentation](https://www.apollographql.com/docs/ios/networking/websocket-transport) for setup and usage details.
- **ApolloURLSession delegate injection ([#899](https://github.com/apollographql/apollo-ios-dev/pull/899)):** Added support for injecting a custom `URLSessionTaskDelegate` into `ApolloURLSession`, enabling delegate callback handling. _Thank you to [@hammy-e](https://github.com/hammy-e) for the contribution._
- **Make `JSONRequest.useGetForQueries` mutable ([#897](https://github.com/apollographql/apollo-ios-dev/pull/897)):** The `useGetForQueries` property on `JSONRequest` is now a `var`, allowing interceptors to mutate the request directly instead of copying it. _Thank you to [@nevil](https://github.com/nevil) for the contribution._
### Fixed
- **Add preflight HTTP header for CSRF prevention ([#900](https://github.com/apollographql/apollo-ios-dev/pull/900)):** Added the `X-Apollo-Operation-Name` header to requests to satisfy Apollo Router's CSRF prevention requirements.
### Improved
- **Use dictionary for `objectType(forTypename:)` lookup ([#918](https://github.com/apollographql/apollo-ios-dev/pull/918)):** Replaced the generated `switch` statement in `SchemaMetadata.objectType(forTypename:)` with a static dictionary lookup, improving deserialization performance by ~75% for schemas with many types (4000+). _Thank you to [@erneestoc](https://github.com/erneestoc) for the contribution._
</Release>

<Release version="2.0.6" date="February 6, 2026" published="2026-02-06T20:24:14.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.6">
### Fixed

- **Fix HTTP method selection ([#877](https://github.com/apollographql/apollo-ios-dev/pull/877)):** The APQ retry logic was overriding the HTTP method selected for all queries. _Thank you to [@3redrubies](https://github.com/3redrubies) for raising the issue_.
- **Prevent crashes in `Dictionary` initialization with duplicate keys ([#884](https://github.com/apollographql/apollo-ios-dev/pull/884)):** `Dictionary` initialization using literal elements now uses a safer internal initializer to prevent crashes when duplicate keys are used. In the event that duplicate keys are present, the value associated with the first key will override all other values. _Thank you to [@adysart](https://github.com/adysart) for raising the issue_.

</Release>

<Release version="2.0.5" date="January 15, 2026" published="2026-01-15T19:11:53.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.5">
- **Fix data race in `AsyncReadWriteLock` ([#862](https://github.com/apollographql/apollo-ios-dev/pull/862)):** This fixes issue [#3616](https://github.com/apollographql/apollo-ios/issues/3616). _Thank you to [@AlexPan1992](https://github.com/AlexPan1992) for raising the issue_.
- **Set `URLRequest.cachePolicy` on `GET` requests ([#859](https://github.com/apollographql/apollo-ios-dev/pull/859)):** _Thank you to [@samjdurante](https://github.com/samjdurante) for the contribution_.
</Release>

<Release version="2.0.4" date="December 3, 2025" published="2025-12-03T20:34:39.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.4">
### Fixed

- **Fix infinite loop bug in Test Mocks ([#842](https://github.com/apollographql/apollo-ios-dev/pull/842)):** _Thank you to [@AlexPan1992](https://github.com/AlexPan1992) for raising the issue_.
- **Improve error description formatting for validation failure ([#846](https://github.com/apollographql/apollo-ios-dev/pull/846)):** GraphQL validation errors encountered while running code generation are now formatted to be easier to read in logs. _Thank you to [@dfed](https://github.com/dfed) for the contribution_.
- **Fix deadlock in `AsyncReadWriteLock` ([#851](https://github.com/apollographql/apollo-ios-dev/pull/851)):** When under heavy loads, the `AsyncReadWriteLock` used by the `ApolloStore` could cause a deadlock. This is now resolved. _Thank you to [@marksvend](https://github.com/marksvend) for raising the issue_.
- **Fix cancellation error for single response operations ([#855](https://github.com/apollographql/apollo-ios-dev/pull/855)):** When a single response operation was cancelled, a `.noResults` error was thrown instead of the expected `CancellationError`. This is now resolved. _Thank you to [@3redrubies](https://github.com/3redrubies) for raising the issue_.
- **Fix multipart parsing error ([#852](https://github.com/apollographql/apollo-ios-dev/pull/852)):** When a multipart message was received with characters after the closing boundary the multipart parser would emit a `cannotParseChunkData` parsing error. This is now resolved. _Thank you to [@ecant](https://github.com/ecant) for raising the issue_.
</Release>

<Release version="1.25.3" date="November 5, 2025" published="2025-11-05T23:48:23.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/1.25.3">
### Fixed

- **Include merged fields in selection set equality check ([#3602](https://github.com/apollographql/apollo-ios/issues/3602)):** When a field merged from a child object in a named fragment was merged, it was not being used for equality checks. Equality checks now use the types `__fulfilledFragments` and collects selections from all of them, instead of just traversing downward from `self.__selections`. This ensures all expected data is collected from merged fragments. See PR [#832](https://github.com/apollographql/apollo-ios-dev/pull/832). _Thank you to [@JOyo246](https://github.com/JOyo246) for raising the issue_.
- **Percent encode semicolons when using GET ([#812](https://github.com/apollographql/apollo-ios-dev/pull/812)):** Semicolons were not being correctly encoded into the query string when `useGETForQueries` was enabled. _Thank you to [@nevil](https://github.com/nevil) for the contribution_.
</Release>

<Release version="2.0.3" date="November 5, 2025" published="2025-11-05T23:30:57.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.3">
### Fixed

- **Percent encode semicolons when using GET ([#812](https://github.com/apollographql/apollo-ios-dev/pull/812)):** Semicolons were not being correctly encoded into the query string when `useGETForQueries` was enabled. _Thank you to [@nevil](https://github.com/nevil) for the contribution_.
- **Include merged fields in selection set equality check ([#3602](https://github.com/apollographql/apollo-ios/issues/3602)):** When a field merged from a child object in a named fragment was merged, it was not being used for equality checks. Equality checks now use the types `__fulfilledFragments` and collects selections from all of them, instead of just traversing downward from `self.__selections`. This ensures all expected data is collected from merged fragments. See PR [#832](https://github.com/apollographql/apollo-ios-dev/pull/832). _Thank you to [@JOyo246](https://github.com/JOyo246) for raising the issue_.
- **Fixed compilation of initializers for mock objects with custom scalars ([#3599](https://github.com/apollographql/apollo-ios/issues/3599)):** Default values for custom scalars were not compiling due to SPI usage. See PR [#838](https://github.com/apollographql/apollo-ios-dev/pull/838). _Thank you to [@akoslowski](https://github.com/akoslowski) for raising the issue.
- **Fixed infinite loop in parsing invalid multipart messages ([#3608](https://github.com/apollographql/apollo-ios/issues/3608)):** When a multipart message did not end with the correct ending delimiter, the parser would loop over the line infinitely. See PR [#839](https://github.com/apollographql/apollo-ios-dev/pull/839). _Thank you to [@frehulfd](https://github.com/frehulfd) for raising the issue.
</Release>

<Release version="1.25.2" date="October 14, 2025" published="2025-10-14T16:43:14.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/1.25.2">
This version has no new changes since v1.25.1 and is being created to fix an issue where the previous version was tagged incorrectly.
</Release>

<Release version="1.25.1" date="October 14, 2025" published="2025-10-14T16:09:04.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/1.25.1">
### Fixed

- **Fixed `SelectionSet` equality with `@include/@skip` fields ([#840](https://github.com/apollographql/apollo-ios-dev/pull/804)):** When a single field was used in a selection set with an `@include/@skip` directive, an `assertionFailure` would crash the program. This is now fixed.
</Release>

<Release version="2.0.2" date="October 13, 2025" published="2025-10-13T21:01:07.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.2">
### Fixed

- **Fixed `SelectionSet` equality with `@include/@skip` fields ([#840](https://github.com/apollographql/apollo-ios-dev/pull/804)):** When a single field was used in a selection set with an `@include/@skip` directive, an `assertionFailure` would crash the program. This is now fixed.
</Release>

<Release version="1.25.0" date="October 10, 2025" published="2025-10-10T00:32:24.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/1.25.0">
### Fixed
- **Narrowly Scoped `SelectionSet` Equality ([#3579](https://github.com/apollographql/apollo-ios/issues/3579)):** `SelectionSet` equality now uses a narrowly scoped algorithm that only compares fields in the underlying data that are relevant to the `SelectionSet`. This fixes a bug where a fragment read back from the graph doesn't match one created in memory by ensuring that equality checks for a fragment do not consider fields that are not included in the fragment, even if they are present in the data. Previous equality checks would simply compare the underlying `DataDict` dictionary which was incorrect. See PR [#771](https://github.com/apollographql/apollo-ios-dev/pull/771). _Thank you to [@potrebic](https://github.com/potrebic) for raising the issue._

**Note:** This change is fixing a long-standing bug in `SelectionSet` equality, however it may highlight previously hidden equality issues and appear to be a bug. If you're convinced this new equality behaviour exposes a bug please open a new issue and we can discuss it.
</Release>

<Release version="2.0.1" date="October 9, 2025" published="2025-10-09T23:22:20.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.1">
### Fixed

- **SPM CLI Installation ([#795](https://github.com/apollographql/apollo-ios-dev/pull/795)):** Fixed CLI installation via Swift Package Manager by standardizing relative path handling.

- **SPI Attributes on Internal Models ([#796](https://github.com/apollographql/apollo-ios-dev/pull/796)):** Fixed code generation to exclude `@_spi` attributes from models with `internal` access modifier, preventing compilation errors.
</Release>

<Release version="2.0.0" date="October 1, 2025" published="2025-10-01T20:56:54.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.0">
**Apollo iOS 2.0 is now available!** 🎉

Apollo iOS 2.0 represents a complete reimplementation of many components of the library, redesigned from the ground up to take full advantage of Swift's modern concurrency model. This major release introduces significant breaking changes but provides substantial improvements in type safety, performance, and developer experience.

### 🚀 What's New

- **Swift Concurrency First**: Complete reimplementation using `async/await` and structured concurrency
- **Streamlined APIs**: Simplified client APIs with clearer separation of concerns and more precise type safety
- **Modern Swift Features**: Full adoption of Swift 6 with strict concurrency enabled
- **Enhanced Request Chain**: New interceptor framework with separate types for different request phases
- **Sendable Types**: Most types now conform to `Sendable` for improved thread safety

### 🔧 Major API Changes

- **ApolloClient**: Complete redesign using `async/await` instead of callback-based APIs
- **Cache Policies**: Split into discrete types (`cacheFirst`, `networkFirst`, `networkOnly`, `cacheOnly`, `cacheAndNetwork`) with specific return signatures
- **Request Interceptors**: New framework with `GraphQLInterceptor`, `HTTPInterceptor`, `CacheInterceptor`, and `ResponseParsingInterceptor` types
- **GraphQLResponse**: Renamed from `GraphQLResult` with improved generic typing over operations

### ⚠️ Breaking Changes & Limitations

**Minimum Deployment Targets**
- iOS 15.0+ (was iOS 12.0+)
- macOS 12.0+ (was macOS 10.14+)
- tvOS 15.0+ (was tvOS 12.0+)
- watchOS 8.0+ (was watchOS 5.0+)
- visionOS 1.0+ (new)

**Removed Features**
- **CocoaPods Support**: No longer available. Use Swift Package Manager or XCFrameworks
- **Legacy Network Session**: `URLSessionClient` replaced with `ApolloURLSession` protocol
- **RequestContext**: Replaced with Swift 6 `@TaskLocal` values for dependency injection

**Current Limitations**
- **Web Socket Support**: Not available in initial 2.0 release. HTTP subscriptions are supported via `RequestChainNetworkTransport`. Web socket support will be added in a future 2.0.x release.
- **Deprecated APIs**: 1.x callback-based APIs are deprecated but still available for incremental migration

### 📖 Migration Guide

Apollo iOS 2.0 migration follows a two-phase approach:

**Phase 1: Breaking Changes**
- Update request/response models with code-generation
- Migrate custom `Interceptors` to new discrete types
- Update custom `NetworkTransport` implementations
- Update custom `NormalizedCache` implementations

**Phase 2: Incremental Updates**
- Migrate from deprecated callback APIs to new `async/await` APIs
- Update cache policies to use new discrete types
- Replace `RequestContext` with `@TaskLocal` values

For detailed migration instructions, see the [Apollo iOS 2.0 Migration Guide](https://www.apollographql.com/docs/ios/migrations/2.0).

### 🎯 Recommended Migration Path

1. **Update dependency** to Apollo iOS 2.0
2. **Re-run code generation** with 2.0 engine
3. **Fix breaking changes** (custom interceptors, network transports, etc.)
4. **Incrementally migrate** `ApolloClient` usage from callbacks to `async/await`
5. **Test thoroughly** at each step
</Release>

<Release version="1.24.0" date="September 30, 2025" published="2025-09-30T07:31:37.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/1.24.0">
### New
- **Configure cache keys for an operation using the new `@fieldPolicy` directive. ([#735](https://github.com/apollographql/apollo-ios-dev/pull/735)):** Added a new `@fieldPolicy` directive that can be used to configure cache keys for reading data from the cache prior to making a network request for an operation. Cache keys can also be configured programatically, for more information see documentation [here](https://www.apollographql.com/docs/ios/caching/cache-key-resolution#the-fieldpolicy-directive).

### Improvement
- **Add batching to sqlite selects. ([#725](https://github.com/apollographql/apollo-ios-dev/pull/725)):** Adding batching to the SQLite select handling to cap the number of parameters at 500 per query.
- **Add result code to `SQLiteError`. ([#755](https://github.com/apollographql/apollo-ios-dev/pull/755)):** Adding the raw sqlite result code as an associated value on enum cases of `SQLiteError`.
- **Add `RootSelectionSet` convenience initializer from inline fragment. ([#748](https://github.com/apollographql/apollo-ios-dev/pull/748)):** Added a convenience initializer to `RootSelectionSet` that allows it to be initialized directly from an `InlineFragment`, simplifying the conversion process between fragments and root entity types.
- **Make `dependentKeys` in `GraphQLResult` public. ([#758](https://github.com/apollographql/apollo-ios-dev/pull/758)):** Making `dependentKeys` public allows for implementing custom `ApolloStoreSubscribers` similar to `GraphQLQueryWatcher`. Without this it's extremely difficult to know when to react to cache changes for a query. _Thank you to [@chrsmys](https://github.com/chrsmys) for the contribution.

### Fixed
- **Duplicate deferred fragment identifiers. ([#700](https://github.com/apollographql/apollo-ios-dev/pull/700)):**  The deferred fragment identifier was being generated using all elements in the deferred fragments path type info array. While the contents of that array are correct because of the unique selection sets, the identifier is able to be shared amongst elements with the same path and defer condition. Taking this into account the identifiers are now generated without duplicates.
- **Fix generated default mock initializer for lowercase type names. ([#712](https://github.com/apollographql/apollo-ios-dev/pull/712)):** Type name in mock initializer of a type with a lowercase name was being inadvertently captialized. _Thank you to [@dwroth](https://github.com/dwroth) for the contribution._
- **Deferred fragment accessor with nested fragment. ([#709](https://github.com/apollographql/apollo-ios-dev/pull/709)):** The selection set template would correctly produce a fragment accessor property for merged deferred fragments but the initializer was missing.
- **Change `clientVersion` build delimiter. ([#721](https://github.com/apollographql/apollo-ios-dev/pull/721)):** This changes the version/build delimiter from a `-` to a `+`. This now matches the semver specification of that additional metadata.
</Release>

<Release version="2.0.0-beta-3" date="September 29, 2025" published="2025-09-29T19:02:25.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.0-beta-3">
## 2.0.0 Beta 3

### New

- **Added `@fieldPolicy` directive ([#766](https://github.com/apollographql/apollo-ios-dev/pull/766), [#749](https://github.com/apollographql/apollo-ios-dev/pull/749)):** The `@fieldPolicy` directive provides new functionality for configuring cache keys for fields with arguments. See the [documentation](https://www.apollographql.com/docs/ios/caching/cache-key-resolution#the-fieldpolicy-directive) for more information.

- **RootSelectionSet Convenience Initializer ([#748](https://github.com/apollographql/apollo-ios-dev/pull/748)):** Added convenience initializer for `RootSelectionSet` from inline fragments for easier model construction.

### Improved

- **Swift 6 Language Mode ([#740](https://github.com/apollographql/apollo-ios-dev/pull/740)):** Enabled Swift 6 language mode with strict concurrency checking for improved thread safety and modern Swift patterns.

- **Xcode 26 Support ([#756](https://github.com/apollographql/apollo-ios-dev/pull/756)):** Updated project configuration and build settings for Xcode 26 compatibility.

### Fixed

- **Subscription Over HTTP Support for `RequestChainNetworkTransport` ([#759](https://github.com/apollographql/apollo-ios-dev/pull/759)):** Added subscription support to `RequestChainNetworkTransport` with HTTP chunked multipart response handling for GraphQL subscriptions over HTTP.

- **Fix Fetch Default Cache Policies ([#777](https://github.com/apollographql/apollo-ios-dev/pull/777)):** Fixed default cache policy behavior for fetch operations to ensure consistent caching behavior across different operation types.

- **Narrowly Scoped `SelectionSet` Equality Checking ([#757](https://github.com/apollographql/apollo-ios-dev/pull/757), [#770](https://github.com/apollographql/apollo-ios-dev/pull/770)):** Fixed equality checking implementation for generated models in Apollo iOS 2.0 to ensure proper comparison of selection set data.

- **CLI Installation ([#746](https://github.com/apollographql/apollo-ios-dev/pull/746)):** Fixed issues with Apollo iOS CLI installation and distribution.
</Release>

<Release version="2.0.0-beta-2" date="September 8, 2025" published="2025-09-08T18:41:53.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.0-beta-2">
## 2.0.0 Beta 2

## Fixed

- **Input Variable Lists & Custom Scalars([#742](https://github.com/apollographql/apollo-ios-dev/pull/742)):** Compilation errors for custom scalars and input variables that were list types have been fixed.
</Release>

<Release version="2.0.0-beta-1" date="August 29, 2025" published="2025-08-29T22:25:07.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.0-beta-1">
## 2.0.0 Beta 1

This is the first beta release of Apollo iOS 2.0 This release contains some APIs that are still in development and are subject to change prior to general release.

## New

- **Narrowly Scoped `SelectionSet` Equality ([#736](https://github.com/apollographql/apollo-ios-dev/pull/736)):** Generated models now implement `Equatable` and `Hashable` using only the relevant fields for the model. This means that named fragments that do not have access to fields from the parent operation that fetched them will be equal if only the fields the fragment can access are equal. 

## Changed

- **Remove Cocoapods Support ([#723](https://github.com/apollographql/apollo-ios-dev/pull/723)):** Apollo iOS 2.0 will no longer support Cocoapods. While support was carried over in the alpha releases, this has been officially removed in beta 1.

- **Only Input Variables use `Int32` in generated models ([#729](https://github.com/apollographql/apollo-ios-dev/pull/729)):** Generated models in alpha-2 generated `Int` as `Int32` to more safely represent GraphQL spec compliant data. This made using the models much more cumbersome. Beta 1 changes this behavior so only input variables that may be sent to a GraphQL server use `Int32`.

## Fixed

- **Fix nullable list of nullable items in `InputObject` ([#730](https://github.com/apollographql/apollo-ios-dev/pull/730)):** Fixed a bug when generating a nullable list of nullable items on an `InputObject`.

</Release>

<Release version="2.0.0-alpha-2" date="August 1, 2025" published="2025-08-01T21:56:55.000Z" url="https://github.com/apollographql/apollo-ios/releases/tag/2.0.0-alpha-2">
## Apollo iOS 2.0.0 Alpha 2

This is the an alpha stage preview release of Apollo iOS 2.0. This preview release contains APIs that are still in development and are subject to change prior to stable release.

This version is likely to contain bugs and some features are still limited. This preview is intended to allow interested users to test out the new APIs and provide feedback to help shape the final product.

## Feedback

We are looking for bug reports as well as use cases that may not be supported by the current APIs. Any general feedback on the project is welcome as well. Bug reports can be filed as GitHub issues. For feature requests and general feedback, please comment on the https://github.com/apollographql/apollo-ios/issues/3411.

# Changes

## Default type for integers changed to `Int32`

The generated models will now represent Integers using `Int32` instead of `Int`. The GraphQL spec specifically states that `Int` is a 32-bit integer, so this aligns us more correctly with the specification.

The impact of this change on the usability of the generated models is unclear at this time. **We are seeking feedback on if this change is too much of an issue for users.** While we would like to keep this new behavior, if user feedback is negative, this may be reverted or made into an optional behavior based on a codegen configuration option.

## All sub-projects updated to Swift 6

The codegen engine, apollo-ios-cli, pagination library, unit tests and other development projects have all been updated to Swift 6 with strict concurrency enabled.
</Release>

<Pagination page="1" total-pages="5" total-items="100" next="https://releases.sh/apollo-graphql/apollo-ios.md?page=2" />
