Releases: apollographql/apollo-ios
Releases · apollographql/apollo-ios
2.0.6
Fixed
- Fix HTTP method selection (#877): The APQ retry logic was overriding the HTTP method selected for all queries. Thank you to @3redrubies for raising the issue.
- Prevent crashes in
Dictionaryinitialization with duplicate keys (#884):Dictionaryinitialization 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 for raising the issue.
2.0.5
- Fix data race in
AsyncReadWriteLock(#862): This fixes issue #3616. Thank you to @AlexPan1992 for raising the issue. - Set
URLRequest.cachePolicyonGETrequests (#859): Thank you to @samjdurante for the contribution.
2.0.4
Fixed
- Fix infinite loop bug in Test Mocks (#842): Thank you to @AlexPan1992 for raising the issue.
- Improve error description formatting for validation failure (#846): GraphQL validation errors encountered while running code generation are now formatted to be easier to read in logs. Thank you to @dfed for the contribution.
- Fix deadlock in
AsyncReadWriteLock(#851): When under heavy loads, theAsyncReadWriteLockused by theApolloStorecould cause a deadlock. This is now resolved. Thank you to @marksvend for raising the issue. - Fix cancellation error for single response operations (#855): When a single response operation was cancelled, a
.noResultserror was thrown instead of the expectedCancellationError. This is now resolved. Thank you to @3redrubies for raising the issue. - Fix multipart parsing error (#852): When a multipart message was received with characters after the closing boundary the multipart parser would emit a
cannotParseChunkDataparsing error. This is now resolved. Thank you to @ecant for raising the issue.
2.0.3
Fixed
- Percent encode semicolons when using GET (#812): Semicolons were not being correctly encoded into the query string when
useGETForQuerieswas enabled. Thank you to @nevil for the contribution. - Include merged fields in selection set equality check (#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
__fulfilledFragmentsand collects selections from all of them, instead of just traversing downward fromself.__selections. This ensures all expected data is collected from merged fragments. See PR #832. Thank you to @JOyo246 for raising the issue. - Fixed compilation of initializers for mock objects with custom scalars (#3599): Default values for custom scalars were not compiling due to SPI usage. See PR #838. _Thank you to @akoslowski for raising the issue.
- Fixed infinite loop in parsing invalid multipart messages (#3608): When a multipart message did not end with the correct ending delimiter, the parser would loop over the line infinitely. See PR #839. _Thank you to @frehulfd for raising the issue.
1.25.3
Fixed
- Include merged fields in selection set equality check (#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
__fulfilledFragmentsand collects selections from all of them, instead of just traversing downward fromself.__selections. This ensures all expected data is collected from merged fragments. See PR #832. Thank you to @JOyo246 for raising the issue. - Percent encode semicolons when using GET (#812): Semicolons were not being correctly encoded into the query string when
useGETForQuerieswas enabled. Thank you to @nevil for the contribution.
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.
2.0.2
1.25.1
1.25.0
Fixed
- Narrowly Scoped
SelectionSetEquality (#3579):SelectionSetequality now uses a narrowly scoped algorithm that only compares fields in the underlying data that are relevant to theSelectionSet. 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 underlyingDataDictdictionary which was incorrect. See PR #771. Thank you to @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.