Skip to content

Releases: apollographql/apollo-ios

Version 0.27.0

28 Apr 04:22
Compare
Choose a tag to compare
  • BREAKING: Replaced calls directly into the closure based implementation of URLSession with a delegate-based implementation called URLSessionClient.
    • This (finally) allows background session configurations to be used with ApolloClient, since background session configurations immediately error out if you try to use the closure-based URLSession API.

    • This makes a significant change to the initialization of HTTPNetworkTransport if you're using a custom URLSession: Because URLSession must have its delegate set at the point of creation, URLSessionClient is now creating the URL session. You can initialize a URLSessionClient with a URLSessionConfiguration. if before you were using:

      let session = URLSession(configuration: myCustomConfiguration)
      let url = URL(string: "http://localhost:8080/graphql")!
      let transport = HTTPNetworkTransport(url: url,
                                           session: session)

      You will now need to use:

      let client = URLSessionClient(sessionConfiguration: myCustomConfiguration)
      let url = URL(string: "http://localhost:8080/graphql")!
      let transport = HTTPNetworkTransport(url: url,
                                           client: client)
    • If you were passing in a session you'd already set yourself up to be the delegate of to handle GraphQL requests, you'll need to subclass URLSessionClient and override any delegate methods off of URLSessionDelegate, URLSessionTaskDelegate, or URLSessionDataDelegate you need to handle. Unfortunately only one class can be a delegate at a time, and that class must be declared when the session is instantiated.

      Note that if you don't need your existing delegate-based session to do any handling for things touched by Apollo, you can keep it completely separate if you'd prefer.

    • This does not change anything at the point of calls - everything is still closure-based in the end

      Please file bugs on this ASAP if you run into problems. Thank you! (#1163)

Version 0.26.0

21 Apr 03:12
Compare
Choose a tag to compare
  • BREAKING, though in a good way: Updated the typescript CLI to 2.27.2, and updated the script to pull from a CDN (currently backed by GitHub Releases) rather than old Circle images. This should significantly increase download performance and stability. (#1166)
  • BREAKING: Updated the retry delegate to allow more fine-grained control of what error to return if an operation fails in the process of retrying. (#1128, #1167)
  • Added support to the Swift scripting package to be able to use multiple headers when downloading a schema. (#1153)
  • Added the ability to set the SSL trust validator on a websocket. (#1124)
  • Fixed an issue deserializing custom scalars in ApolloSQLite. (#1144)

Version 0.25.0

31 Mar 22:12
Compare
Choose a tag to compare
  • BREAKING: Updated the swift-tools version to 5.2 in Package.swift. Note that if you're using swift-tools 5.2, you'll need to update the syntax of your Package.swift file and specify the name of the library manually for Apollo. (#1099, #1106)
  • POSSIBLY BREAKING: Upgraded the typescript CLI to 2.26.0. No changes were found in test frameworks, but this could theoretically break some stuff. (#1107, #1113)
  • NEW: Added the ability to set Starscream's underlying enableSOCKSProxy to better allow debugging web sockets in tools like Charles Proxy. (#1108)
  • Fixed several issues using paths with spaces in the Swift Codegen. (#1092, #1097).
  • ApolloCodegenLib is now properly passing the header argument last when downloading a schema. (#1096)
  • Automatic Persisted Queries now also work with mutations. (#1110)

Version 0.24.0

20 Mar 01:08
Compare
Choose a tag to compare
  • BREAKING: Updated GraphQLResponse to be generic over the response type rather than the operation type. This will allow more flexibility for generic modifications to methods that need to use GraphQLResponse. (#1061)
  • BREAKING: Updated the file URL-based initializer of GraphQL to throw with a clear error instead of failing silently. Removed the ability to pass in an input stream since that can't be recreated on a failure. Updated initializers take either raw Data or a file URL so that the input stream can be recreated on a retry. (#1086, #1089)
  • In the Swift Package Manager based codegen, made sure that the folder the CLI will be downloaded to is created if it doesn't exist. (#1069)

Version 0.23.2

05 Mar 21:12
Compare
Choose a tag to compare
  • Changed the @available flags added in 0.23.1 to #if os(macOS), since the former is runtime and the latter is compile time, to work around a bug where SwiftUI compiles the ApolloCodegenLib library even if it's not included in the target being previewed. (#1066)
  • Added support for omitDeprecatedEnumCases command line option I missed for ApolloCodegenOptions (#1053)

Version 0.23.1

27 Feb 18:36
Compare
Choose a tag to compare
  • Added some @available flags to prevent accidental compilation of ApolloCodegenLib on platforms other than macOS. (#1041)
  • Made the Query on GraphQLQueryWatcher public so it can be referenced. (#1037)

Version 0.23.0

21 Feb 03:04
Compare
Choose a tag to compare

v0.23.0

  • BETA: Now available, SPM-based code generation, Phase 0 of our transition to Swift Codegen.

    Note that the underlying codegen is still using apollo-tooling, but that will change as we proceed with Phase 1 of the Swift Codegen Project, generating the code in Swift.

    Documentation is available at our Swift Scripting page.

    When this gets to the final version this will supersede existing codegen, so please file bugs galore on this so we can get it good to go as quickly as possible. Thank you! (#940, #1033)

  • Fixed some memory leaks in our internal Promises implementation. (#1016)

Version 0.22.0

13 Feb 20:43
Compare
Choose a tag to compare
  • BREAKING: Updated CLI to v2.22.1, including a bunch of fixes on the Swift side:
    • Marked files which are generated as @generated
    • Added documentation to the constructors of input structs
    • Added additional type annotations to improve compile times.
  • BREAKING: Updated delegate in HTTPNetworkTransport to be a weak var and to not be passed in as a parameter to the initializer. (#990, #1002)
  • Added a lock to InMemoryNormalizedCache to reduce possible race conditions. (#552)
  • Added the ability to not send duplicates on a websocket. (#1004)
  • Fixed an issue that could lead to an undefined cache key in the SQLite library. (#991)
  • Fixed an issue where existing fetch operations in a watcher would not be canceled before a new one was started. (#1012)

Version 0.21.0

19 Dec 22:03
Compare
Choose a tag to compare
  • BREAKING, but by popular request: Removed the requirement that the clientName and clientVersion on NetworkTransport, and added a default implementation so custom implementations don't need to set these up themselves. (#954)

Version 0.20.0

16 Nov 22:34
Compare
Choose a tag to compare
  • Fixed a bunch of data races in ApolloWebSocket. (#880)
  • Updated ApolloWebSocket to depend on Apollo in Package.swift since there is a dependency there. (#906)
  • POSSIBLY BREAKING Updated Swift tools verson in package declaration to 5.1. (#883)