Skip to content

Releases: apollographql/apollo-client

v3.12.10

06 Feb 18:45
0a0f801
Compare
Choose a tag to compare

Patch Changes

  • #12341 f2bb0b9 Thanks @phryneas! - useReadQuery/useQueryRefHandlers: Fix a "hook order" warning that might be emitted in React 19 dev mode.

  • #12342 219b26b Thanks @phryneas! - Add graphql-ws ^6.0.3 as a valid peerDependency

v3.12.9

03 Feb 17:57
1641eeb
Compare
Choose a tag to compare

Patch Changes

  • #12321 daa4f33 Thanks @jerelmiller! - Fix type of extensions in protocolErrors for ApolloError and the onError link. According to the multipart HTTP subscription protocol, fatal tranport errors follow the GraphQL error format which require extensions to be a map as its value instead of an array.

  • #12318 b17968b Thanks @jerelmiller! - Allow RetryLink to retry an operation when fatal transport-level errors are emitted from multipart subscriptions.

    const retryLink = new RetryLink({
      attempts: (count, operation, error) => {
        if (error instanceof ApolloError) {
          // errors available on the `protocolErrors` field in `ApolloError`
          console.log(error.protocolErrors);
        }
    
        return true;
      },
    });

v3.12.8

27 Jan 16:22
0ea97e5
Compare
Choose a tag to compare

Patch Changes

  • #12292 3abd944 Thanks @phryneas! - Remove unused dependency response-iterator

  • #12287 bf313a3 Thanks @phryneas! - Fixes an issue where client.watchFragment/useFragment with @includes crashes when a separate cache update writes to the conditionally included fields.

v3.12.7

22 Jan 02:29
de8196e
Compare
Choose a tag to compare

Patch Changes

  • #12281 d638ec3 Thanks @jerelmiller! - Make fatal tranport-level errors from multipart subscriptions available to the error link with the protocolErrors property.

    const errorLink = onError(({ protocolErrors }) => {
      if (protocolErrors) {
        console.log(protocolErrors);
      }
    });
  • #12281 d638ec3 Thanks @jerelmiller! - Fix the array type for the errors field on the ApolloPayloadResult type. This type was always in the shape of the GraphQL error format, per the multipart subscriptions protocol and never a plain string or a JavaScript error object.

v3.12.6

14 Jan 17:51
a4ae9b4
Compare
Choose a tag to compare

Patch Changes

  • #12267 d57429d Thanks @jerelmiller! - Maintain the TData type when used with Unmasked when TData is not a masked type generated from GraphQL Codegen.

  • #12270 3601246 Thanks @jerelmiller! - Fix handling of tagged/branded primitive types when used as scalar values with Unmasked.

v3.12.5

09 Jan 22:59
acf52e9
Compare
Choose a tag to compare

Patch Changes

  • #12252 cb9cd4e Thanks @jerelmiller! - Changes the default behavior of the MaybeMasked type to preserve types unless otherwise specified. This change makes it easier to upgrade from older versions of the client where types could have unexpectedly changed in the application due to the default of trying to unwrap types into unmasked types. This change also fixes the compilation performance regression experienced when simply upgrading the client since types are now preserved by default.

    A new mode option has now been introduced to allow for the old behavior. See the next section on migrating if you wish to maintain the old default behavior after upgrading to this version.

    Migrating from <= v3.12.4

    If you've adopted data masking and have opted in to using masked types by setting the enabled property to true, you can remove this configuration entirely:

    -declare module "@apollo/client" {
    -  interface DataMasking {
    -    mode: "unmask"
    -  }
    -}

    If you prefer to specify the behavior explicitly, change the property from enabled: true, to mode: "preserveTypes":

    declare module "@apollo/client" {
      interface DataMasking {
    -    enabled: true
    +    mode: "preserveTypes"
      }
    }

    If you rely on the default behavior in 3.12.4 or below and would like to continue to use unmasked types by default, set the mode to unmask:

    declare module "@apollo/client" {
      interface DataMasking {
        mode: "unmask";
      }
    }

v3.12.4

19 Dec 18:56
db6a442
Compare
Choose a tag to compare

Patch Changes

  • #12236 4334d30 Thanks @charpeni! - Fix an issue with refetchQueries where comparing DocumentNodes internally by references could lead to an unknown query, even though the DocumentNode was indeed an active query—with a different reference.

v3.12.3

12 Dec 15:28
e2b15c4
Compare
Choose a tag to compare

Patch Changes

v3.12.2

05 Dec 20:35
95e613e
Compare
Choose a tag to compare

Patch Changes

v3.12.1

05 Dec 16:05
4153d66
Compare
Choose a tag to compare

Patch Changes