NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1704 most downloaded on crates.io
A GraphQL server library implemented in Rust
Last release 4 months ago
21 Apr 2026
Release timing varies
gaps range from 2 weeks to 7 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
441 releases · first in 2020
One column per quarter.
on_connection_init takes FnOnce instead of Fn #1022
on_connection_init takes FnOnce instead of Fn #1022Add tracing to dataloader methods when the tracing feature is enabled. #996
Limit parser recursion depth to 64.
64.Limit execution recursion depth to 32 by default.
32 by default.Fix serializing of JSON default values #969
Bump Actix-web from 4.0.1 to 4.1.0
Custom error type in axum request extractor #945
Expose Edge::node to allow better testing. #933
Add Schema::build_with_ignore_name_conflicts method to specifies a list to ignore type conflict detection.
Schema::build_with_ignore_name_conflicts method to specifies a list to ignore type conflict detection.Implement the ConnectionNameType and EdgeNameType traits to specify GraphQL type names for Connection and Edge, which can be automatically generated u
ConnectionNameType and EdgeNameType traits to specify GraphQL type names for Connection and Edge, which can be automatically generated using DefaultConnectionName and DefaultEdgeName.#[non_exhaustive] attribute to Request/Response types.introspection-only mode. #894bson-uuid feature to implement ScalarType for bson::Uuid. #875regex crate from 1.4.5 to 1.5.5. #862chrono-tz crate from 0.5.3 to 0.6.1. #831log to version 0.4.16. #903CursorType for floats #897OutputType for tokio::sync::RwLock and tokio::sync::Mutex. #896uuid to 1.0.0. #907ExecuteDocument in APQ. #919OneofObject restriction on inner types being unique. #923Nothing published for this version
Nothing published for this version
Nothing published for this version
Update Axum integration to Axum 0.5.1 #883
Panics when the same Rust type has the same name. #880
Generate @deprecated to SDL. #874
Make HashMap more generics for InputOutput and OutputType.
Export @oneOf directive to SDL when Oneof type is defined. #766
@oneOf directive to SDL when Oneof type is defined. #766Add support for oneof field on object. #766
Add OneOfObject macro to support for oneof input object.
OneOfObject macro to support for oneof input object.4.0.0-rc.2 to 4.0.0-rc.3.Implement ScalarType for time::Date. #822
ScalarType for time::Date. #822Pass context to resolvers with flatten attribute. #813
ComplexObject and InputObject.Actix-web from 4.0.0-beta.19 to 4.0.0-rc.2.Implement InputType and OutputType for Box<[T]> and Arc<[T]>. #805
InputType and OutputType for Box<[T]> and Arc<[T]>. #805Fix possible stack overflow in validator, thanks @quapka.
Add skip_input attribute to InputObject macro, skip_output attribute to SimpleObject macro.
skip_input attribute to InputObject macro, skip_output attribute to SimpleObject macro.Fixed some integrations overwritten HTTP headers. #793
Remove 'static bound for impl From for Error.
'static bound for impl From<T> for Error.Allow the deprecation attribute to have no reason.
0.11.2 to 0.12.0.InputType for Box<str> and Arc<str>. #792time crate's datetime types. #791DataContext trait. #786flatten attribute for SimpleObject, ComplexObject and Object macros. #533Union and Interface support for trait objects. #780lru to 0.7.1. #773indexmap version to 1.6.2. #7764.0.0-beta.18 to 4.0.0-beta.19.SimpleObject can't define the lifetimes. #774InputType / OutputType support for hashbrown crate.4.0.0-beta.14 to 4.0.0-beta.18. #768_Entity should not be sent if empty as it's in conflict with GraphQL Union type validation #765.ComplexObject. #7671.2.2.1.2.1.4.0.0-beta.11 to 4.0.0-beta.14.0.3 to 0.4.InputType and OutputType for HashMap and BTreeMap.BatchRequest.
Option<Vec<T>>.Option<Vec<T>>.#[graphql(validator(list))] no longer applies to max_items and min_items.InputValue/OutputValue for serde_json::Value.SmolStr via a feature. #730isRepeatable field to __Directive - [GraphQL - October 2021]OutputJson because Json can replace it.Option<T>, MaybeUnefined<T>.GraphQLWebSocket::new use generic stream.GraphQLWebSocket::new_with_pair method.url, regex and ip validators.ctx parameter of CustomValidator::check. #710connection::query function to allow the callback to use any type that implements Into<Error>.ResolverError and use Error::new_with_source instead.ErrorExtensionValues::unset method.SimpleObject macro and the InputObject macro at the same time.async-graphql-tide.EmptyMutation may cause when used in MergedObject. #694chrono::Duration custom scalar. #689From<Option<Option<T>>> for MaybeUndefined<T>.MaybeUndefined::as_opt_ref, MaybeUndefined::as_opt_deref, MaybeUndefined::map, MaybeUndefined::map_value, MaybeUndefined::contains, MaybeUndefined::contains_value, and MaybeUndefined::transpose methods.MaybeUndefined::is_undefined, MaybeUndefined::is_null, MaybeUndefined::is_value, MaybeUndefined::value and MaybeUndefined::as_opt_ref const.ResolverError type. #6710.2.5 to 0.3.Context.2021 edition.specified_by_url for Tz, DateTime<Tz>, Url, Uuid and Upload scalars.1.0.13.0.6.6 to 1.0.7.Default for ID #659.ScalarType for bson::Bson and bson::Document. #661CharsMinLength and CharsMaxLength validators. #656Subscription macro to work on Rust 2021. #665visible macro argument for union type. #655DataLoader::enable_all_cache and DataLoader::enable_cache methods. #642chain and race guards. #614error to info. #518graphql-ws pings. #635websocket for async-graphql-tide. #636Value conversion. #617ScalarType for HashMap/BTreeMap to use ToString/FromStr. #585Axum integration. async-graphql-axumFrom<MaybeUndefined<T>> for Option<Option<T>>. #599GraphQLPlaygroundConfig::with_setting to accept impl Into<Value> #583ConstValue and Value. #569OutputType for Bytes.TryFrom<&[SelectionField<'a>]> for Lookahead<'a>. #575list attribute to the input value validator. #579ComplexObject. #562From<SelectionField> for Lookahead. #557rust_decimal crate) #559ResolveInfo. #551MergedObject may cause panic. #539Bump upstream crate bson from v1.2.0 to v2.0.0-beta.1. #516
Add serial attribute for Object, SimpleObject and MergedObject macros. #539
Remove the static constraint of the receive_body and receive_batch_body functions. #544
Implement InputType and OutputType for [T; N] array.
Add support for returning multiple resolver errors. #531
Bump upstream crate multer from v1.2.2 to v2.0.0.
Aligned NaiveDateTime formatting with DateTime. #535
Allow the ability to set GraphQL Playground settings. #508
WebSocket is now generic in graphql_subscription_upgrade functions. #530
Removed Copy trait from initializer in graphql_subscription_with_data. #530
If InputObject contains an unnamed field, the correct error message will be given. #498
Added Websocket::with_message_stream for client message customization. #501
Added the Secret type using secrecy crate.
ComplexObject macro cannot work due to the secret attribute.Result type, E can be all types that implement async_graphql::Into<Error>.secret attribute for arguments, they will not appear in the log.#[Object]
impl Query {
async fn login(&self, username:String, #[graphql(secret)] password: String) -> i32 {
todo!()
}
}
Extension, now fully supports asynchronous, better to use than before, and can achieve more features, it contains a lot of changes. (if you don't have a custom extension, it will not cause the existing code to fail to compile)async_graphql_warp::graphql_protocol, async_graphql_warp::graphql_subscription_upgrade and async_graphql_warp::graphql_subscription_upgrade_with_data to control WebSocket subscription more finely.BuildHasher generic parameter to dataloader::HashMapCache to allow custom hashing algorithms. #455ScalarType for serde_json::Value.SelectionField::alias and SelectionField::arguments methods.SchemaBuilder::override_name method. #437name and visible attributes for Newtype macro for define a new scalar. #437NewType macro now also implements From<InnerType> and Into<InnerType>.Request::disable_introspection method. #456start before connection_init, the connection will be immediately disconnected and return 1011 error. #451extension::OpenTelemetry.TracingConfig, now Request span always takes the current span as the parent, so this option is no longer needed.multipart feature.SchemaBuilder::enable_subscription_in_federation method. #449DataLoader::loader method. #441extends attribute for derive macros Subscription and MergedSubscription.SchemaBuilder::override_name method. #437_entity requests in parallel. #431Variables from async_graphql::context::Variables to async_graphql::Variables.Allow the deprecation attribute to have no reason.
#[derive(SimpleObject)]
struct MyObject {
#[graphql(deprecation)]
a: i32,
#[graphql(deprecation = true)]
b: i32,
#[graphql(deprecation = false)]
c: i32,
#[graphql(deprecation = "reason")]
d: i32,
}
Context::data function is too small.FIELD_DEFINITION and ENUM_VALUE cannot be parsed.Add support flatten attribute for SimpleObject, ComplexObject and Object macros. #533
Add Union and Interface support for trait objects. #780
Union and Interface support for trait objects. #780Align indexmap version to 1.6.2. #776
Add InputType / OutputType support for hashbrown crate.
InputType / OutputType support for hashbrown crate.4.0.0-beta.14 to 4.0.0-beta.18. #768Federation's _Entity should not be sent if empty as it's in conflict with GraphQL Union type validation #765.
_Entity should not be sent if empty as it's in conflict with GraphQL Union type validation #765.ComplexObject. #767- Bump poem to 1.2.2.
1.2.2.- Bump poem to 1.2.1.
1.2.1.Bump actix-web from 4.0.0-beta.11 to 4.0.0-beta.14.
4.0.0-beta.11 to 4.0.0-beta.14.[async-graphql-axum] bump axum from 0.3 to 0.4.
0.3 to 0.4.No longer assumes that a subscription stream that failed to resolve has ended. #744
InputType and OutputType for HashMap and BTreeMap.Fix possible deadlock in dataloader. #555
Fix panic on f32-64::INFINITE/f32-64::NEG_INFINITE/f32-64::NAN output. #735
Fix the custom validator cannot work on Option >.
Option<Vec<T>>.Fix the validator cannot work on Option >.
Option<Vec<T>>.Implement InputValue/OutputValue for serde_json::Value.
#[graphql(validator(list))] no longer applies to max_items and min_items.InputValue/OutputValue for serde_json::Value.SmolStr via a feature. #730Fix error extensions cause stack overflow. #719
- Custom directives. Book
Remove skipped fields from the document before executing the query.
isRepeatable field to __Directive - [GraphQL - October 2021]Remove OutputJson because Json can replace it.
OutputJson because Json can replace it.Option<T>, MaybeUnefined<T>.[integrations] Make GraphQLWebSocket::new use generic stream.
GraphQLWebSocket::new use generic stream.GraphQLWebSocket::new_with_pair method.Add url, regex and ip validators.
url, regex and ip validators.Remove the ctx parameter of CustomValidator::check. #710
ctx parameter of CustomValidator::check. #710Nothing published for this version
Nothing published for this version
Implemented CursorType for i32/i64. #701
Fix the problem that EmptyMutation may cause when used in MergedObject. #694
Add chrono::Duration custom scalar. #689
chrono::Duration custom scalar. #689From<Option<Option<T>>> for MaybeUndefined<T>.MaybeUndefined::as_opt_ref, MaybeUndefined::as_opt_deref, MaybeUndefined::map, MaybeUndefined::map_value, MaybeUndefined::contains, MaybeUndefined::contains_value, and MaybeUndefined::transpose methods.MaybeUndefined::is_undefined, MaybeUndefined::is_null, MaybeUndefined::is_value, MaybeUndefined::value and MaybeUndefined::as_opt_ref const.ResolverError type. #6710.2.5 to 0.3.Context.Subscription typename - [GraphQL - October 2021] #681
2021 edition.specified_by_url for Tz, DateTime<Tz>, Url, Uuid and Upload scalars.[async-graphql-poem] Bump poem to 1.0.13.
1.0.13.Nothing published for this version
Add derived for object & simple object & complex object. #667 #670
- Bump poem from 0.6.6 to 1.0.7.
0.6.6 to 1.0.7.Your coding agent can read these notes before it upgrades. Set up the MCP server →