Skip to content

Conversation

svc-secops
Copy link
Contributor

@svc-secops svc-secops commented May 3, 2025

This PR contains the following updates:

Package Change Age Adoption Passing Confidence Type Update
@apollo/client (source) 3.12.3 -> 3.14.0 age adoption passing confidence dependencies minor
@apollo/client-devtools-vscode 4.20.1 -> 4.21.5 age adoption passing confidence dependencies minor
@apollo/subgraph (source) 2.9.3 -> 2.11.2 age adoption passing confidence dependencies minor
ghcr.io/apollographql/router v2.2.0 -> v2.7.0 age adoption passing confidence final minor

Release Notes

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

v3.14.0

Compare Source

Minor Changes
Patch Changes

v3.13.9

Compare Source

Patch Changes
  • #​12804 32c9aa9 Thanks @​phryneas! - Fix a possible race condition on queries that were reobserved before they were subscribed to the first time.

v3.13.8

Compare Source

Patch Changes

v3.13.7

Compare Source

Patch Changes

v3.13.6

Compare Source

Patch Changes

v3.13.5

Compare Source

Patch Changes
  • #​12461 12c8d06 Thanks @​jerelmiller! - Fix an issue where a cache-first query would return the result for previous variables when a cache update is issued after simultaneously changing variables and skipping the query.

v3.13.4

Compare Source

Patch Changes

v3.13.3

Compare Source

Patch Changes
  • #​12362 f6d387c Thanks @​jerelmiller! - Fixes an issue where calling observableQuery.getCurrentResult() when the errorPolicy was set to all would return the networkStatus as NetworkStatus.ready when there were errors returned in the result. This has been corrected to report NetworkStatus.error.

    This bug also affected the useQuery and useLazyQuery hooks and may affect you if you check for networkStatus in your component.

v3.13.2

Compare Source

Patch Changes
  • #​12409 6aa2f3e Thanks @​phryneas! - To mitigate problems when Apollo Client ends up more than once in the bundle, some unique symbols were converted into Symbol.for calls.

  • #​12392 644bb26 Thanks @​Joja81! - Fixes an issue where the DeepOmit type would turn optional properties into required properties. This should only affect you if you were using the omitDeep or stripTypename utilities exported by Apollo Client.

  • #​12404 4332b88 Thanks @​jerelmiller! - Show NaN rather than converting to null in debug messages from MockLink for unmatched variables values.

v3.13.1

Compare Source

Patch Changes

v3.13.0

Compare Source

Minor Changes
  • #​12066 c01da5d Thanks @​jerelmiller! - Adds a new useSuspenseFragment hook.

    useSuspenseFragment suspends until data is complete. It is a drop-in replacement for useFragment when you prefer to use Suspense to control the loading state of a fragment. See the documentation for more details.

  • #​12174 ba5cc33 Thanks @​jerelmiller! - Ensure errors thrown in the onCompleted callback from useMutation don't call onError.

  • #​12340 716d02e Thanks @​phryneas! - Deprecate the onCompleted and onError callbacks of useQuery and useLazyQuery.
    For more context, please see the related issue on GitHub.

  • #​12276 670f112 Thanks @​Cellule! - Provide a more type-safe option for the previous data value passed to observableQuery.updateQuery. Using it could result in crashes at runtime as this callback could be called with partial data even though its type reported the value as a complete result.

    The updateQuery callback function is now called with a new type-safe previousData property and a new complete property in the 2nd argument that determines whether previousData is a complete or partial result.

    As a result of this change, it is recommended to use the previousData property passed to the 2nd argument of the callback rather than using the previous data value from the first argument since that value is not type-safe. The first argument is now deprecated and will be removed in a future version of Apollo Client.

    observableQuery.updateQuery(
      (unsafePreviousData, { previousData, complete }) => {
        previousData;
        // ^? TData | DeepPartial<TData> | undefined
    
        if (complete) {
          previousData;
          // ^? TData
        } else {
          previousData;
          // ^? DeepPartial<TData> | undefined
        }
      }
    );
  • #​12174 ba5cc33 Thanks @​jerelmiller! - Reject the mutation promise if errors are thrown in the onCompleted callback of useMutation.

Patch Changes
  • #​12276 670f112 Thanks @​Cellule! - Fix the return type of the updateQuery function to allow for undefined. updateQuery had the ability to bail out of the update by returning a falsey value, but the return type enforced a query value.

    observableQuery.updateQuery(
      (unsafePreviousData, { previousData, complete }) => {
        if (!complete) {
          // Bail out of the update by returning early
          return;
        }
    
        // ...
      }
    );
  • #​12296 2422df2 Thanks @​Cellule! - Deprecate option ignoreResults in useMutation.
    Once this option is removed, existing code still using it might see increase in re-renders.
    If you don't want to synchronize your component state with the mutation, please use useApolloClient to get your ApolloClient instance and call client.mutate directly.

  • #​12338 67c16c9 Thanks @​phryneas! - In case of a multipart response (e.g. with @defer), query deduplication will
    now keep going until the final chunk has been received.

  • #​12276 670f112 Thanks @​Cellule! - Fix the type of the variables property passed as the 2nd argument to the subscribeToMore callback. This was previously reported as the variables type for the subscription itself, but is now properly typed as the query variables.

v3.12.11

Compare Source

Patch Changes
  • #​12351 3da908b Thanks @​jerelmiller! - Fixes an issue where the wrong networkStatus and loading value was emitted from observableQuery when calling fetchMore with a no-cache fetch policy. The networkStatus now properly reports as ready and loading as false after the result is returned.

  • #​12354 a24ef94 Thanks @​phryneas! - Fix missing main.d.cts file

v3.12.10

Compare Source

Patch Changes

v3.12.9

Compare Source

Patch Changes

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.
apollographql/apollo-client-devtools (@​apollo/client-devtools-vscode)

v4.21.5

Compare Source

v4.21.4

Compare Source

Patch Changes

v4.21.3

Compare Source

Patch Changes

v4.21.2

Compare Source

Patch Changes
  • #​1713 0302538 Thanks @​braineo! - fix calling client.stop twice causing app crashing by checking if handler exist before sending tab command

v4.21.1

Compare Source

Patch Changes

v4.21.0

Compare Source

Minor Changes

v4.20.2

Compare Source

Patch Changes
apollographql/federation (@​apollo/subgraph)

v2.11.2

Compare Source

Patch Changes

v2.11.1

Compare Source

Patch Changes

v2.11.0

Compare Source

Minor Changes
  • Adds connect spec v0.2, available for use with Apollo Router 2.3.0 or greater. (#​3262)
Patch Changes

v2.10.2

Compare Source

Patch Changes

v2.10.1

Compare Source

Patch Changes

v2.10.0

Compare Source

Patch Changes
apollographql/router (ghcr.io/apollographql/router)

v2.7.0

Compare Source

🚀 Features

Add ResponseErrors selector to router response (PR #​7882)

The ResponseErrors selector in telemetry configurations captures router response errors, enabling you to log errors encountered at the router service layer. This selector enhances logging by allowing you to log only router errors instead of the entire router response body, reducing noise in your telemetry data.

telemetry:
  instrumentation:
    events:
      router:
        router.error:
          attributes:
            "my_attribute":
              response_errors: "$.[0]"

### Examples: "$.[0].message", "$.[0].locations", "$.[0].extensions", etc.

By @​Aguilarjaf in https://github.com/apollographql/router/pull/7882

🐛 Fixes

_entities Apollo error metrics missing service attribute (PR #​8153)

The error counting feature introduced in v2.5.0 caused _entities errors from subgraph fetches to no longer report a service (subgraph or connector) attribute. This incorrectly categorized these errors as originating from the router instead of their actual service in Apollo Studio.

The service attribute is now correctly included for _entities errors.

By @​rregitsky in https://github.com/apollographql/router/pull/8153

WebSocket connection cleanup for subscriptions (PR #​8104)

A regression introduced in v2.5.0 caused WebSocket connections to subgraphs to remain open after all client subscriptions ended. This led to unnecessary resource usage and connections not being cleaned up until a new event was received.

The router now correctly closes WebSocket connections to subgraphs when clients disconnect from subscription streams.

By @​bnjjj in https://github.com/apollographql/router/pull/8104

OTLP metrics Up/Down counter drift (PR #​8174)

When using OTLP metrics export with delta temporality configured, UpDown counters could exhibit drift issues where counter values became inaccurate over time. This occurred because UpDown counters were incorrectly exported as deltas instead of cumulative values.

UpDown counters now export as aggregate values according to the OpenTelemetry specification.

By @​BrynCooke in https://github.com/apollographql/router/pull/8174

WebSocket subscription connection_error message handling (Issue #​6138)

The router now correctly processes connection_error messages from subgraphs that don't include an id field. Previously, these messages were ignored because the router incorrectly required an id field. According to the graphql-transport-ws specification, connection_error messages only require a payload field.

The id field is now optional for connection_error messages, allowing underlying error messages to propagate to clients when connection failures occur.

By @​jeffutter in https://github.com/apollographql/router/pull/8189

Add Helm chart support for deployment annotations (PR #​8164)

The Helm chart now supports customizing annotations on the deployment itself using the deploymentAnnotations value. Previously, you could only customize pod annotations with podAnnotations.

By @​glasser in https://github.com/apollographql/router/pull/8164

Uncommon query planning error with interface object types (PR #​8109)

An uncommon query planning error has been resolved: "Cannot add selection of field X to selection set of parent type Y that is potentially an interface object type at runtime". The router now handles __typename selections from interface object types correctly, as these selections are benign even when unnecessary.

By @​duckki in https://github.com/apollographql/router/pull/8109

Connection shutdown race condition during hot reload (PR #​8169)

A race condition during hot reload that occasionally left connections in an active state instead of terminating has been fixed. This issue could cause out-of-memory errors over time as multiple pipelines remained active.

Connections that are opening during shutdown now immediately terminate.

By @​BrynCooke in https://github.com/apollographql/router/pull/8169

Persisted Query usage reporting for safelisted operation body requests (PR #​8168)

Persisted Query metrics now include operations requested by safelisted operation body. Previously, the router only recorded metrics for operations requested by ID.

By @​bonnici in https://github.com/apollographql/router/pull/8168

📃 Configuration

Separate Apollo telemetry batch processor configurations (PR #​8258)

Apollo telemetry configuration now allows separate fine-tuning for metrics and traces batch processors. The configuration has changed from:

telemetry:
  apollo:
    batch_processor:
      scheduled_delay: 5s
      max_export_timeout: 30s
      max_export_batch_size: 512
      max_concurrent_exports: 1
      max_queue_size: 2048

To:

telemetry:
  apollo:
    tracing:

### Config for Apollo OTLP and  Apollo usage report traces
      batch_processor:
        max_export_timeout: 130s
        scheduled_delay: 5s
        max_export_batch_size: 512
        max_concurrent_exports: 1
        max_queue_size: 2048
        
    metrics:

### Config for Apollo OTLP metrics. 
      otlp:
        batch_processor:
          scheduled_delay: 13s # This does not apply config gauge metrics, which have a non-configurable scheduled_delay.
          max_export_timeout: 30s

### Config for Apollo usage report metrics.
      usage_reports:
        batch_processor:
          max_export_timeout: 30s
          scheduled_delay: 5s
          max_queue_size: 2048

The old telemetry.apollo.batch_processor configuration will be used if you don't specify these new values. The router displays the configuration being used in an info-level log message at startup.

By @​bonnici in https://github.com/apollographql/router/pull/8258

Promote Subgraph Insights metrics flag to preview (PR #​8200)

The subgraph_metrics configuration flag that powers Apollo Studio's Subgraph Insights feature has been promoted from experimental to preview. The flag name has been updated from experimental_subgraph_metrics to preview_subgraph_metrics:

telemetry:
  apollo:
    preview_subgraph_metrics: true

By @​rregitsky in https://github.com/apollographql/router/pull/8200

v2.6.2

Compare Source

🐛 Fixes

Connection shutdown sometimes fails during hot-reload (PR #​8169)

A race condition in connection shutdown during a hot reload event occasionally left some connections in an active state instead of entering terminating state. This could cause out-of-memory errors over time as multiple pipelines remained active.

Connections that open during shutdown now immediately terminate.

By @​BrynCooke in https://github.com/apollographql/router/pull/8169

v2.6.1

Compare Source

🐛 Fixes

ARM64 Docker images no longer contain AMD64 binary

The ARM64 Docker images shipped for v2.6.0 incorrectly contained AMD64/x86 binaries due to a CI build pipeline bug. This has been remedied in v2.6.1.

_entities Apollo Error Metrics Missing Service Attribute (PR #​8153)

The error counting feature introduced in v2.5.0 (PR #​7712) caused a bug where _entities errors from subgraph fetches no longer included a service (subgraph or connector) attribute. This incorrectly categorized these errors as originating from the router instead of their actual service in the Apollo Studio UI.

This fix restores the missing service attribute.

By @​rregitsky in https://github.com/apollographql/router/pull/8153

Deduplication and WebSocket stream termination (PR #​8104)

Fixed a regression introduced in v2.5.0, where WebSocket connections to subgraphs would remain open after all client subscriptions were closed. This could lead to unnecessary resource usage and connections not being properly cleaned up until a new event was received.

Previously, when clients disconnected from subscription streams, the router would correctly close client connections but would leave the underlying WebSocket connection to the subgraph open indefinitely in some cases.

By @​bnjjj in https://github.com/apollographql/router/pull/8104

Make the id field optional for WebSocket subscription connection_error messages (Issue #​6138)

Fixed a Subscriptions over WebSocket issue where connection_error messages from subgraphs would be swallowed by the router because they incorrectly required an id field. According to the graphql-transport-ws specification (one of two transport specifications we provide support for), connection_error messages only require a payload field, not an id field. The id field in is now optional which will allow the underlying error message to propagate to clients when underlying connection failures occur.

By @​jeffutter in https://github.com/apollographql/router/pull/8189

Enable annotations on deployments via Helm Chart (PR #​8164)

The Helm chart previously did not allow customization of annotations on the deployment itself (as opposed to the pods within it, which is done with podAnnotations); this can now be done with the deploymentAnnotations value.

By @​glasser in https://github.com/apollographql/router/pull/8164

v2.6.0

Compare Source

[!IMPORTANT]
Due to a CI bug, our ARM64 Docker images published for v2.6.0 incorrectly contained AMD64/x86 artifacts. This is fixed in v2.6.1.

🚀 Features

[Subgraph Insights] Experimental Apollo Subgraph Fetch Histogram (PR #​8013, PR #​8045)

This change adds a new, experimental histogram to capture subgraph fetch duration for GraphOS. This will
eventually be used to power subgraph-level insights in Apollo Studio.

This can be toggled on using a new boolean config flag:

telemetry:
  apollo:
    experimental_subgraph_metrics: true

The new instrument is only sent to GraphOS and is not available in 3rd-party OTel export targets. It is not currently
customizable. Users requiring a customizable alternative can use the existing http.client.request.duration
instrument, which measures the same value.

By @​rregitsky in https://github.com/apollographql/router/pull/8013 and https://github.com/apollographql/router/pull/8045

Redis cache metrics (PR #​7920)

The router now provides Redis cache monitoring with new metrics that help track performance, errors, and resource usage.

Connection and performance metrics:

  • apollo.router.cache.redis.connections: Number of active Redis connections
  • apollo.router.cache.redis.command_queue_length: Commands waiting to be sent to Redis, indicates if Redis is keeping up with demand
  • apollo.router.cache.redis.commands_executed: Total number of Redis commands executed
  • apollo.router.cache.redis.redelivery_count: Commands retried due to connection issues
  • apollo.router.cache.redis.errors: Redis errors by type, to help diagnose authentication, network, and configuration problems

Experimental performance metrics:

  • experimental.apollo.router.cache.redis.network_latency_avg: Average network latency to Redis
  • experimental.apollo.router.cache.redis.latency_avg: Average Redis command execution time
  • experimental.apollo.router.cache.redis.request_size_avg: Average request payload size
  • experimental.apollo.router.cache.redis.response_size_avg: Average response payload size

[!NOTE]
The experimental metrics may change in future versions as we improve the underlying Redis client integration.

You can configure how often metrics are collected using the metrics_interval setting:

supergraph:
  query_planning:
    cache:
      redis:
        urls: ["redis://localhost:6379"]
        ttl: "60s"
        metrics_interval: "1s"  # Collect metrics every second (default: 1s)

By @​BrynCooke in https://github.com/apollographql/router/pull/7920

Granular license enforcement (PR #​7917)

The router license functionality now allows granular specification of features enabled to support current and future pricing plans.

By @​DMallare in https://github.com/apollographql/router/pull/7917

Additional Connector Custom Instrument Selectors (PR #​8045)

This adds new custom instrument selectors for Connectors and enhances some existing selectors. The new selectors are:

  • supergraph_operation_name
    • The supergraph's operation name
  • supergraph_operation_kind
    • The supergraph's operation type (e.g. query, mutation, subscription)
  • request_context
    • Takes the value of the given key on the request context
  • connector_on_response_error
    • Returns true when the response does not meet the is_successful condition. Or, if that condition is not set,
      returns true when the response has a non-200 status code

These selectors were modified to add additional functionality:

  • connector_request_mapping_problems
    • Adds a new boolean variant that will return true when a mapping problem exists on the request
  • connector_response_mapping_problems
    • Adds a new boolean variant that will return true when a mapping problem exists on the response

By @​rregitsky in https://github.com/apollographql/router/pull/8045

Enable jemalloc on MacOS (PR #​8046)

This PR enables the jemalloc allocator on MacOS by default, making it easier to do memory profiling. Previously, this was only done for Linux.

By @​Velfi in https://github.com/apollographql/router/pull/8046

🐛 Fixes

Entity caching: fix inconsistency in cache-control header handling (PR #​7987)

When the Subgraph Entity Caching feature is in use, it determines the Cache-Control HTTP response header sent to supergraph clients based on those received from subgraph servers.
In this process, Apollo Router only emits the max-age directive and not s-maxage.
This PR fixes a bug where, for a query that involved a single subgraph fetch that was not already cached, the subgraph response’s Cache-Control header would be forwarded as-is.
Instead, it now goes through the same algorithm as other cases.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - "after 8am and before 4pm on tuesday" in timezone America/Los_Angeles.

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

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


This PR has been generated by Renovate Bot.

Copy link

changeset-bot bot commented May 3, 2025

⚠️ No Changeset found

Latest commit: b75a9a0

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link
Contributor

github-actions bot commented May 3, 2025

You can download the latest build of the extension for this PR here:
vscode-apollo-0.0.0-build-1758717942.pr-289.commit-d989609.zip.

To install the extension, download the file, unzip it and install it in VS Code by selecting "Install from VSIX..." in the Extensions view.

Alternatively, run

code --install-extension vscode-apollo-0.0.0-build-1758717942.pr-289.commit-d989609.vsix --force

from the command line.

For older builds, please see the edit history of this comment.

@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch from e2af702 to 808ade3 Compare May 8, 2025 13:46
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch from 808ade3 to 8496bf2 Compare June 7, 2025 11:05
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch 2 times, most recently from 4110dca to 7398af0 Compare June 29, 2025 11:58
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch from 7398af0 to 274ceb9 Compare July 16, 2025 11:34
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch 2 times, most recently from 1df153b to 5727d61 Compare August 1, 2025 14:57
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch from 5727d61 to 8ca14f6 Compare August 12, 2025 15:33
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch 3 times, most recently from ce1430e to f52debb Compare August 28, 2025 11:27
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch 2 times, most recently from 2033424 to d45a5e8 Compare September 6, 2025 11:26
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch 3 times, most recently from b0f976f to b5c1a37 Compare September 16, 2025 12:30
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch 2 times, most recently from 6a29a66 to 0274d81 Compare September 23, 2025 12:04
@svc-secops svc-secops force-pushed the renovate/apollo-graphql-packages branch from 0274d81 to b75a9a0 Compare September 24, 2025 12:45
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