Releases: apollographql/apollo-client
v3.12.10
v3.12.9
Patch Changes
-
#12321
daa4f33
Thanks @jerelmiller! - Fix type ofextensions
inprotocolErrors
forApolloError
and theonError
link. According to the multipart HTTP subscription protocol, fatal tranport errors follow the GraphQL error format which requireextensions
to be a map as its value instead of an array. -
#12318
b17968b
Thanks @jerelmiller! - AllowRetryLink
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
v3.12.7
Patch Changes
-
#12281
d638ec3
Thanks @jerelmiller! - Make fatal tranport-level errors from multipart subscriptions available to the error link with theprotocolErrors
property.const errorLink = onError(({ protocolErrors }) => { if (protocolErrors) { console.log(protocolErrors); } });
-
#12281
d638ec3
Thanks @jerelmiller! - Fix the array type for theerrors
field on theApolloPayloadResult
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
Patch Changes
-
#12267
d57429d
Thanks @jerelmiller! - Maintain theTData
type when used withUnmasked
whenTData
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 withUnmasked
.
v3.12.5
Patch Changes
-
#12252
cb9cd4e
Thanks @jerelmiller! - Changes the default behavior of theMaybeMasked
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 totrue
, 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
, tomode: "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
tounmask
:declare module "@apollo/client" { interface DataMasking { mode: "unmask"; } }
v3.12.4
v3.12.3
Patch Changes
-
#12214
8bfee88
Thanks @phryneas! - Data masking: prevent infinite recursion ofContainsFragmentsRefs
type -
#12204
851deb0
Thanks @jerelmiller! - FixUnmasked
unwrapping tuple types into an array of their subtypes. -
#12204
851deb0
Thanks @jerelmiller! - EnsureMaybeMasked
does not try and unwrap types that contain index signatures. -
#12204
851deb0
Thanks @jerelmiller! - EnsureMaybeMasked
does not try to unwrap the type asUnmasked
if the type containsany
.
v3.12.2
Patch Changes
- #12175
84af347
Thanks @jerelmiller! - Update peer deps to allow for React 19 stable release.