Releases: apollographql/apollo-client
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.
v3.12.1
v3.12.0
Minor Changes
Data masking 🎭
-
#12042
1c0ecbf
Thanks @jerelmiller! - Introduces data masking in Apollo Client.Data masking enforces that only the fields requested by the query or fragment is available to that component. Data masking is best paired with colocated fragments.
To enable data masking in Apollo Client, set the
dataMasking
option totrue
.new ApolloClient({ dataMasking: true, // ... other options });
For detailed information on data masking, including how to incrementally adopt it in an existing applications, see the data masking documentation.
-
#12131
21c3f08
Thanks @jerelmiller! - Allownull
as a validfrom
value inuseFragment
.
More Patch Changes
-
#12126
d10d702
Thanks @jerelmiller! - Maintain the existing document if its unchanged by the codemod and move to more naive whitespace formatting -
#12150
9ed1e1e
Thanks @jerelmiller! - Fix issue when usingUnmasked
with older versions of TypeScript when used with array fields. -
#12116
8ae6e4e
Thanks @jerelmiller! - Prevent field accessor warnings when using@unmask(mode: "migrate")
on objects that are passed intocache.identify
. -
#12120
6a98e76
Thanks @jerelmiller! - Provide a codemod that applies@unmask
to all named fragments for all operations and fragments.Learn how to use the codemod in the incremental adoption documentation.
-
#12134
cfaf4ef
Thanks @jerelmiller! - Fix issue where data went missing when an unmasked fragment in migrate mode selected fields that the parent did not. -
#12154
d933def
Thanks @phryneas! - Data masking types: handle overlapping nested array types and fragments on interface types. -
#12139
5a53e15
Thanks @phryneas! - Fix issue where masked data would sometimes get returned when the field was part of a child fragment from a fragment unmasked by the parent query. -
#12123
8422a30
Thanks @jerelmiller! - Warn when using data masking with "no-cache" operations. -
#12139
5a53e15
Thanks @phryneas! - Fix issue where the warning emitted by@unmask(mode: "migrate")
would trigger unnecessarily when the fragment was used alongside a masked fragment inside an inline fragment. -
#12114
1d4ce00
Thanks @jerelmiller! - Fix error when combining@unmask
and@defer
directives on a fragment spread when data masking is enabled. -
#12130
1e7d009
Thanks @jerelmiller! - Fix error thrown when applying unmask migrate mode warnings on interface types with selection sets that contain inline fragment conditions. -
#12152
78137ec
Thanks @phryneas! - Add a helper that will skip the TS unmasking alorithm when no fragments are present on type level -
#12126
d10d702
Thanks @jerelmiller! - Ensure documents unchanged by the codemod are left untouched. -
#12133
a6ece37
Thanks @jerelmiller! - Ensurenull
is retained in nullable types when unmasking a type with theUnmasked
helper type. -
#12139
5a53e15
Thanks @phryneas! - Fix issue that threw errors when masking partial data with@unmask(mode: "migrate")
.
v3.12.0-rc.4
v3.12.0-rc.3
v3.12.0-rc.2
Patch Changes
-
#12139
5a53e15
Thanks @phryneas! - Fix issue where masked data would sometimes get returned when the field was part of a child fragment from a fragment unmasked by the parent query. -
#12139
5a53e15
Thanks @phryneas! - Fix issue where the warning emitted by@unmask(mode: "migrate")
would trigger unnecessarily when the fragment was used alongside a masked fragment inside an inline fragment. -
#12139
5a53e15
Thanks @phryneas! - Fix issue that threw errors when masking partial data with@unmask(mode: "migrate")
.
v3.12.0-rc.1
Minor Changes
- #12131
21c3f08
Thanks @jerelmiller! - Allownull
as a validfrom
value inuseFragment
.
Patch Changes
-
#12126
d10d702
Thanks @jerelmiller! - Maintain the existing document if its unchanged by the codemod and move to more naive whitespace formatting -
#12134
cfaf4ef
Thanks @jerelmiller! - Fix issue where data went missing when an unmasked fragment in migrate mode selected fields that the parent did not. -
#12130
1e7d009
Thanks @jerelmiller! - Fix error thrown when applying unmask migrate mode warnings on interface types with selection sets that contain inline fragment conditions. -
#12126
d10d702
Thanks @jerelmiller! - Ensure documents unchanged by the codemod are left untouched. -
#12133
a6ece37
Thanks @jerelmiller! - Ensurenull
is retained in nullable types when unmasking a type with theUnmasked
helper type.