Skip to content

Releases: graphql-hive/router

node-addon 0.0.33 (2026-06-17)

17 Jun 12:23
b74b459

Choose a tag to compare

Fixes

Add an experimental query planner option, experimental_abstract_type_folding

query_planner:
    experimental_abstract_type_folding: true # false by default

Folds matching concrete object-type fragments in subgraph calls, into a shared interface fragment even when that interface is not the field's declared return type.

It's an opt-in addition to 011be5b.

# queries `product-service` subgraph
query {
  products {
-    ... on Book  { id title }
-    ... on Movie { id title }
+    ... on Media { id title }
  }
}

The products field returns Product interface, but one object-type member of this interface called Album is not present in the query, therefore ... on Product {...} is not possible to use (default behavior). With the feature flag enabled, both fragments are folded into ... on Media { ... }, because Book and Movie are the only members of the Media interface in the product-service subgraph.

Avoid indirect lookup for directly resolved leaf fields

The planner now skips indirect path lookup when a leaf field already has a valid direct path.

hive-router 0.0.70 (2026-06-17)

17 Jun 12:23
b74b459

Choose a tag to compare

Features

Add an experimental query planner option, experimental_abstract_type_folding

query_planner:
    experimental_abstract_type_folding: true # false by default

Folds matching concrete object-type fragments in subgraph calls, into a shared interface fragment even when that interface is not the field's declared return type.

It's an opt-in addition to 011be5b.

# queries `product-service` subgraph
query {
  products {
-    ... on Book  { id title }
-    ... on Movie { id title }
+    ... on Media { id title }
  }
}

The products field returns Product interface, but one object-type member of this interface called Album is not present in the query, therefore ... on Product {...} is not possible to use (default behavior). With the feature flag enabled, both fragments are folded into ... on Media { ... }, because Book and Movie are the only members of the Media interface in the product-service subgraph.

Fixes

Fix Router's HTTP layer timeout

Hive Router has it's own timeout that's being enforced, but ntex's one was still effective and uses the default settings.

Instead of fully disabling the low-level timeout, this PR changes the Router implementation to configure ntex timeout to router_timeout+1 so the safe guard is still in place.

Fix response header propagation on error paths

Response header rules now run consistently for successful responses, partial GraphQL error responses, deduped requests, and execution failures.

Avoid indirect lookup for directly resolved leaf fields

The planner now skips indirect path lookup when a leaf field already has a valid direct path.

hive-router-query-planner 2.10.0 (2026-06-17)

17 Jun 12:23
b74b459

Choose a tag to compare

Features

Add an experimental query planner option, experimental_abstract_type_folding

query_planner:
    experimental_abstract_type_folding: true # false by default

Folds matching concrete object-type fragments in subgraph calls, into a shared interface fragment even when that interface is not the field's declared return type.

It's an opt-in addition to 011be5b.

# queries `product-service` subgraph
query {
  products {
-    ... on Book  { id title }
-    ... on Movie { id title }
+    ... on Media { id title }
  }
}

The products field returns Product interface, but one object-type member of this interface called Album is not present in the query, therefore ... on Product {...} is not possible to use (default behavior). With the feature flag enabled, both fragments are folded into ... on Media { ... }, because Book and Movie are the only members of the Media interface in the product-service subgraph.

Fixes

Avoid indirect lookup for directly resolved leaf fields

The planner now skips indirect path lookup when a leaf field already has a valid direct path.

hive-router-plan-executor 6.18.0 (2026-06-17)

17 Jun 12:23
b74b459

Choose a tag to compare

Features

Add an experimental query planner option, experimental_abstract_type_folding

query_planner:
    experimental_abstract_type_folding: true # false by default

Folds matching concrete object-type fragments in subgraph calls, into a shared interface fragment even when that interface is not the field's declared return type.

It's an opt-in addition to 011be5b.

# queries `product-service` subgraph
query {
  products {
-    ... on Book  { id title }
-    ... on Movie { id title }
+    ... on Media { id title }
  }
}

The products field returns Product interface, but one object-type member of this interface called Album is not present in the query, therefore ... on Product {...} is not possible to use (default behavior). With the feature flag enabled, both fragments are folded into ... on Media { ... }, because Book and Movie are the only members of the Media interface in the product-service subgraph.

Fixes

Fix response header propagation on error paths

Response header rules now run consistently for successful responses, partial GraphQL error responses, deduped requests, and execution failures.

Avoid indirect lookup for directly resolved leaf fields

The planner now skips indirect path lookup when a leaf field already has a valid direct path.

hive-router-internal 0.0.29 (2026-06-17)

17 Jun 12:23
b74b459

Choose a tag to compare

Fixes

Add an experimental query planner option, experimental_abstract_type_folding

query_planner:
    experimental_abstract_type_folding: true # false by default

Folds matching concrete object-type fragments in subgraph calls, into a shared interface fragment even when that interface is not the field's declared return type.

It's an opt-in addition to 011be5b.

# queries `product-service` subgraph
query {
  products {
-    ... on Book  { id title }
-    ... on Movie { id title }
+    ... on Media { id title }
  }
}

The products field returns Product interface, but one object-type member of this interface called Album is not present in the query, therefore ... on Product {...} is not possible to use (default behavior). With the feature flag enabled, both fragments are folded into ... on Media { ... }, because Book and Movie are the only members of the Media interface in the product-service subgraph.

hive-router-config 0.1.3 (2026-06-17)

17 Jun 12:23
b74b459

Choose a tag to compare

Features

Add an experimental query planner option, experimental_abstract_type_folding

query_planner:
    experimental_abstract_type_folding: true # false by default

Folds matching concrete object-type fragments in subgraph calls, into a shared interface fragment even when that interface is not the field's declared return type.

It's an opt-in addition to 011be5b.

# queries `product-service` subgraph
query {
  products {
-    ... on Book  { id title }
-    ... on Movie { id title }
+    ... on Media { id title }
  }
}

The products field returns Product interface, but one object-type member of this interface called Album is not present in the query, therefore ... on Product {...} is not possible to use (default behavior). With the feature flag enabled, both fragments are folded into ... on Media { ... }, because Book and Movie are the only members of the Media interface in the product-service subgraph.

node-addon 0.0.32 (2026-06-16)

16 Jun 12:54
9d01f59

Choose a tag to compare

Fixes

Fix union list FieldMove creation

In some cases union list was treated as single union field in graph.

hive-router 0.0.69 (2026-06-16)

16 Jun 12:54
9d01f59

Choose a tag to compare

Support VRL expression for subscription callback public_url

The subscriptions.callback.public_url config field now accepts either a static URL string or a VRL expression, in addition to the previously supported plain URL value.

This is useful in horizontally scaled deployments where the public callback URL is not known at build time and must be resolved at runtime - for example, from an environment variable set by the orchestrator per instance.

Configuration

subscriptions:
  enabled: true
  callback:
    # static URL (existing behavior, unchanged)
    public_url: "https://my-router.example.com/callback"
    subgraphs:
      - reviews
subscriptions:
  enabled: true
  callback:
    # VRL expression - resolved at runtime
    public_url:
      expression: 'env("ROUTER_CALLBACK_PUBLIC_URL")'
    subgraphs:
      - reviews

Fix union list FieldMove creation

In some cases union list was treated as single union field in graph.

hive-router-query-planner 2.9.1 (2026-06-16)

16 Jun 12:54
9d01f59

Choose a tag to compare

Fixes

Fix union list FieldMove creation

In some cases union list was treated as single union field in graph.

hive-router-plan-executor 6.17.0 (2026-06-16)

16 Jun 12:54
9d01f59

Choose a tag to compare

Features

Support VRL expression for subscription callback public_url

The subscriptions.callback.public_url config field now accepts either a static URL string or a VRL expression, in addition to the previously supported plain URL value.

This is useful in horizontally scaled deployments where the public callback URL is not known at build time and must be resolved at runtime - for example, from an environment variable set by the orchestrator per instance.

Configuration

subscriptions:
  enabled: true
  callback:
    # static URL (existing behavior, unchanged)
    public_url: "https://my-router.example.com/callback"
    subgraphs:
      - reviews
subscriptions:
  enabled: true
  callback:
    # VRL expression - resolved at runtime
    public_url:
      expression: 'env("ROUTER_CALLBACK_PUBLIC_URL")'
    subgraphs:
      - reviews

Fixes

Fix union list FieldMove creation

In some cases union list was treated as single union field in graph.