Read the quick start guide to generate your client and start writing queries.
You can stay up to date with the latest changes subscribing to the Genql changelog.
Features
- ✅ Type completion & Type validation
- 🍃 No dependencies (not even graphql)
- ⚡️ Can easily fetch all scalar fields in a type
- 🐎 Works with any client (Apollo, Relay, etc)
- 🥃 Support for Subscriptions
- 🔋 Built in batching support
↔️ Easy migrate existing GraphQL queries to Genql code- 🚂 Works in browser, Node, Deno, Cloudflare workers, Bun and more
First generate your client with the genql
cli.
You can find other cli options here
npm i -D @genql/cli # cli to generate the client code
genql --schema ./schema.graphql --output ./generated
Then you can use your client as follow
import { createClient, everything } from './generated'
const client = createClient()
client
.query({
countries: {
// pass arguments to the query
__args: {
filter: {
currency: {
eq: 'EUR',
},
},
},
name: true,
code: true,
nestedField: {
// fetch all scalar fields
__scalar: true,
},
},
})
.then(console.log)
The code above will fetch the graphql query below
query {
countries(filter: { currency: { eq: "EUR" } }) {
name
code
nestedField {
scalarField1
scalarField2
}
}
}
Genql has a lot of benefits over writing graphql queries by hand:
- Writing queries is faster thanks to TypeScript auto completion
- You can safely update your schema and be sure your queries are still valid
- You can fetch all scalar fields in a type with
__scalar: true
- No
graphql
package dependency, no runtime parsing of queries - You have to generate the client only after your schema changes, not after every query change