Skip to content

Releases: apollographql/apollo-client

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

v3.12.0

04 Dec 19:18
36b93b9
Compare
Choose a tag to compare

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 to true.

    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! - Allow null as a valid from value in useFragment.

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 using Unmasked 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 into cache.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! - Ensure null is retained in nullable types when unmasking a type with the Unmasked helper type.

  • #12139 5a53e15 Thanks @phryneas! - Fix issue that threw errors when masking partial data with @unmask(mode: "migrate").

v3.12.0-rc.4

27 Nov 17:28
d42d9e0
Compare
Choose a tag to compare
v3.12.0-rc.4 Pre-release
Pre-release

Patch Changes

  • #12154 d933def Thanks @phryneas! - Data masking types: handle overlapping nested array types and fragments on interface types.

v3.12.0-rc.3

20 Nov 20:35
f4d82c8
Compare
Choose a tag to compare
v3.12.0-rc.3 Pre-release
Pre-release

Patch Changes

  • #12150 9ed1e1e Thanks @jerelmiller! - Fix issue when using Unmasked with older versions of TypeScript when used with array fields.

  • #12152 78137ec Thanks @phryneas! - Add a helper that will skip the TS unmasking alorithm when no fragments are present on type level

v3.12.0-rc.2

19 Nov 21:02
56bc44f
Compare
Choose a tag to compare
v3.12.0-rc.2 Pre-release
Pre-release

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

15 Nov 18:03
a946f14
Compare
Choose a tag to compare
v3.12.0-rc.1 Pre-release
Pre-release

Minor Changes

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! - Ensure null is retained in nullable types when unmasking a type with the Unmasked helper type.