Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update @apollo/client and related dependencies #3187

Open
wants to merge 3 commits into
base: next
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jan 16, 2025

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@apollo/client (source) ^3.7.0 -> ^3.12.8 age adoption passing confidence
apollo-link-rest ^0.8.0-beta.0 -> ^0.9.0 age adoption passing confidence
graphql-anywhere (source) ^4.2.7 -> ^4.2.8 age adoption passing confidence
graphql-tag ^2.0.0 -> ^2.12.6 age adoption passing confidence

Release Notes

apollographql/apollo-client (@​apollo/client)

v3.12.8

Compare Source

Patch Changes

v3.12.7

Compare Source

Patch Changes

v3.12.6

Compare Source

Patch Changes

v3.12.5

Compare Source

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 "@&#8203;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 "@&#8203;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 "@&#8203;apollo/client" {
  interface DataMasking {
    mode: "unmask";
  }
}

v3.12.4

Compare Source

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

Compare Source

Patch Changes

v3.12.2

Compare Source

Patch Changes

v3.12.1

Compare Source

Patch Changes

v3.12.0

Compare Source

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

v3.11.10

Compare Source

Patch Changes
  • #​12093 1765668 Thanks @​mgmolisani! - Fixed a bug when evaluating the devtools flag with the new syntax devtools.enabled that could result to true when explicitly set to false.

v3.11.9

Compare Source

Patch Changes
  • #​12110 a3f95c6 Thanks @​jerelmiller! - Fix an issue where errors returned from a fetchMore call from a Suspense hook would cause a Suspense boundary to be shown indefinitely.

v3.11.8

Compare Source

Patch Changes

v3.11.7

Compare Source

Patch Changes
  • #​12052 e471cef Thanks @​jerelmiller! - Fixes a regression from where passing an invalid identifier to from in useFragment would result in the warning TypeError: Cannot read properties of undefined (reading '__typename').

v3.11.6

Compare Source

Patch Changes

v3.11.5

Compare Source

Patch Changes

v3.11.4

Compare Source

Patch Changes
  • #​11994 41b17e5 Thanks @​jerelmiller! - Update the Modifier function type to allow cache.modify to return deeply partial data.

  • #​11989 e609156 Thanks @​phryneas! - Fix a potential crash when calling clearStore while a query was running.

    Previously, calling client.clearStore() while a query was running had one of these results:

    • useQuery would stay in a loading: true state.
    • useLazyQuery would stay in a loading: 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 the useLazyQuery execute function will return a result in an error state.

  • #​11994 41b17e5 Thanks @​jerelmiller! - Prevent accidental distribution on cache.modify field modifiers when a field is a union type array.

v3.11.3

Compare Source

Patch Changes
Potentially disruptive change

When calling fetchMore with a query that has a no-cache fetch policy, fetchMore will now throw if an updateQuery function is not provided. This provides a mechanism to merge the results from the fetchMore call with the query's previous result.

v3.11.2

Compare Source

Patch Changes

v3.11.1

Compare Source

Patch Changes
  • #​11969 061cab6 Thanks @​jerelmiller! - Remove check for window.__APOLLO_CLIENT__ when determining whether to connect to Apollo Client Devtools when connectToDevtools or devtools.enabled is not specified. This now simply checks to see if the application is in development mode.

  • #​11971 ecf77f6 Thanks @​jerelmiller! - Prevent the setTimeout for suggesting devtools from running in non-browser environments.

v3.11.0

Compare Source

Potentially Breaking Fixes
  • #​11789 5793301 Thanks @​phryneas! - Changes usages of the GraphQLError type to GraphQLFormattedError.

    This was a type bug - these errors were never GraphQLError instances
    to begin with, and the GraphQLError class has additional properties that can
    never be correctly rehydrated from a GraphQL result.
    The correct type to use here is GraphQLFormattedError.

    Similarly, please ensure to use the type FormattedExecutionResult
    instead of ExecutionResult - the non-"Formatted" versions of these types
    are for use on the server only, but don't get transported over the network.

  • #​11626 228429a Thanks @​phryneas! - Call nextFetchPolicy with "variables-changed" even if there is a fetchPolicy specified.

    Previously this would only be called when the current fetchPolicy was equal to the fetchPolicy option or the option was not specified. If you use nextFetchPolicy as a function, expect to see this function called more often.

    Due to this bug, this also meant that the fetchPolicy might be reset to the initial fetchPolicy, even when you specified a nextFetchPolicy function. If you previously relied on this behavior, you will need to update your nextFetchPolicy callback function to implement this resetting behavior.

    As an example, if your code looked like the following:

    useQuery(QUERY, {
      nextFetchPolicy(currentFetchPolicy, info) {
        // your logic here
      }
    );

    Update your function to the following to reimplement the resetting behavior:

    useQuery(QUERY, {
      nextFetchPolicy(currentFetchPolicy, info) {
        if (info.reason === 'variables-changed') {
          return info.initialFetchPolicy;
        }
        // your logic here
      }
    );
Minor Changes
Patch Changes

v3.10.8

Compare Source

Patch Changes

v3.10.7

Compare Source

Patch Changes

v3.10.6

Compare Source

Patch Changes

v3.10.5

Compare Source

Patch Changes

v3.10.4

Compare Source

Patch Changes
  • #​11838 8475346 Thanks @​alex-kinokon! - Don’t prompt for DevTools installation for browser extension page

  • #​11839 6481fe1 Thanks @​jerelmiller! - Fix a regression in 3.9.5 where a merge function that returned an incomplete result would not allow the client to refetch in order to fulfill the query.

  • #​11844 86984f2 Thanks @​jerelmiller! - Honor the @nonreactive directive when using cache.watchFragment or the useFragment hook to avoid rerendering when using these directives.

  • #​11824 47ad806 Thanks @​phryneas! - Create branded QueryRef type without exposed properties.

    This change deprecates QueryReference in favor of a QueryRef type that doesn't expose any properties.
    This change also updates preloadQuery to return a new PreloadedQueryRef type, which exposes the toPromise function as it does today. This means that query refs produced by useBackgroundQuery and useLoadableQuery now return QueryRef types that do not have access to a toPromise function, which was never meant to be used in combination with these hooks.

    While we tend to avoid any types of breaking changes in patch releases as this, this change was necessary to support an upcoming version of the React Server Component integration, which needed to omit the toPromise function that would otherwise have broken at runtime.
    Note that this is a TypeScript-only change. At runtime, toPromise is still present on all queryRefs currently created by this package - but we strongly want to discourage you from accessing it in all cases except for the PreloadedQueryRef use case.

    Migration is as simple as replacing all references to QueryReference with QueryRef, so it should be possible to do this with a search & replace in most code bases:

    -import { QueryReference } from '@&#8203;apollo/client'
    +import { QueryRef } from '@&#8203;apollo/client'
    
    - function Component({ queryRef }: { queryRef: QueryReference<TData> }) {
    + function Component({ queryRef }: { queryRef: QueryRef<TData> }) {
      // ...
    }
  • #​11845 4c5c820 Thanks @​jerelmiller! - Remove @nonreactive directives from queries passed to MockLink to ensure they are properly matched.

  • #​11837 dff15b1 Thanks @​jerelmiller! - Fix an issue where a polled query created in React strict mode may not stop polling after the component unmounts while using the cache-and-network fetch policy.

v3.10.3

Compare Source

Patch Changes

v3.10.2

Compare Source

Patch Changes

v3.10.1

Compare Source

Patch Changes

v3.10.0

Compare Source

Minor Changes
Patch Changes

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/@apolloclient-and-related-dependencies branch 4 times, most recently from ee91dbc to 6c0a804 Compare January 20, 2025 12:29
@johnnyomair
Copy link
Collaborator

@manuelblum apollo-link-rest no longer has graphql-anywhere as dependency, so we could probably remove it.

@johnnyomair johnnyomair self-assigned this Jan 20, 2025
@renovate renovate bot force-pushed the renovate/@apolloclient-and-related-dependencies branch 4 times, most recently from c0c7b5d to c474312 Compare January 27, 2025 17:19
@renovate renovate bot force-pushed the renovate/@apolloclient-and-related-dependencies branch 2 times, most recently from b02f439 to dbbe92d Compare February 2, 2025 13:07
@renovate renovate bot force-pushed the renovate/@apolloclient-and-related-dependencies branch from dbbe92d to 7cfced0 Compare February 3, 2025 14:28
Copy link
Contributor Author

renovate bot commented Feb 3, 2025

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@vivid-planet vivid-planet deleted a comment from sonarqubecloud bot Feb 3, 2025
@johnnyomair johnnyomair force-pushed the renovate/@apolloclient-and-related-dependencies branch from 8162ca7 to 2dee644 Compare February 4, 2025 09:21
@johnnyomair johnnyomair force-pushed the renovate/@apolloclient-and-related-dependencies branch from 2dee644 to a553281 Compare February 4, 2025 09:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant