{"id":"src_BtHwIh5_E3zUKDDzcydN-","slug":"apollo-client","name":"Apollo Client","type":"github","url":"https://github.com/apollographql/apollo-client","orgId":"org_ctiL2ZZXIA7tbsKSsxRN9","org":{"slug":"apollo-graphql","name":"Apollo GraphQL"},"isPrimary":false,"metadata":"{\"evaluatedMethod\":\"github\",\"evaluatedAt\":\"2026-04-11T13:26:52.507Z\",\"changelogUrl\":\"https://github.com/apollographql/apollo-client/blob/HEAD/CHANGELOG.md\",\"changelogDetectedAt\":\"2026-04-11T13:27:39.991Z\"}","releaseCount":100,"releasesLast30Days":1,"avgReleasesPerWeek":0.8,"latestVersion":"@apollo/client@4.1.7","latestDate":"2026-04-08T16:26:17.000Z","changelogUrl":"https://github.com/apollographql/apollo-client/blob/HEAD/CHANGELOG.md","hasChangelogFile":true,"lastFetchedAt":"2026-04-19T03:02:19.219Z","trackingSince":"2025-02-14T18:33:49.000Z","releases":[{"id":"rel_ED9EEhj7TUYlVfCo5cNWy","version":"@apollo/client@4.1.7","title":"@apollo/client@4.1.7","summary":"### Patch Changes\n\n-   [#13187](https://github.com/apollographql/apollo-client/pull/13187) [`bb3fd9b`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13187](https://github.com/apollographql/apollo-client/pull/13187) [`bb3fd9b`](https://github.com/apollographql/apollo-client/commit/bb3fd9b3d40a2505add673a6ee89d85b8b4c8984) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix RxJS interop issue with the observable returned by `WebSocketLink`.\n","publishedAt":"2026-04-08T16:26:17.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.7","media":[]},{"id":"rel_BtnW7yUM3qTdnjCx1p1Bz","version":"v3.14.1","title":"v3.14.1","summary":"### Patch Changes\n\n-   [#13168](https://github.com/apollographql/apollo-client/pull/13168) [`6b84ec0`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13168](https://github.com/apollographql/apollo-client/pull/13168) [`6b84ec0`](https://github.com/apollographql/apollo-client/commit/6b84ec02d39a22690ae34113fccf24d59a1142a1) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix issue where muting a deprecation from one entrypoint would not mute the warning when checked in a different entrypoint. This caused some rogue deprecation warnings to appear in the console even though the warnings should have been muted.\n\n-   [#12970](https://github.com/apollographql/apollo-client/pull/12970) [`f91fab5`](https://github.com/apollographql/apollo-client/commit/f91fab505d8c08ce2bd793e8e73e354f8b8e2534) Thanks [@acemir](https://github.com/acemir)! - Add a deprecation message for the `variableMatcher` option in `MockLink`.\n\n-   [#13168](https://github.com/apollographql/apollo-client/pull/13168) [`6b84ec0`](https://github.com/apollographql/apollo-client/commit/6b84ec02d39a22690ae34113fccf24d59a1142a1) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Ensure deprecation warnings are properly silenced in React hooks when globally disabled.\n","publishedAt":"2026-03-12T21:02:58.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/v3.14.1","media":[]},{"id":"rel_Qn_ZZkv9bwpsSGmKgmLpa","version":"@apollo/client@4.2.0-alpha.1","title":"@apollo/client@4.2.0-alpha.1","summary":"### Patch Changes\n\n-   [#13166](https://github.com/apollographql/apollo-client/pull/13166) [`0537d97`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13166](https://github.com/apollographql/apollo-client/pull/13166) [`0537d97`](https://github.com/apollographql/apollo-client/commit/0537d97161a51479141a182d869458912e1b8e1d) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Release changes in 4.1.5 and 4.1.6.\n","publishedAt":"2026-03-05T00:01:32.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.2.0-alpha.1","media":[]},{"id":"rel_cE2LOft4cwHJU9F0wOiYy","version":"@apollo/client@4.1.6","title":"@apollo/client@4.1.6","summary":"### Patch Changes\r\n\r\n-   [#13128](https://github.com/apollographql/apollo-client/pull/13128) [`6c0b8e4`](https://github.com/apollographql/apollo-clien...","content":"### Patch Changes\r\n\r\n-   [#13128](https://github.com/apollographql/apollo-client/pull/13128) [`6c0b8e4`](https://github.com/apollographql/apollo-client/commit/6c0b8e4301609b62ed599340589c978e4f51f020) Thanks [@pavelivanov](https://github.com/pavelivanov)! - Fix `useQuery` hydration mismatch when `ssr: false` and `skip: true` are used together\r\n\r\n    When both options were combined, the server would return `loading: false` (because `useSSRQuery` checks `skip` first), but the client's `getServerSnapshot` was returning `ssrDisabledResult` with `loading: true`, causing a hydration mismatch.\r\n","publishedAt":"2026-02-23T18:28:34.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.6","media":[]},{"id":"rel_334x71ZrxssGvq5d2107i","version":"@apollo/client@4.1.5","title":"@apollo/client@4.1.5","summary":"### Patch Changes\n\n-   [#13155](https://github.com/apollographql/apollo-client/pull/13155) [`3ba1583`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13155](https://github.com/apollographql/apollo-client/pull/13155) [`3ba1583`](https://github.com/apollographql/apollo-client/commit/3ba1583f93c40343501acd9d598ce506537d1c9b) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix an issue where `useQuery` would poll with `pollInterval` when `skip` was initialized to `true`.\n\n-   [#13135](https://github.com/apollographql/apollo-client/pull/13135) [`fd42142`](https://github.com/apollographql/apollo-client/commit/fd42142495d24859a9bc7145a85bc8f8d857ec88) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix issue where `client.query` would apply options from `defaultOptions.watchQuery`.\n","publishedAt":"2026-02-19T17:14:27.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.5","media":[]},{"id":"rel_OfjFP9ZWVKKsXAmvOVPY3","version":"@apollo/client@4.2.0-alpha.0","title":"@apollo/client@4.2.0-alpha.0","summary":"### Minor Changes\n\n-   [#13130](https://github.com/apollographql/apollo-client/pull/13130) [`dd12231`](https://github.com/apollographql/apollo-client/...","content":"### Minor Changes\n\n-   [#13130](https://github.com/apollographql/apollo-client/pull/13130) [`dd12231`](https://github.com/apollographql/apollo-client/commit/dd122316028b55307de4a40335512307c8fa916a) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Improve the accuracy of `client.query` return type to better detect the current `errorPolicy`. The `data` property is no longer nullable when the `errorPolicy` is `none`. This makes it possible to remove the `undefined` checks or optional chaining in most cases.\n","publishedAt":"2026-02-13T17:41:52.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.2.0-alpha.0","media":[]},{"id":"rel_84IfAJaF4CvS3m2AGTFQy","version":"@apollo/client@4.1.4","title":"@apollo/client@4.1.4","summary":"### Patch Changes\n\n-   [#13124](https://github.com/apollographql/apollo-client/pull/13124) [`578081f`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13124](https://github.com/apollographql/apollo-client/pull/13124) [`578081f`](https://github.com/apollographql/apollo-client/commit/578081f2da7f2f54c0dd2711ee4a97530a5c38fc) Thanks [@Re-cool](https://github.com/Re-cool)! - Ensure `PersistedQueryLink` merges `http` and `fetchOptions` context values instead of overwriting them.\n","publishedAt":"2026-02-05T18:18:35.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.4","media":[]},{"id":"rel_GKsSNB0tA8Q_5sw8lRZX-","version":"@apollo/client@4.1.3","title":"@apollo/client@4.1.3","summary":"### Patch Changes\n\n-   [#13111](https://github.com/apollographql/apollo-client/pull/13111) [`bf46fe0`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13111](https://github.com/apollographql/apollo-client/pull/13111) [`bf46fe0`](https://github.com/apollographql/apollo-client/commit/bf46fe019b316ea8a87a05981a89fac5411260b4) Thanks [@RogerHYang](https://github.com/RogerHYang)! - Fix `createFetchMultipartSubscription` to support cancellation via `AbortController`\n\n    Previously, calling `dispose()` or `unsubscribe()` on a subscription created by `createFetchMultipartSubscription` had no effect - the underlying fetch request would continue running until completion. This was because no `AbortController` was created or passed to `fetch()`, and no cleanup function was returned from the Observable.\n","publishedAt":"2026-01-28T18:21:19.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.3","media":[]},{"id":"rel_vfQ9Ra40F6BEHB1_fliv_","version":"@apollo/client@4.1.2","title":"@apollo/client@4.1.2","summary":"### Patch Changes\n\n-   [#13105](https://github.com/apollographql/apollo-client/pull/13105) [`8b62263`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13105](https://github.com/apollographql/apollo-client/pull/13105) [`8b62263`](https://github.com/apollographql/apollo-client/commit/8b62263e19b3442e20fea822de62074cf4f5cb22) Thanks [@phryneas](https://github.com/phryneas)! - `ssrMode`, `ssrForceFetchDelay` or `prioritizeCacheValues` should not override `fetchPolicy: 'cache-only'`, `fetchPolicy: 'no-cache'`, `fetchPolicy: 'standby'`, `skip: true`, or `skipToken` when reading the initial value of an `ObservableQuery`.\n\n-   [#13105](https://github.com/apollographql/apollo-client/pull/13105) [`8b62263`](https://github.com/apollographql/apollo-client/commit/8b62263e19b3442e20fea822de62074cf4f5cb22) Thanks [@phryneas](https://github.com/phryneas)! - Fix `skipToken` in `useQuery` with `prerenderStatic` and related SSR functions.\n\n-   [#13105](https://github.com/apollographql/apollo-client/pull/13105) [`8b62263`](https://github.com/apollographql/apollo-client/commit/8b62263e19b3442e20fea822de62074cf4f5cb22) Thanks [@phryneas](https://github.com/phryneas)! - Avoid fetches with `fetchPolicy: no-cache` in `useQuery` with `prerenderStatic` and related SSR functions.\n","publishedAt":"2026-01-21T09:31:50.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.2","media":[]},{"id":"rel_7yiQTYIyP33CD5nGkbkYf","version":"@apollo/client@4.1.1","title":"@apollo/client@4.1.1","summary":"### Patch Changes\n\n-   [#13103](https://github.com/apollographql/apollo-client/pull/13103) [`dee7dcf`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13103](https://github.com/apollographql/apollo-client/pull/13103) [`dee7dcf`](https://github.com/apollographql/apollo-client/commit/dee7dcff4d4baa26d623d1ecace60be88c684c1a) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Ensure `@client` fields that are children of aliased server fields are resolved correctly.\n","publishedAt":"2026-01-20T17:46:04.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.1","media":[]},{"id":"rel_us0rTimNp5fQDH3-LUcGr","version":"@apollo/client@4.1.0","title":"@apollo/client@4.1.0","summary":"### Minor Changes\n\n-   [#13043](https://github.com/apollographql/apollo-client/pull/13043) [`65e66ca`](https://github.com/apollographql/apollo-client/...","content":"### Minor Changes\n\n-   [#13043](https://github.com/apollographql/apollo-client/pull/13043) [`65e66ca`](https://github.com/apollographql/apollo-client/commit/65e66cafb6828b63d14b64877bbad47af95f66e4) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Support `headers` transport for enhanced client awareness.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`785e223`](https://github.com/apollographql/apollo-client/commit/785e2232b4f7d9e561611cd4f45b8fdd1e44319e) Thanks [@jerelmiller](https://github.com/jerelmiller)! - You can now provide a callback function as the `context` option on the `mutate` function returned by `useMutation`. The callback function is called with the value of the `context` option provided to the `useMutation` hook. This is useful if you'd like to merge the context object provided to the `useMutation` hook with a value provided to the `mutate` function.\n\n    ```ts\n    function MyComponent() {\n      const [mutate, result] = useMutation(MUTATION, {\n        context: { foo: true },\n      });\n\n      async function runMutation() {\n        await mutate({\n          // sends context as { foo: true, bar: true }\n          context: (hookContext) => ({ ...hookContext, bar: true }),\n        });\n      }\n\n      // ...\n    }\n    ```\n\n-   [#12923](https://github.com/apollographql/apollo-client/pull/12923) [`94ea3e3`](https://github.com/apollographql/apollo-client/commit/94ea3e32c82dd767b62a6907be6c3891864633af) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix an issue where deferred payloads that returned arrays with fewer items than the original cached array would retain items from the cached array. This change includes `@stream` arrays where stream arrays replace the cached arrays.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`96b531f`](https://github.com/apollographql/apollo-client/commit/96b531f6b57a158aa2c57da976c6dd22c1a7f4d5) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Don't set the fallback value of a `@client` field to `null` when a `read` function is defined. Instead the `read` function will be called with an `existing` value of `undefined` to allow default arguments to be used to set the returned value.\n\n    When a `read` function is not defined nor is there a defined resolver for the field, warn and set the value to `null` only in that instance.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`45ebb52`](https://github.com/apollographql/apollo-client/commit/45ebb52bcb84b81ce3a066204456c2e20f3d4c98) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add support for `from: null` in `client.watchFragment` and `cache.watchFragment`. When `from` is `null`, the emitted result is:\n\n    ```ts\n    {\n      data: null,\n      dataState: \"complete\",\n      complete: true,\n    }\n    ```\n\n-   [#12926](https://github.com/apollographql/apollo-client/pull/12926) [`2b7f2c1`](https://github.com/apollographql/apollo-client/commit/2b7f2c167fc4a94e06457777f0c57b6dac7b2f2f) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Support the newer incremental delivery format for the `@defer` directive implemented in `graphql@17.0.0-alpha.9`. Import the `GraphQL17Alpha9Handler` to use the newer incremental delivery format with `@defer`.\n\n    ```ts\n    import { GraphQL17Alpha9Handler } from \"@apollo/client/incremental\";\n\n    const client = new ApolloClient({\n      // ...\n      incrementalHandler: new GraphQL17Alpha9Handler(),\n    });\n    ```\n\n    > [!NOTE]\n    > In order to use the `GraphQL17Alpha9Handler`, the GraphQL server MUST implement the newer incremental delivery format. You may see errors or unusual behavior if you use the wrong handler. If you are using Apollo Router, continue to use the `Defer20220824Handler` because Apollo Router does not yet support the newer incremental delivery format.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`45ebb52`](https://github.com/apollographql/apollo-client/commit/45ebb52bcb84b81ce3a066204456c2e20f3d4c98) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add support for arrays with `useFragment`, `useSuspenseFragment`, and `client.watchFragment`. This allows the ability to use a fragment to watch multiple entities in the cache. Passing an array to `from` will return `data` as an array where each array index corresponds to the index in the `from` array.\n\n    ```ts\n    function MyComponent() {\n      const result = useFragment({\n        fragment,\n        from: [item1, item2, item3],\n      });\n\n      // `data` is an array with 3 items\n      console.log(result); // { data: [{...}, {...}, {...}], dataState: \"complete\", complete: true }\n    }\n    ```\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`45ebb52`](https://github.com/apollographql/apollo-client/commit/45ebb52bcb84b81ce3a066204456c2e20f3d4c98) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add a `getCurrentResult` function to the observable returned by `client.watchFragment` and `cache.watchFragment` that returns the current value for the watched fragment.\n\n    ```ts\n    const observable = client.watchFragment({\n      fragment,\n      from: { __typename: \"Item\", id: 1 },\n    });\n\n    console.log(observable.getCurrentResult());\n    // {\n    //   data: {...},\n    //   dataState: \"complete\",\n    //   complete: true,\n    // }\n    ```\n\n-   [#13038](https://github.com/apollographql/apollo-client/pull/13038) [`109efe7`](https://github.com/apollographql/apollo-client/commit/109efe7e4380b579c6a577982bd9a6e8c6a53892) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add the `from` option to `readFragment`, `watchFragment`, and `updateFragment`.\n\n-   [#12918](https://github.com/apollographql/apollo-client/pull/12918) [`2e224b9`](https://github.com/apollographql/apollo-client/commit/2e224b99894432822f926fdfec36bd46dd73b35e) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add support for the `@stream` directive on both the `Defer20220824Handler` and the `GraphQL17Alpha2Handler`.\n\n    > [!NOTE]\n    > The implementations of `@stream` differ in the delivery of incremental results between the different GraphQL spec versions. If you upgrading from the older format to the newer format, expect the timing of some incremental results to change.\n\n-   [#13056](https://github.com/apollographql/apollo-client/pull/13056) [`b224efc`](https://github.com/apollographql/apollo-client/commit/b224efc25515370c68b514405762e68a443e4a4a) Thanks [@jerelmiller](https://github.com/jerelmiller)! - `InMemoryCache` no longer filters out explicitly returned `undefined` items from `read` functions for array fields. This now makes it possible to create `read` functions on array fields that return partial data and trigger a fetch for the full list.\n\n-   [#13058](https://github.com/apollographql/apollo-client/pull/13058) [`121a2cb`](https://github.com/apollographql/apollo-client/commit/121a2cb68820727186ecd74ce1041ef95284682e) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add an `extensions` option to `cache.write`, `cache.writeQuery`, and `client.writeQuery`. This makes `extensions` available in cache `merge` functions which can be accessed with the other merge function options.\n\n    As a result of this change, any `extensions` returned in GraphQL operations are now available in `merge` in the cache writes for these operations.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`96b531f`](https://github.com/apollographql/apollo-client/commit/96b531f6b57a158aa2c57da976c6dd22c1a7f4d5) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add an abstract `resolvesClientField` function to `ApolloCache` that can be used by caches to tell `LocalState` if it can resolve a `@client` field when a local resolver is not defined.\n\n    `LocalState` will emit a warning and set a fallback value of `null` when no local resolver is defined and `resolvesClientField` returns `false`, or isn't defined. Returning `true` from `resolvesClientField` signals that a mechanism in the cache will set the field value. In this case, `LocalState` won't set the field value.\n\n-   [#13078](https://github.com/apollographql/apollo-client/pull/13078) [`bf1e0dc`](https://github.com/apollographql/apollo-client/commit/bf1e0dcb2f6c9b94576dc6d049745f1869cd0043) Thanks [@phryneas](https://github.com/phryneas)! - Use the default stream merge function for `@stream` fields only if stream info is present. This change means that using the older `Defer20220824Handler` will not use the default stream merge function and will instead truncate the streamed array on the first chunk.\n\n### Patch Changes\n\n-   [#12884](https://github.com/apollographql/apollo-client/pull/12884) [`d329790`](https://github.com/apollographql/apollo-client/commit/d32979070381f1897c90fb276e25a0c8375cc29a) Thanks [@phryneas](https://github.com/phryneas)! - Ensure that `PreloadedQueryRef` instances are unsubscribed when garbage collected\n\n-   [#13086](https://github.com/apollographql/apollo-client/pull/13086) [`1a1d408`](https://github.com/apollographql/apollo-client/commit/1a1d4088f549088d4af3ff1f2d08d1c8e9af2a4d) Thanks [@phryneas](https://github.com/phryneas)! - Change the returned value from `null` to `{}` when all fields in a query were skipped.\n\n    This also fixes a bug where `useSuspenseQuery` would suspend indefinitely when all fields were skipped.\n\n-   [#13010](https://github.com/apollographql/apollo-client/pull/13010) [`7627000`](https://github.com/apollographql/apollo-client/commit/76270002254b0c6acb18872a39ab180f9f1e4067) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix an issue where errors parsed from incremental chunks in `ErrorLink` might throw when using the `GraphQL17Alpha9Handler`.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`45ebb52`](https://github.com/apollographql/apollo-client/commit/45ebb52bcb84b81ce3a066204456c2e20f3d4c98) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Deduplicate watches created by `useFragment`, `client.watchFragment`, and `cache.watchFragment` that contain the same fragment, variables, and identifier. This should improve performance in situations where a `useFragment` or a `client.watchFragment` is used to watch the same object in multiple places of an application.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`259ae9b`](https://github.com/apollographql/apollo-client/commit/259ae9bafaa8122996b0a52dd99828b2261087e5) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Allow `FragmentType` not only to be called as `FragmentType<TData>`, but also as `FragmentType<TypedDocumentNode>`.\n\n-   [#12925](https://github.com/apollographql/apollo-client/pull/12925) [`5851800`](https://github.com/apollographql/apollo-client/commit/58518000edebb2a4b75c36ed22e9b67b3a254fa0) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix an issue where calling `fetchMore` with `@defer` or `@stream` would not rerender incremental results as they were streamed.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`9e55188`](https://github.com/apollographql/apollo-client/commit/9e55188adcb4cf4236b14eb552286a4505650a29) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Truncate `@stream` arrays only on last chunk by default.\n\n-   [#13083](https://github.com/apollographql/apollo-client/pull/13083) [`f3c2be1`](https://github.com/apollographql/apollo-client/commit/f3c2be1665d8e2e260a4f55ec803d6e609748390) Thanks [@phryneas](https://github.com/phryneas)! - Expose the `ExtensionsWithStreamInfo` type for `extensions` in `Cache.writeQuery`, `Cache.write` and `Cache.update` so other cache implementations also can correctly access them.\n\n-   [#12923](https://github.com/apollographql/apollo-client/pull/12923) [`94ea3e3`](https://github.com/apollographql/apollo-client/commit/94ea3e32c82dd767b62a6907be6c3891864633af) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Improve the cache data loss warning message when `existing` or `incoming` is an array.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`4631175`](https://github.com/apollographql/apollo-client/commit/46311758f703ec7baa9013a49b897e823fd4edb0) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Ignore top-level `data` values on subsequent chunks in incremental responses.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`2be8de2`](https://github.com/apollographql/apollo-client/commit/2be8de26f1bb68d2d6cd0d286565d47455332b47) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Create mechanism to add experimental features to Apollo Client\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`96b531f`](https://github.com/apollographql/apollo-client/commit/96b531f6b57a158aa2c57da976c6dd22c1a7f4d5) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Ensure `LocalState` doesn't try to read from the cache when using a `no-cache` fetch policy.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`bb8ed7b`](https://github.com/apollographql/apollo-client/commit/bb8ed7b6b7e36e313822e44b230e27031d6fcbd9) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Ensure an error is thrown when `@stream` is detected and an `incrementalDelivery` handler is not configured.\n\n-   [#13053](https://github.com/apollographql/apollo-client/pull/13053) [`23ca0ba`](https://github.com/apollographql/apollo-client/commit/23ca0ba895473b397805e6bcc70e0fcf987547c5) Thanks [@phryneas](https://github.com/phryneas)! - Use memoized observable mapping when using `watchFragment`, `useFragment` or `useSuspenseFragment`.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`44706a2`](https://github.com/apollographql/apollo-client/commit/44706a2e7ae2c977fa917214a1ff5e5fe4a9b3a7) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add helper type `QueryRef.ForQuery<TypedDocumentNode>`\n\n-   [#13082](https://github.com/apollographql/apollo-client/pull/13082) [`c257418`](https://github.com/apollographql/apollo-client/commit/c2574181f6b0d9ae059dfa3822a7842ec5f8ff1f) Thanks [@phryneas](https://github.com/phryneas)! - Pass `streamInfo` through result extensions as a `WeakRef`.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`4631175`](https://github.com/apollographql/apollo-client/commit/46311758f703ec7baa9013a49b897e823fd4edb0) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix the `Defer20220824Handler.SubsequentResult` type to match the `FormattedSubsequentIncrementalExecutionResult` type in `graphql@17.0.0-alpha.2`.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`96b531f`](https://github.com/apollographql/apollo-client/commit/96b531f6b57a158aa2c57da976c6dd22c1a7f4d5) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Warn when using a `no-cache` fetch policy without a local resolver defined. `no-cache` queries do not read or write to the cache which meant `no-cache` queries are silently incomplete when the `@client` field value was handled by a cache `read` function.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`5776ea0`](https://github.com/apollographql/apollo-client/commit/5776ea0db1f082663dcf470c3b22b9182a3eea28) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Update the `accept` header used with the `GraphQL17Alpha9Handler` to `multipart/mixed;incrementalSpec=v0.2` to ensure the newest incremental delivery format is requested.\n\n-   [#12927](https://github.com/apollographql/apollo-client/pull/12927) [`45ebb52`](https://github.com/apollographql/apollo-client/commit/45ebb52bcb84b81ce3a066204456c2e20f3d4c98) Thanks [@jerelmiller](https://github.com/jerelmiller)! - `DeepPartial<Array<TData>>` now returns `Array<DeepPartial<TData>>` instead of `Array<DeepPartial<TData | undefined>>`.\n\n-   [#13071](https://github.com/apollographql/apollo-client/pull/13071) [`99ffe9a`](https://github.com/apollographql/apollo-client/commit/99ffe9a8ede1683d902101c5371807a8442fcdcb) Thanks [@phryneas](https://github.com/phryneas)! - `prerenderStatic`: Expose return value of `renderFunction` to userland, fix `aborted` property.\n\n    This enables usage of `resumeAndPrerender` with React 19.2.\n\n-   [#13026](https://github.com/apollographql/apollo-client/pull/13026) [`05eee67`](https://github.com/apollographql/apollo-client/commit/05eee67e91b480252923879987534e81d2866aba) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Reduce the number of observables created by `watchFragment` by reusing existing observables as much as possible. This should improve performance when watching the same item in the cache multiple times after a cache update occurs.\n\n-   [#13010](https://github.com/apollographql/apollo-client/pull/13010) [`7627000`](https://github.com/apollographql/apollo-client/commit/76270002254b0c6acb18872a39ab180f9f1e4067) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Handle `@stream` payloads that send multiple items in the same chunk when using the `Defer20220824Handler`.\n\n-   [#13010](https://github.com/apollographql/apollo-client/pull/13010) [`7627000`](https://github.com/apollographql/apollo-client/commit/76270002254b0c6acb18872a39ab180f9f1e4067) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Handle an edge case with the `Defer20220824Handler` where an error for a `@stream` item that bubbles to the `@stream` boundary (such as an item returning `null` for a non-null array item) would write items from future chunks to the wrong array index. In these cases, the `@stream` field is no longer processed and future updates to the field are ignored. This prevents runtime errors that TypeScript would otherwise not be able to catch.\n\n-   [#13081](https://github.com/apollographql/apollo-client/pull/13081) [`1e06ad7`](https://github.com/apollographql/apollo-client/commit/1e06ad7399716139fcfbec7423697eafc5750f5e) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Avoid calling `merge` functions more than once for the same incremental chunk.\n","publishedAt":"2026-01-15T23:19:53.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.0","media":[]},{"id":"rel_KZCcRMsQXbfW3sNspEXyJ","version":"@apollo/client@4.0.13","title":"@apollo/client@4.0.13","summary":"### Patch Changes\n\n-   [#13094](https://github.com/apollographql/apollo-client/pull/13094) [`9cbe2c2`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13094](https://github.com/apollographql/apollo-client/pull/13094) [`9cbe2c2`](https://github.com/apollographql/apollo-client/commit/9cbe2c2dd2282ac861327d3c394578db7706df05) Thanks [@phryneas](https://github.com/phryneas)! - Ensure that `compact` and `mergeOptions` preserve symbol keys.\n\n    This fixes an issue where the change introduced in 4.0.11 via #13049 would not\n    be applied if `defaultOptions` for `watchQuery` were declared.\n\n    Please note that `compact` and `mergeOptions` are considered internal utilities\n    and they might have similar behavior changes in future releases.\n    Do not use them in your application code - a change like this is not considered\n    breaking and will not be announced as such.\n","publishedAt":"2026-01-13T20:47:12.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.0.13","media":[]},{"id":"rel_0K4CeFGHjflOgwt1HY_pY","version":"@apollo/client@4.0.12","title":"@apollo/client@4.0.12","summary":"### Patch Changes\n\n-   [#13077](https://github.com/apollographql/apollo-client/pull/13077) [`f322460`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13077](https://github.com/apollographql/apollo-client/pull/13077) [`f322460`](https://github.com/apollographql/apollo-client/commit/f322460fe9baae82c0980dd082c1b6b4956a4951) Thanks [@phryneas](https://github.com/phryneas)! - Fix a potential memory leak where Trie nodes would remain in memory too long.\n","publishedAt":"2026-01-12T09:17:27.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.0.12","media":[]},{"id":"rel_OYZmuPnvItW7wPsV5i_8Z","version":"@apollo/client@4.1.0-rc.1","title":"@apollo/client@4.1.0-rc.1","summary":"### Patch Changes\n\n-   [#13086](https://github.com/apollographql/apollo-client/pull/13086) [`1a1d408`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13086](https://github.com/apollographql/apollo-client/pull/13086) [`1a1d408`](https://github.com/apollographql/apollo-client/commit/1a1d4088f549088d4af3ff1f2d08d1c8e9af2a4d) Thanks [@phryneas](https://github.com/phryneas)! - Change the returned value from `null` to `{}` when all fields in a query were skipped.\n\n    This also fixes a bug where `useSuspenseQuery` would suspend indefinitely when all fields were skipped.\n\n-   [#13071](https://github.com/apollographql/apollo-client/pull/13071) [`99ffe9a`](https://github.com/apollographql/apollo-client/commit/99ffe9a8ede1683d902101c5371807a8442fcdcb) Thanks [@phryneas](https://github.com/phryneas)! - `prerenderStatic`: Expose return value of `renderFunction` to userland, fix `aborted` property.\n\n    This enables usage of `resumeAndPrerender` with React 19.2.\n","publishedAt":"2026-01-09T18:55:07.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.0-rc.1","media":[]},{"id":"rel_s36LGouMi8PWWjGCHHkZg","version":"@apollo/client@4.1.0-rc.0","title":"@apollo/client@4.1.0-rc.0","summary":"### Minor Changes\n\n-   [#13078](https://github.com/apollographql/apollo-client/pull/13078) [`bf1e0dc`](https://github.com/apollographql/apollo-client/...","content":"### Minor Changes\n\n-   [#13078](https://github.com/apollographql/apollo-client/pull/13078) [`bf1e0dc`](https://github.com/apollographql/apollo-client/commit/bf1e0dcb2f6c9b94576dc6d049745f1869cd0043) Thanks [@phryneas](https://github.com/phryneas)! - Use the default stream merge function for `@stream` fields only if stream info is present. This change means that using the older `Defer20220824Handler` will not use the default stream merge function and will instead truncate the streamed array on the first chunk.\n\n### Patch Changes\n\n-   [#13083](https://github.com/apollographql/apollo-client/pull/13083) [`f3c2be1`](https://github.com/apollographql/apollo-client/commit/f3c2be1665d8e2e260a4f55ec803d6e609748390) Thanks [@phryneas](https://github.com/phryneas)! - Expose the `ExtensionsWithStreamInfo` type for `extensions` in `Cache.writeQuery`, `Cache.write` and `Cache.update` so other cache implementations also can correctly access them.\n\n-   [#13082](https://github.com/apollographql/apollo-client/pull/13082) [`c257418`](https://github.com/apollographql/apollo-client/commit/c2574181f6b0d9ae059dfa3822a7842ec5f8ff1f) Thanks [@phryneas](https://github.com/phryneas)! - Pass `streamInfo` through result extensions as a `WeakRef`.\n\n-   [#13081](https://github.com/apollographql/apollo-client/pull/13081) [`1e06ad7`](https://github.com/apollographql/apollo-client/commit/1e06ad7399716139fcfbec7423697eafc5750f5e) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Avoid calling `merge` functions more than once for the same incremental chunk.\n","publishedAt":"2026-01-07T17:46:40.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.0-rc.0","media":[]},{"id":"rel_syVCzMZBVi_TdV2Vru7hO","version":"@apollo/client@4.0.12-beta.0","title":"@apollo/client@4.0.12-beta.0","summary":"### Patch Changes\n\n-   [#12884](https://github.com/apollographql/apollo-client/pull/12884) [`d329790`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#12884](https://github.com/apollographql/apollo-client/pull/12884) [`d329790`](https://github.com/apollographql/apollo-client/commit/d32979070381f1897c90fb276e25a0c8375cc29a) Thanks [@phryneas](https://github.com/phryneas)! - Ensure that `PreloadedQueryRef` instances are unsubscribed when garbage collected\n\n-   [#13069](https://github.com/apollographql/apollo-client/pull/13069) [`9cad04a`](https://github.com/apollographql/apollo-client/commit/9cad04a4228a5059ea330ac9d284407a363fc10d) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Truncate @stream arrays only on last chunk by default\n","publishedAt":"2025-12-23T13:10:03.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.0.12-beta.0","media":[]},{"id":"rel_IKqpE6EJB7xgrbAse0x5D","version":"@apollo/client@4.1.0-alpha.9","title":"@apollo/client@4.1.0-alpha.9","summary":"### Minor Changes\n\n-   [#13056](https://github.com/apollographql/apollo-client/pull/13056) [`b224efc`](https://github.com/apollographql/apollo-client/...","content":"### Minor Changes\n\n-   [#13056](https://github.com/apollographql/apollo-client/pull/13056) [`b224efc`](https://github.com/apollographql/apollo-client/commit/b224efc25515370c68b514405762e68a443e4a4a) Thanks [@jerelmiller](https://github.com/jerelmiller)! - `InMemoryCache` no longer filters out explicitly returned `undefined` items from `read` functions for array fields. This now makes it possible to create `read` functions on array fields that return partial data and trigger a fetch for the full list.\n\n-   [#13058](https://github.com/apollographql/apollo-client/pull/13058) [`121a2cb`](https://github.com/apollographql/apollo-client/commit/121a2cb68820727186ecd74ce1041ef95284682e) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add an `extensions` option to `cache.write`, `cache.writeQuery`, and `client.writeQuery`. This makes `extensions` available in cache `merge` functions which can be accessed with the other merge function options.\n\n    As a result of this change, any `extensions` returned in GraphQL operations are now available in `merge` in the cache writes for these operations.\n\n### Patch Changes\n\n-   [#13053](https://github.com/apollographql/apollo-client/pull/13053) [`23ca0ba`](https://github.com/apollographql/apollo-client/commit/23ca0ba895473b397805e6bcc70e0fcf987547c5) Thanks [@phryneas](https://github.com/phryneas)! - Use memoized observable mapping when using `watchFragment`, `useFragment` or `useSuspenseFragment`.\n","publishedAt":"2025-12-18T19:13:48.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.0-alpha.9","media":[]},{"id":"rel_cbBEhVuNrBb9LKSTCcS9i","version":"@apollo/client@4.0.11","title":"@apollo/client@4.0.11","summary":"### Patch Changes\n\n-   [#13050](https://github.com/apollographql/apollo-client/pull/13050) [`8020829`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13050](https://github.com/apollographql/apollo-client/pull/13050) [`8020829`](https://github.com/apollographql/apollo-client/commit/8020829d8a3bdb3219a37e8d1f7b89179f721037) Thanks [@phryneas](https://github.com/phryneas)! - Replace usage of `findLast` with more backwards-compatible methods.\n\n-   [#13049](https://github.com/apollographql/apollo-client/pull/13049) [`05638de`](https://github.com/apollographql/apollo-client/commit/05638deaf598c5bf5d03b82d7deaf57468546229) Thanks [@phryneas](https://github.com/phryneas)! - Fixes an issue where queries starting with `skipToken` or lazy queries from `useLazyQuery` were included in `client.refetchQueries()` before they had been executed for the first time. While generally queries with a `standby` `fetchPolicy` should be included in refetch, these queries never had `variables` passed in, so they should be excluded until they have run once and received their actual variables.\n\n    These queries are now properly excluded from refetch operations until after their initial execution.\n\n    This change adds a new hidden option to `client.watchQuery`, `[variablesUnknownSymbol]`, which may be set `true` for queries starting with a `fetchPolicy` of `standby`. It will only be applied when creating the `ObservableQuery` instance and cannot be changed later. This flag indicates that the query's variables are not yet known, and thus it should be excluded from refetch operations until they are.\n    **This option is not meant for everyday use and is intended for framework integrations only.**\n","publishedAt":"2025-12-16T17:00:17.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.0.11","media":[]},{"id":"rel_F_y78tQ3_oQJREERmCO89","version":"@apollo/client@4.0.10","title":"@apollo/client@4.0.10","summary":"### Patch Changes\n\n-   [#13045](https://github.com/apollographql/apollo-client/pull/13045) [`af4acdc`](https://github.com/apollographql/apollo-client/...","content":"### Patch Changes\n\n-   [#13045](https://github.com/apollographql/apollo-client/pull/13045) [`af4acdc`](https://github.com/apollographql/apollo-client/commit/af4acdc88bd3bac0d697ab300816241e4065842c) Thanks [@phryneas](https://github.com/phryneas)! - Fix memory leak #13036\n","publishedAt":"2025-12-10T08:08:29.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.0.10","media":[]},{"id":"rel_b8oQiNdAtQoHCesla-Ogu","version":"@apollo/client@4.1.0-alpha.8","title":"@apollo/client@4.1.0-alpha.8","summary":"### Minor Changes\n\n-   [#13043](https://github.com/apollographql/apollo-client/pull/13043) [`65e66ca`](https://github.com/apollographql/apollo-client/...","content":"### Minor Changes\n\n-   [#13043](https://github.com/apollographql/apollo-client/pull/13043) [`65e66ca`](https://github.com/apollographql/apollo-client/commit/65e66cafb6828b63d14b64877bbad47af95f66e4) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Support `headers` transport for enhanced client awareness.\n","publishedAt":"2025-12-05T21:02:15.000Z","url":"https://github.com/apollographql/apollo-client/releases/tag/%40apollo/client%404.1.0-alpha.8","media":[]}],"pagination":{"page":1,"pageSize":20,"totalPages":5,"totalItems":100},"summaries":{"rolling":null,"monthly":[]}}