NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1752 most downloaded on crates.io
Utility crate for graphql_client
Last release 8 months ago
15 Jan 2026
Release timing varies
gaps range from 3 weeks to 1.7 years
Most releases are documented
notes for 13 of 15 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
15 releases · first in 2018
Revert integer ID deserialization support (introduced in #476 ). It introduced regressions.
feat: Adding deprecation fields to InputValue by @lpessoa in #553
heck to 0.5 by @caspermeijn in #503#[derive(GraphQLQuery)] without depending on serde by @swlynch99 in #487Full Changelog: 0.14.0...0.15.0
One column per quarter.
deprecated directive on InputValue fields (#553)#[derive(GraphQLQuery)] without depending on serde directly (#487)oneOf and specifiedByUrl (#501)reqwest to 0.12 (#499)skip_serializing_none for root level variables (#485)graphql_client crate in codegen (#484)Prepare v0.14 Update CHANGELOG Update update date Fix new clippy warning
Prepare v0.14
Update CHANGELOG
Update update date
Fix new clippy warning
extend type directivegraphqls:// schemagenerate_module_token_stream_from_string to allow custom macro wrappersRelease 0.13.0
Release 0.13.0 (#452)
Switch to BTree to make codegen's output deterministic
skip_none and skip_serializing_noneThe variables_derives now trims whitespace from individual derivation traits.
variables_derives now trims whitespace from individual derivation traits.reqwest-rustls feature works like the reqwest feature but with
rustls rather than native-tls.graphql-client CLI program now suppresses all
warnings from rustc and clippy.fragments-other-variantThe web feature is dropped. You can now use a reqwest::Client instead of the custom HTTP client.
web feature is dropped. You can now use a reqwest::Client instead of the custom HTTP client.--no-ssl param in CLI (thanks @danielharbor!)Nothing published for this version
Nothing published for this version
Only run skeptic in test mode
Only run skeptic in test mode
The selected_operation derive attribute is deprecated. The name of the
struct under derive now has to match one of the operations defined in the query
file.
The CLI now takes the schema path as a required keyword argument.
The CLI was revamped to generate separate modules for each operation in a given query file.
The idea now is that if you generate code for the following document:
# In my_query.graphql
query QueryA { .... }
query QueryB { .... }
mutation SomeMutation { ... }
The CLI generated code will look like this:
// In my_query.rs
pub struct QueryA;
pub mod query_a { ... }
pub struct QueryB;
pub mod query_b { ... }
pub struct SomeMutation;
pub mod some_mutation { ... }
That way the operations don't live in the same module, there is no risk of names clashing anymore.
If there is no schema declaration in a schema, the root types will be matched by name (Query, Mutation and Subscription).
schema declaration in a schema, the root types will be matched by name (Query, Mutation and Subscription).The CLI can now optionally format the generated code with rustfmt (enable the rustfmt feature).
The CLI can now optionally format the generated code with rustfmt (enable the rustfmt feature).
When deriving, the generated module now has the same visibility (private, pub, pub(crate) or crate) as the struct under derive.
Codegen now supports type-refining fragments, i.e. fragments on interfaces or unions that only apply to one of the variants. Example:
type Pie {
diameter: Integer
name: String
}
type Sandwich {
length: Float
ingredients: [String]
}
union Food = Sandwich | Pie
type Query {
lunch: Food
}
fragment PieName on Pie {
name
}
query Test {
lunch {
...PieName
...on Sandwich {
length
}
}
}
Rust prefix on the name of generated items.--selected-operation options with graphql-client generate, the cli generate all queries in query file.#[macro_use] extern crate serde_derive to your crate for the generated modules to compile (thanks @aergonaut!)Better error messages from the derive macro stwhen the schema or the query file path is not found.
This is a *breaking change* if you have the #[deny(deprecated)] compiler lint and you use deprecated fields in your queries. The quick solution is to…
Support for @deprecated field annotations. You can configure how
deprecations are handled via the deprecated argument in the GraphQLQuery
derive:
#[derive(GraphQLQuery)]
#[graphql(
schema_path = "src/graphql/schema.json",
query_path = "src/graphql/queries/my_query.graphql",
deprecated = "warn"
)]
pub struct MyQuery;
Valid values are:
allow: the response struct fields are not marked as deprecated.warn: the response struct fields are marked as #[deprecated].deny: The struct fields are not included in the response struct and
using them is a compile error.The default is warn.
This is a breaking change if you have the #[deny(deprecated)] compiler
lint and you use deprecated fields in your queries. The quick solution is to
annotate the relevant queries with depracated = "allow" as shown above.
The CLI now supports the --authorization flag to pass the contents of an Authorization header. Thanks to @h-michael for the PR!
Improved some codegen error messages, giving more context. Thanks @mathstuf!
Aliases in queries are now supported. Beyond the ergonomics, this is an important feature since it allows to query the same field on an object multiple times with different arguments, as shown in the official guide. Thanks a lot @mathstuf!
The traits in response_derives are now used for input types (variables) as well. In the future we may want to separate the options, but we will first experiment this way.
Most of the graphql-query-derive crate was factored out into a new graphql-client-codegen crate that should enable code generation through means other than custom derives (CLI, build scripts...). Thanks @h-michael for this important refactoring!
Top-level exported types have been renamed. Types no longer have a GraphQL prefix. e.g. GraphQLQuery -> Query, GraphQLError -> Error.
For several classes of items that we generate, we only generate those that are actually used by the query. This way, you do not need to define mappings for every scalar in the schema you are querying - even for small queries - anymore. This also improves compile times a lot in some scenarios. (#116 - thanks @mathstuf!)
GraphQLError now implements the Display trait.
Basic support for fragments on interfaces. See #154 for what is not supported yet.
Handle all Rust keywords as field names in codegen by appending _ to the generated names, so a field called type in a GraphQL query will become a type_ field in the generated struct. Thanks to @scrogson!
The operationName field is now correctly set on request bodies.
This is the initial public release in which the library is considered usable.
This is the initial public release in which the library is considered usable.
Variables struct for a given query and schema through a custom derive, corresponding to the expected variables.ResponseData struct for a given query and schema through a custom derive, corresponding to the shape of the expected response.Your coding agent can read these notes before it upgrades. Set up the MCP server →