Releases: apollographql/apollo-client
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.
v3.12.0-rc.0
Patch Changes
-
#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. To use the codemod, run the following command:npx jscodeshift -t node_modules/@apollo/client/scripts/codemods/data-masking/unmask.ts --extensions tsx --parser tsx path/to/app/
To customize the tag used to search for GraphQL operations, use the
--tag
option. By default the codemod looks forgql
andgraphql
tags.To apply the directive in migrate mode in order to receive runtime warnings on potentially masked fields, use the
--mode migrate
option.For more information on the options that can be used with
jscodeshift
, check out thejscodeshift
documentation. -
#12121
1085a95
Thanks @jerelmiller! - Warn when using data masking with "no-cache" operations. -
#12114
1d4ce00
Thanks @jerelmiller! - Fix error when combining@unmask
and@defer
directives on a fragment spread when data masking is enabled.
v3.11.10
v3.11.9
Patch Changes
- #12110
a3f95c6
Thanks @jerelmiller! - Fix an issue where errors returned from afetchMore
call from a Suspense hook would cause a Suspense boundary to be shown indefinitely.
v3.12.0-alpha.0
Minor Changes
-
#12042
1c0ecbf
Thanks @jerelmiller! - Introduces data masking into Apollo Client. Data masking allows components to access only the data they asked for through GraphQL fragments. This prevents coupling between components that might otherwise implicitly rely on fields not requested by the component. Data masking also provides the benefit that masked fields only rerender components that ask for the field.To enable data masking in Apollo Client, set the
dataMasking
option totrue
.new ApolloClient({ dataMasking: true, // ... other options });
You can selectively disable data masking using the
@unmask
directive. Apply this to any named fragment to receive all fields requested by the fragment.query { user { id ...UserFields @unmask } }
To help with migration, use the
@unmask
migrate mode which will add warnings when accessing fields that would otherwise be masked.query { user { id ...UserFields @unmask(mode: "migrate") } }
v3.11.8
v3.11.7
Patch Changes
- #12052
e471cef
Thanks @jerelmiller! - Fixes a regression from where passing an invalid identifier tofrom
inuseFragment
would result in the warningTypeError: Cannot read properties of undefined (reading '__typename')
.
v3.11.6
Patch Changes
-
#12049
9c26892
Thanks @phryneas and @maciesielka! - Fix a bug whereuseFragment
did not re-render as expected -
#12044
04462a2
Thanks @DoctorJohn! - Cache theuseSubscription
hook'srestart
function definition between re-renders.
v3.11.5
Patch Changes
-
#12027
eb3e21b
Thanks @JavaScriptBach! - TypeMutationResult.reset
as an arrow function -
#12020
82d8cb4
Thanks @jerelmiller! - Better conform to Rules of React by avoiding write of ref in render foruseFragment
.
v3.11.4
Patch Changes
-
#11994
41b17e5
Thanks @jerelmiller! - Update theModifier
function type to allowcache.modify
to return deeply partial data. -
#11989
e609156
Thanks @phryneas! - Fix a potential crash when callingclearStore
while a query was running.Previously, calling
client.clearStore()
while a query was running had one of these results:useQuery
would stay in aloading: true
state.useLazyQuery
would stay in aloading: true
state, but also crash with a"Cannot read property 'data' of undefined"
error.
Now, in both cases, the hook will enter an error state with a
networkError
, and the promise returned by theuseLazyQuery
execute
function will return a result in an error state. -
#11994
41b17e5
Thanks @jerelmiller! - Prevent accidental distribution oncache.modify
field modifiers when a field is a union type array.