Skip to content

Releases: apollographql/apollo-ios

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)

Version 0.40.0

11 Jan 21:07
Compare
Choose a tag to compare
  • BREAKING: Dropped support for iOS/tvOS < 12, watchOS < 5, and macOS < 10.14. This also involved removing a couple of public functions that were workarounds for support for lower versions. (#1605)
  • Updated the typescript CLI to version 2.32.1. There may be some structural changes to generated code but it should not actually break anything. Please file bugs immediately if it does. (#1618)

Version 0.39.0

24 Dec 19:03
Compare
Choose a tag to compare
  • POSSIBLY BREAKING: Updated swift-tools version to 5.3, and added a fallback version of Package.swift for 5.2. (#1584)
  • BREAKING, technically: Switched cachePolicy to a var on HTTPRequest. This makes it possible for retries to use a different cache policy, such as when an error has occurred at the network level and you want to fall back to showing what's in the cache without retrying the network call. (#1569)
  • Added validation in Swift Codegen wrapper that a URL passed in for singleFile code generation is a .swift file and a URL passed in for multipleFiles code generation is a folder. (#1580)