Skip to content

Releases: apollographql/apollo-ios

Version 0.49.0

21 Sep 18:21
d328c0e
Compare
Choose a tag to compare
  • Breaking - Schema download is now Swift-based: The dependency on the Apollo CLI (Typescript-based) for schema downloading has been removed. Schema downloading is now Swift-based, outputs GraphQL SDL (Schema Definition Language) by default, and is maintainable/extensible within apollo-ios with full API documentation. This is a breaking change because some of the API signatures have changed. Swift scripting offers a convenient way to perform certain operations that would otherwise require the command line - it's worth a look if you haven't tried it yet. #1935

Version 0.48.0

02 Sep 20:36
6aea4ed
Compare
Choose a tag to compare
  • Customizable subscription message identifiers: The WebSocketTransport initializer can be configured with a subclass of OperationMessageIdCreator to provide a unique identifier per request. The default implementation is ApolloSequencedOperationMessageIdCreator and retains the current behavior of sequential message numbering. #1919 - Thank you to Clark McNally for the contribution!
  • AWS AppSync Compatibility: Apollo-ios will now correctly handle the start_ack message that AWS AppSync servers respond with when a subscription is requested. #1919 - Thank you to Clark McNally for the contribution!
  • Updated to version 2.33.6 of the Apollo CLI: Applies some new vulnerability patches to the CLI, but should not change any output. #1929
  • Improved documentation: Clarification of cache normalization concepts. #1710 - Thank you to Daniel Morgan for the contribution!

Version 0.47.1

17 Aug 20:09
9c91310
Compare
Choose a tag to compare
  • Fixed - Websocket default implementation not included in ApolloWebSocket via Cocoapods: Thank you to ketenshi for the contribution!

Version 0.47.0

17 Aug 04:24
87bc25c
Compare
Choose a tag to compare
  • Breaking - Removed Starscream dependency: Due to dependency management conflicts it has become easier for us to maintain our WebSockets as part of the ApolloWebSockets target instead of an external dependency on a forked version of Starscream. #1906
    • Removed Starscream as an external dependency in Cocoapods and Swift Package Manager.
    • The DefaultWebSocket implementation has been replaced with WebSocket.
  • Fixed - clearCache not using the provided callback queue: ApolloClient was not passing the provided callback queue to ApolloStore and therefore the completion block for clearCache was being called on the main queue. #1904, #1901 - Thank you to Isaac Ressler for the contribution!
  • Removed - Swift playground: The playground has been moved to a separate repository. #1905

Version 0.46.0

09 Aug 21:34
f3d9f55
Compare
Choose a tag to compare

Version 0.45.0

06 Jul 23:14
84e28fe
Compare
Choose a tag to compare
  • Breaking - Downgraded from Starscream v4 to v3! After upgrading to Starscream 4.0, a lot of our users started to experience crashes while using web sockets. We've decided to revert to the more stable Starscream version 3. In order to fix a few known bugs in Starscream 3, we have made a fork of Starscream that Apollo will depend on going forward. In preparation for moving to Apple WebSockets in the future, we have also fully inverted the dependency on Starscream. Between these two changes, a lot of breaking changes to our Web Socket API have been made:
    • The ApolloWebSocketClient protocol was removed and replaced with WebSocketClient.
    • WebSocketClient does not rely directly on Starscream anymore and has been streamlined for easier conformance.
    • ApolloWebSocket, the default implementation of the WebSocketClient has been replaced with DefaultWebSocket. This implementation uses Starscream, but implementations using other websocket libraries can now be created and used with no need for Starscream.
    • WebSocketClientDelegate replaces direct dependency on Starscream.WebSocketDelegate for delegates.
  • Breaking: Renamed some of the request chain interceptors object:
    • LegacyInterceptorProvider -> DefaultInterceptorProvider
    • LegacyCacheReadInterceptor -> CacheReadInterceptor
    • LegacyCacheWriteInterceptor -> CacheWriteInterceptor
    • LegacyParsingInterceptor -> JSONResponseParsingInterceptor
  • Breaking: WebSocketTransport is now initialized with an ApolloWebSocket (or other object conforming to the ApolloWebSocketClient protocol.) Previously, the initializer took in the necessary parameters to create the web socket internally. This provides better dependency injection capabilities and makes testing easier.
  • Removed class constraint on ApolloInterceptor and converted to structs for all interceptors that could be structs instead of classes.
  • Added removeRecords(matching pattern: CacheKey) function to the normalized cache.

Version 0.44.0

16 Jun 21:10
Compare
Choose a tag to compare
  • BREAKING: Split ApolloCore into two more granular libraries, ApolloAPI (which will contain the parts necessary to compile generated code) and ApolloUtils (which will contain code shared between Apollo and ApolloCodegenLib). If you were previously importing ApolloCore, in most places you will need to import ApolloUtils. If you're using Carthage, you will need to remove the old ApolloCore xcframework and replace it with the two ApolloAPI and ApolloUtils frameworks. (#1817)
  • Fixed a retain cycle in GraphQLQueryWatcher. Thanks @gpambrozio! (#1826)
  • Fixed a stray CocoaPods warning. (#1769)
  • Updated the Typescript CLI to version 2.32.13. (#1773)
  • Added the ability to specify a cachePolicy when calling refresh on a GraphQLWatcher. (#1802)

Version 0.43.0

27 Apr 17:15
Compare
Choose a tag to compare
  • BREAKING (or hopefully, fixing): We removed our test libraries from our Package.swift file since we're not using it to run tests directly at this time. This prevents SPM from trying to resolve test dependencies that are not actually used in the library, which should reduce any version conflicts. However, if you were using any of our test libs in an unsupported fashion, these will no longer be directly available. (#1745)
  • Fixed an issue where when Starscream returned multiple errors in close succession, an exponential number of web socket reconnections could be created. (#1762)
  • Updated class constraints to AnyObject constraints, which should silence a few warnings in 12.5 and be more forward compatible. (#1733)
  • Added the ability to specify a callback queue for the result handler of GraphQLWatcher. (#1723)
  • Fixed a crash when closing a web socket connection and re-opening it immediately. (#1740)
  • You can now skip auto-reconnection for updating the header values and connecting payload in ApolloWebSocket. (#1759)
  • Now avoids the ? when generating a GET URL if queryItems is empty. (#1729)
  • Updated use of the default fetch policy to include fetch and watch. Note that under the hood, this does not change what fetch policy was pointed to at this time, it just centralizes the logic. (#1737)

Version 0.42.0

03 Mar 01:36
Compare
Choose a tag to compare
  • BREAKING: Finally updates our Starscream dependency to 4.0.x. Note that due to SOCKS proxy support being removed from Starscream, we've correspondeingly removed such support.(#1659)
  • BREAKING, but only to Swift Scripting: Updated ApolloSchemaOptions to more clearly handle introspection (ie, from a URL) vs registry (ie, from Apollo Studio) requests by using an enum. If you were passing in an endpointURL previously, you need to use the .introspection enum value going forward. Also changed the name of the field to match the new type. (#1691)
  • BREAKING: Removed CoadableParsingInterceptor and related code designed for new codegen (which is still in progress) since we were wildly over-optimistic on how quickly we'd be using it. (#1670)
  • Fixed an issue where tasks that were in the canceling state could trigger a No data found for task assertion failure. (#1677)
  • Fixed an issue with encoding + in GET requests. (#1653)
  • Fixed an issue where creating GET requests removed existing query params from the URL. (#1687)
  • Prevented a retain cycle during web socket reconnection. (#1674)
  • Added better handling for calling cancel on a RequestChain which has already been cancelled. (#1679)

Version 0.41.0

03 Feb 03:15
Compare
Choose a tag to compare
  • BREAKING: Fixed an issue in which UploadRequests were not getting headers added via the RequestChainNetworkTransport's additionalHeaders. Please note that if you've subclassed the RCNT, you'll need to update your overrides since we had to add a parameter. (#1644)
  • Stopped GET requests from sending a Content-Type header, which could cause servers not configured to ignore that header when the body is empty to freak out. (#1649)