Releases: graphql-hive/router
node-addon 0.0.13 (2026-03-05)
Features
Improve Query Plans for abstract types
The query planner now combines fetches for multiple matching types into a single fetch step.
Before, the planner could create one fetch per type.
Now, it can fetch many types together when possible, which reduces duplicate fetches and makes query plans more efficient.
Rename internal query-plan path segment from Cast(String) to TypeCondition(Vec<String>)
Query Plan shape changed from Cast(String) to TypeCondition(Vec<String>).
The TypeCondition name better reflects GraphQL semantics (... on Type) and avoids string encoding/decoding like "A|B" in planner/executor code.
What changed
- Query planner path model now uses
TypeConditionterminology instead ofCast. - Type conditions are represented as a list of type names, not a pipe-delimited string.
- Node addon query-plan typings were updated accordingly:
FetchNodePathSegment.TypenameEqualsnow usesstring[]FlattenNodePathSegmentnow usesTypeCondition: string[](instead ofCast: string)
hive-router 0.0.40 (2026-03-05)
Features
- plugin system (#628)
Plugin System
This release introduces a Plugin System that allows users to extend the functionality of Hive Router by creating custom plugins.
use hive_router::plugins::plugin_trait::RouterPlugin;
use hive_router::async_trait;
struct MyPlugin;
#[async_trait]
impl RouterPlugin for MyPlugin {
type Config = ();
fn plugin_name() -> &'static str {
"my_plugin"
}
}You can learn more about the plugin system in the technical documentation and in Extending the Router guide.
This new feature also exposes many of the Router's internals through the hive-router crate.
Fixes
Improve Query Plans for abstract types
The query planner now combines fetches for multiple matching types into a single fetch step.
Before, the planner could create one fetch per type.
Now, it can fetch many types together when possible, which reduces duplicate fetches and makes query plans more efficient.
Adds noop_otlp_exporter feature for internal usage
Hive Router uses noop_otlp_exporter internally for testing purposes. This change adds the noop_otlp_exporter feature to the hive-router crate so that it can be used internally while testing the router.
Rename internal query-plan path segment from Cast(String) to TypeCondition(Vec<String>)
Query Plan shape changed from Cast(String) to TypeCondition(Vec<String>).
The TypeCondition name better reflects GraphQL semantics (... on Type) and avoids string encoding/decoding like "A|B" in planner/executor code.
What changed
- Query planner path model now uses
TypeConditionterminology instead ofCast. - Type conditions are represented as a list of type names, not a pipe-delimited string.
- Node addon query-plan typings were updated accordingly:
FetchNodePathSegment.TypenameEqualsnow usesstring[]FlattenNodePathSegmentnow usesTypeCondition: string[](instead ofCast: string)
Dependencies Updates
- Update
rustls,aws-lc-rsandaws-lc-sysdependencies to addressPKCS7CVE inaws-lccrates. - Update
randto latest version.
Fix missing elements in the introspection;
isDeprecatedanddeprecationReasonfields in introspection results for input values. This caused deprecated input values to be treated as non-deprecated, which could lead to clients not being aware of deprecations and potentially using deprecated fields or arguments.
{
__type(name: "SomeInputType") {
inputFields {
name
isDeprecated # This field was missing, causing deprecated input values to be treated as non-deprecated
}
}
}isOneOffield in introspection results for input object types. This field indicates whether an input object type is a "oneOf" type, which is a special kind of input object that allows only one of its fields to be provided. The absence of this field could lead to clients not being able to correctly identify and handle "oneOf" input object types.
{
__type(name: "SomeInputObjectType") {
name
kind
isOneOf # This field was missing, causing clients to not be able to identify "oneOf" input object types
}
}defaultValuefield in introspection results for input values and arguments. This field provides the default value for an argument if it is not provided in a query. The absence of this field could lead to clients not being aware of default values for arguments, which could result in unexpected behavior when executing queries that rely on default argument values.
{
__type(name: "SomeType") {
fields {
name
args {
name
defaultValue # This field was missing, causing clients to not be aware of default argument values
}
}
}
}- Add missing
specifiedByURLfield in introspection results for custom scalar types. This field provides a URL that specifies the behavior of a custom scalar type. The absence of this field could lead to clients not being able to understand the semantics of custom scalar types, which could result in incorrect handling of values of those types.
{
__type(name: "SomeCustomScalar") {
name
kind
specifiedByURL # This field was missing, causing clients to not be able to understand the semantics of custom scalar types
}
}Internal GraphQL Validation Cache Key
ConsumerSchemaandValidationPlannow implementhashproperty, which is calculated based on the SDL string of the consumer schema and the validation rules when the struct is created or when a new rule is added to the validation plan.- Validation cache key is generated by hashing the SDL string of the consumer schema, and the validation rules together with the operation itself.
- All schema AST nodes now implement
Hashtrait, which allows us to hash the entire schema AST when generating the validation cache key.
hive-router-query-planner 2.3.0 (2026-03-05)
Features
- use multi-type TypeCondition paths and batch sibling entity fetches (#280)
Improve Query Plans for abstract types
The query planner now combines fetches for multiple matching types into a single fetch step.
Before, the planner could create one fetch per type.
Now, it can fetch many types together when possible, which reduces duplicate fetches and makes query plans more efficient.
Rename internal query-plan path segment from Cast(String) to TypeCondition(Vec<String>)
Query Plan shape changed from Cast(String) to TypeCondition(Vec<String>).
The TypeCondition name better reflects GraphQL semantics (... on Type) and avoids string encoding/decoding like "A|B" in planner/executor code.
What changed
- Query planner path model now uses
TypeConditionterminology instead ofCast. - Type conditions are represented as a list of type names, not a pipe-delimited string.
- Node addon query-plan typings were updated accordingly:
FetchNodePathSegment.TypenameEqualsnow usesstring[]FlattenNodePathSegmentnow usesTypeCondition: string[](instead ofCast: string)
Plugin System
This release introduces a Plugin System that allows users to extend the functionality of Hive Router by creating custom plugins.
use hive_router::plugins::plugin_trait::RouterPlugin;
use hive_router::async_trait;
struct MyPlugin;
#[async_trait]
impl RouterPlugin for MyPlugin {
type Config = ();
fn plugin_name() -> &'static str {
"my_plugin"
}
}You can learn more about the plugin system in the technical documentation and in Extending the Router guide.
This new feature also exposes many of the Router's internals through the hive-router crate.
Fixes
Internal GraphQL Validation Cache Key
ConsumerSchemaandValidationPlannow implementhashproperty, which is calculated based on the SDL string of the consumer schema and the validation rules when the struct is created or when a new rule is added to the validation plan.- Validation cache key is generated by hashing the SDL string of the consumer schema, and the validation rules together with the operation itself.
- All schema AST nodes now implement
Hashtrait, which allows us to hash the entire schema AST when generating the validation cache key.
hive-router-plan-executor 6.6.0 (2026-03-05)
Features
Plugin System
This release introduces a Plugin System that allows users to extend the functionality of Hive Router by creating custom plugins.
use hive_router::plugins::plugin_trait::RouterPlugin;
use hive_router::async_trait;
struct MyPlugin;
#[async_trait]
impl RouterPlugin for MyPlugin {
type Config = ();
fn plugin_name() -> &'static str {
"my_plugin"
}
}You can learn more about the plugin system in the technical documentation and in Extending the Router guide.
This new feature also exposes many of the Router's internals through the hive-router crate.
Fixes
- resolve missing fields in introspection (#802)
Improve Query Plans for abstract types
The query planner now combines fetches for multiple matching types into a single fetch step.
Before, the planner could create one fetch per type.
Now, it can fetch many types together when possible, which reduces duplicate fetches and makes query plans more efficient.
Adds noop_otlp_exporter feature for internal usage
Hive Router uses noop_otlp_exporter internally for testing purposes. This change adds the noop_otlp_exporter feature to the hive-router crate so that it can be used internally while testing the router.
Rename internal query-plan path segment from Cast(String) to TypeCondition(Vec<String>)
Query Plan shape changed from Cast(String) to TypeCondition(Vec<String>).
The TypeCondition name better reflects GraphQL semantics (... on Type) and avoids string encoding/decoding like "A|B" in planner/executor code.
What changed
- Query planner path model now uses
TypeConditionterminology instead ofCast. - Type conditions are represented as a list of type names, not a pipe-delimited string.
- Node addon query-plan typings were updated accordingly:
FetchNodePathSegment.TypenameEqualsnow usesstring[]FlattenNodePathSegmentnow usesTypeCondition: string[](instead ofCast: string)
Dependencies Updates
- Update
rustls,aws-lc-rsandaws-lc-sysdependencies to addressPKCS7CVE inaws-lccrates. - Update
randto latest version.
Fix missing elements in the introspection;
isDeprecatedanddeprecationReasonfields in introspection results for input values. This caused deprecated input values to be treated as non-deprecated, which could lead to clients not being aware of deprecations and potentially using deprecated fields or arguments.
{
__type(name: "SomeInputType") {
inputFields {
name
isDeprecated # This field was missing, causing deprecated input values to be treated as non-deprecated
}
}
}isOneOffield in introspection results for input object types. This field indicates whether an input object type is a "oneOf" type, which is a special kind of input object that allows only one of its fields to be provided. The absence of this field could lead to clients not being able to correctly identify and handle "oneOf" input object types.
{
__type(name: "SomeInputObjectType") {
name
kind
isOneOf # This field was missing, causing clients to not be able to identify "oneOf" input object types
}
}defaultValuefield in introspection results for input values and arguments. This field provides the default value for an argument if it is not provided in a query. The absence of this field could lead to clients not being aware of default values for arguments, which could result in unexpected behavior when executing queries that rely on default argument values.
{
__type(name: "SomeType") {
fields {
name
args {
name
defaultValue # This field was missing, causing clients to not be aware of default argument values
}
}
}
}- Add missing
specifiedByURLfield in introspection results for custom scalar types. This field provides a URL that specifies the behavior of a custom scalar type. The absence of this field could lead to clients not being able to understand the semantics of custom scalar types, which could result in incorrect handling of values of those types.
{
__type(name: "SomeCustomScalar") {
name
kind
specifiedByURL # This field was missing, causing clients to not be able to understand the semantics of custom scalar types
}
}Internal GraphQL Validation Cache Key
ConsumerSchemaandValidationPlannow implementhashproperty, which is calculated based on the SDL string of the consumer schema and the validation rules when the struct is created or when a new rule is added to the validation plan.- Validation cache key is generated by hashing the SDL string of the consumer schema, and the validation rules together with the operation itself.
- All schema AST nodes now implement
Hashtrait, which allows us to hash the entire schema AST when generating the validation cache key.
hive-router-internal 0.0.13 (2026-03-05)
Features
Plugin System
This release introduces a Plugin System that allows users to extend the functionality of Hive Router by creating custom plugins.
use hive_router::plugins::plugin_trait::RouterPlugin;
use hive_router::async_trait;
struct MyPlugin;
#[async_trait]
impl RouterPlugin for MyPlugin {
type Config = ();
fn plugin_name() -> &'static str {
"my_plugin"
}
}You can learn more about the plugin system in the technical documentation and in Extending the Router guide.
This new feature also exposes many of the Router's internals through the hive-router crate.
Fixes
Adds noop_otlp_exporter feature for internal usage
Hive Router uses noop_otlp_exporter internally for testing purposes. This change adds the noop_otlp_exporter feature to the hive-router crate so that it can be used internally while testing the router.
Dependencies Updates
- Update
rustls,aws-lc-rsandaws-lc-sysdependencies to addressPKCS7CVE inaws-lccrates. - Update
randto latest version.
hive-router-config 0.0.24 (2026-03-05)
Features
Plugin System
This release introduces a Plugin System that allows users to extend the functionality of Hive Router by creating custom plugins.
use hive_router::plugins::plugin_trait::RouterPlugin;
use hive_router::async_trait;
struct MyPlugin;
#[async_trait]
impl RouterPlugin for MyPlugin {
type Config = ();
fn plugin_name() -> &'static str {
"my_plugin"
}
}You can learn more about the plugin system in the technical documentation and in Extending the Router guide.
This new feature also exposes many of the Router's internals through the hive-router crate.
Fixes
Dependencies Updates
- Update
rustls,aws-lc-rsandaws-lc-sysdependencies to addressPKCS7CVE inaws-lccrates. - Update
randto latest version.
hive-console-sdk 0.3.7 (2026-03-05)
Features
Plugin System
This release introduces a Plugin System that allows users to extend the functionality of Hive Router by creating custom plugins.
use hive_router::plugins::plugin_trait::RouterPlugin;
use hive_router::async_trait;
struct MyPlugin;
#[async_trait]
impl RouterPlugin for MyPlugin {
type Config = ();
fn plugin_name() -> &'static str {
"my_plugin"
}
}You can learn more about the plugin system in the technical documentation and in Extending the Router guide.
This new feature also exposes many of the Router's internals through the hive-router crate.
Fixes
Dependencies Updates
- Update
rustls,aws-lc-rsandaws-lc-sysdependencies to addressPKCS7CVE inaws-lccrates. - Update
randto latest version.
Internal GraphQL Validation Cache Key
ConsumerSchemaandValidationPlannow implementhashproperty, which is calculated based on the SDL string of the consumer schema and the validation rules when the struct is created or when a new rule is added to the validation plan.- Validation cache key is generated by hashing the SDL string of the consumer schema, and the validation rules together with the operation itself.
- All schema AST nodes now implement
Hashtrait, which allows us to hash the entire schema AST when generating the validation cache key.
graphql-tools 0.5.2 (2026-03-05)
Features
Plugin System
This release introduces a Plugin System that allows users to extend the functionality of Hive Router by creating custom plugins.
use hive_router::plugins::plugin_trait::RouterPlugin;
use hive_router::async_trait;
struct MyPlugin;
#[async_trait]
impl RouterPlugin for MyPlugin {
type Config = ();
fn plugin_name() -> &'static str {
"my_plugin"
}
}You can learn more about the plugin system in the technical documentation and in Extending the Router guide.
This new feature also exposes many of the Router's internals through the hive-router crate.
Fixes
Internal GraphQL Validation Cache Key
ConsumerSchemaandValidationPlannow implementhashproperty, which is calculated based on the SDL string of the consumer schema and the validation rules when the struct is created or when a new rule is added to the validation plan.- Validation cache key is generated by hashing the SDL string of the consumer schema, and the validation rules together with the operation itself.
- All schema AST nodes now implement
Hashtrait, which allows us to hash the entire schema AST when generating the validation cache key.
hive-router 0.0.39 (2026-02-12)
Fixes
- Make
hive.inflight.keyspan attribute unique per inflight group, for better identification of the leader and joiners in a distributed system.
hive-router-plan-executor 6.5.1 (2026-02-12)
Fixes
- Make
hive.inflight.keyspan attribute unique per inflight group, for better identification of the leader and joiners in a distributed system.