Upgrading Cynic v2 to v3

Cynic made a few minor breaking changes in v3, but they shouldn't affect most users. However, there were a bunch of quality of life changes in this version. This guide will show you how to take advantage of these.

Update your Cargo.toml

First update the version reference for cynic in your Cargo.toml to 3.

This verison also added an optional rkyv feature that can speed up compilation for some users. Add this in if you like.

Pre-register your schemas

v3 added the concept of pre-registering schemas. This saves you from having to pass the schema_path attribute to the derives, and makes the schema_for_derives macro mostly redundant (assuming you're only using one schema at least).

To do this you should create a build.rs in the root of your project, with the following contents:

fn main() {
    cynic_codegen::register_schema("github")
       .from_sdl_file("schemas/github.graphql")
       .unwrap()
       .as_default()
       .unwrap();
}

Where github is the name of your schema and schemas/github.graphql is the path to the schema SDL (relative to the build.rs file).

See the schemas page for more details.

After you've done this, you should be able to remove any schema_path attributes, and any uses of the schema_for_derives attribute.

Replace use_schema with #[cynic::schema]

If you've pre-registered your schema you should update the code where you call use_schema. Find this code, it'll look something like this:


#![allow(unused)]
fn main() {
mod schema {
    cynic::use_schema!("github.graphql")
}
}

and replace it with


#![allow(unused)]
fn main() {
#[cynic::schema("github")]
mod schema {}
}

where github is the name you gave the schema in your build.rs