Releases: graphql-hive/router
node-addon 0.0.33 (2026-06-17)
Fixes
Add an experimental query planner option, experimental_abstract_type_folding
query_planner:
experimental_abstract_type_folding: true # false by defaultFolds 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)
Features
Add an experimental query planner option, experimental_abstract_type_folding
query_planner:
experimental_abstract_type_folding: true # false by defaultFolds 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)
Features
Add an experimental query planner option, experimental_abstract_type_folding
query_planner:
experimental_abstract_type_folding: true # false by defaultFolds 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)
Features
Add an experimental query planner option, experimental_abstract_type_folding
query_planner:
experimental_abstract_type_folding: true # false by defaultFolds 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)
Fixes
Add an experimental query planner option, experimental_abstract_type_folding
query_planner:
experimental_abstract_type_folding: true # false by defaultFolds 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)
Features
Add an experimental query planner option, experimental_abstract_type_folding
query_planner:
experimental_abstract_type_folding: true # false by defaultFolds 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)
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)
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:
- reviewssubscriptions:
enabled: true
callback:
# VRL expression - resolved at runtime
public_url:
expression: 'env("ROUTER_CALLBACK_PUBLIC_URL")'
subgraphs:
- reviewsFix 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)
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)
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:
- reviewssubscriptions:
enabled: true
callback:
# VRL expression - resolved at runtime
public_url:
expression: 'env("ROUTER_CALLBACK_PUBLIC_URL")'
subgraphs:
- reviewsFixes
Fix union list FieldMove creation
In some cases union list was treated as single union field in graph.