v0.17.35 v0.17.47 v0.17.46 v0.17.45 v0.17.44 v0.17.43 v0.17.42 v0.17.41 v0.17.40 v0.17.39 v0.17.38 v0.17.37 v0.17.36 v0.17.34 v0.17.33 v0.17.32 v0.17.31 v0.17.30 v0.17.29 v0.17.28 master


How to write plugins for gqlgen
You are looking at the docs for an older version (v0.17.35). The latest version is v0.17.47.

Plugins provide a way to hook into the gqlgen code generation lifecycle. In order to use anything other than the default plugins you will need to create your own entrypoint:

Using a plugin

To use a plugin during code generation, you need to create a new entry point. Create generate.go in the same folder as resolver.go with the following code:

// go:build ignore

package main

import (


func main() {
	cfg, err := config.LoadConfigFromDefaultLocations()
	if err != nil {
		fmt.Fprintln(os.Stderr, "failed to load config", err.Error())

	err = api.Generate(cfg,
		api.AddPlugin(yourplugin.New()), // This is the magic line
	if err != nil {
		fmt.Fprintln(os.Stderr, err.Error())

In resolver.go, add //go:generate go run generate.go. Now you can run go generate ./... instead of go run github.com/99designs/gqlgen generate to generate the code.

Writing a plugin

There are currently only two hooks:

Take a look at plugin.go for the full list of available hooks. These are likely to change with each release.