This release has changes in the Federation plugin, introducing opt-in changes that will become the default in the next release (v0.17.95).
When configured, the federation plugin creates an entity resolver that accepts a list of representations, improving performance by reducing the number of individual resolver calls.
// IMPORTANT: The output slice order is critical and must match the input slice order exactly!
func (r *entityResolver) FindUserByIDs(ctx context.Context, reps []*entity.UserByIDsInput) ([]*model.User, error) {
output := make([]*model.User, len(reps))
for i, user := range reps {
output[i] = &model.User{
ID: user.ID,
Name: "User " + user.ID,
}
}
return output, nil
}
The @entityResolver directive enables optimization for entity resolver generation in GraphQL federation, and can be opted in by specifying multi: true as in:
type MultiHello @​key(fields: "name") @​entityResolver(multi: true)
Or you can enable this feature by default by setting the federation.options.entity_resolver_multi flag in your configuration:
Fix panic when resolver returns a nil pointer to a slice or any by @surbhi-singh in #4256
fix: @goEmbedInterface generating double-pointer getters for nullable fields by @adrianlungu in #4258
Update to golang.org/x/text@v0.40.0 and golang.org/x/sync@v0.22.0 and golang.org/x/tools@v0.48.0 and golang.org/x/net@v0.57.0 by @StevenACoffman in #4259
chore(deps): bump github.com/urfave/cli/v3 from 3.10.0 to 3.10.1 by @dependabot[bot] in #4246
chore(deps): bump actions/setup-go from 6.4.0 to 6.5.0 by @dependabot[bot] in #4244
chore(deps-dev): bump urql from 5.0.2 to 5.0.3 in /integration by @dependabot[bot] in #4245
chore(deps): bump golang.org/x/tools from 0.46.0 to 0.47.0 by @dependabot[bot] in #4247
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [github.com/99designs/gqlgen](https://github.com/99designs/gqlgen) | `v0.17.93` → `v0.17.94` |  |  |
---
### Release Notes
<details>
<summary>99designs/gqlgen (github.com/99designs/gqlgen)</summary>
### [`v0.17.94`](https://github.com/99designs/gqlgen/releases/tag/v0.17.94)
[Compare Source](https://github.com/99designs/gqlgen/compare/v0.17.93...v0.17.94)
#### Upcoming Potentially Breaking Changes Warning
This release has changes in the Federation plugin, introducing *opt-in* changes that will become the default in the *next* release (v0.17.95).
When configured, the federation plugin creates an entity resolver that accepts a list of *representations*, improving performance by reducing the number of individual resolver calls.
```
// IMPORTANT: The output slice order is critical and must match the input slice order exactly!
func (r *entityResolver) FindUserByIDs(ctx context.Context, reps []*entity.UserByIDsInput) ([]*model.User, error) {
output := make([]*model.User, len(reps))
for i, user := range reps {
output[i] = &model.User{
ID: user.ID,
Name: "User " + user.ID,
}
}
return output, nil
}
```
The [`@entityResolver`](https://gqlgen.com/recipes/federation/#using-entityresolver) directive enables optimization for entity resolver generation in GraphQL federation, and can be opted in by specifying `multi: true` as in:
```
type MultiHello @​key(fields: "name") @​entityResolver(multi: true)
```
Or you can enable this feature by default by setting the `federation.options.entity_resolver_multi` flag in your configuration:
```
federation:
filename: graph/federation.go
package: graph
version: 2
options:
entity_resolver_multi: true
```
#### What's Changed
- fix(federation): disambiguate colliding key-field Go names in multi-resolvers by [@​StevenACoffman](https://github.com/StevenACoffman) in [#​4241](https://github.com/99designs/gqlgen/pull/4241)
- fix(federation): return a positioned validation error for [@​key](https://github.com/key) referencing an undeclared field by [@​StevenACoffman](https://github.com/StevenACoffman) in [#​4249](https://github.com/99designs/gqlgen/pull/4249)
- Federation: per-entity [@​requires](https://github.com/requires) strategies with preloaded batch delivery by [@​StevenACoffman](https://github.com/StevenACoffman) in [#​4242](https://github.com/99designs/gqlgen/pull/4242)
- Update github.com/gqlparser/vektah/gqlparser/v2 to v2.5.36 by [@​StevenACoffman](https://github.com/StevenACoffman) in [#​4250](https://github.com/99designs/gqlgen/pull/4250)
- chore: drop dead vSlice predecl in codegen template by [@​c-tonneslan](https://github.com/c-tonneslan) in [#​4197](https://github.com/99designs/gqlgen/pull/4197)
- Disable scalar leaf suggestions when requested by [@​XuankangLin](https://github.com/XuankangLin) in [#​4252](https://github.com/99designs/gqlgen/pull/4252)
- feat(federation): per-field computed [@​requires](https://github.com/requires) via [@​computedRequires](https://github.com/computedRequires) by [@​StevenACoffman](https://github.com/StevenACoffman) in [#​4251](https://github.com/99designs/gqlgen/pull/4251)
- Fix panic when resolver returns a nil pointer to a slice or any by [@​surbhi-singh](https://github.com/surbhi-singh) in [#​4256](https://github.com/99designs/gqlgen/pull/4256)
- fix: `@goEmbedInterface` generating double-pointer getters for nullable fields by [@​adrianlungu](https://github.com/adrianlungu) in [#​4258](https://github.com/99designs/gqlgen/pull/4258)
- Update to golang.org/x/text\@​v0.40.0 and golang.org/x/sync\@​v0.22.0 and golang.org/x/tools\@​v0.48.0 and golang.org/x/net\@​v0.57.0 by [@​StevenACoffman](https://github.com/StevenACoffman) in [#​4259](https://github.com/99designs/gqlgen/pull/4259)
- chore(deps): bump github.com/urfave/cli/v3 from 3.10.0 to 3.10.1 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​4246](https://github.com/99designs/gqlgen/pull/4246)
- chore(deps): bump actions/setup-go from 6.4.0 to 6.5.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​4244](https://github.com/99designs/gqlgen/pull/4244)
- chore(deps-dev): bump urql from 5.0.2 to 5.0.3 in /integration by [@​dependabot](https://github.com/dependabot)\[bot] in [#​4245](https://github.com/99designs/gqlgen/pull/4245)
- chore(deps): bump golang.org/x/tools from 0.46.0 to 0.47.0 by [@​dependabot](https://github.com/dependabot)\[bot] in [#​4247](https://github.com/99designs/gqlgen/pull/4247)
#### New Contributors
- [@​XuankangLin](https://github.com/XuankangLin) made their first contribution in [#​4252](https://github.com/99designs/gqlgen/pull/4252)
- [@​surbhi-singh](https://github.com/surbhi-singh) made their first contribution in [#​4256](https://github.com/99designs/gqlgen/pull/4256)
**Full Changelog**: <https://github.com/99designs/gqlgen/compare/v0.17.93...v0.17.94>
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDMuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0My4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
renovate
scheduled this pull request to auto merge when all checks succeed 2026-07-12 15:13:09 +00:00
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠️Warning: custom changes will be lost.
### Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠️ **Warning**: custom changes will be lost.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
v0.17.93→v0.17.94Release Notes
99designs/gqlgen (github.com/99designs/gqlgen)
v0.17.94Compare Source
Upcoming Potentially Breaking Changes Warning
This release has changes in the Federation plugin, introducing opt-in changes that will become the default in the next release (v0.17.95).
When configured, the federation plugin creates an entity resolver that accepts a list of representations, improving performance by reducing the number of individual resolver calls.
The
@entityResolverdirective enables optimization for entity resolver generation in GraphQL federation, and can be opted in by specifyingmulti: trueas in:Or you can enable this feature by default by setting the
federation.options.entity_resolver_multiflag in your configuration:What's Changed
@goEmbedInterfacegenerating double-pointer getters for nullable fields by @adrianlungu in #4258New Contributors
Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.93...v0.17.94
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.
ℹ️ Artifact update notice
File name: go.mod
In order to perform the update(s) described in the table above, Renovate ran the
go getcommand, which resulted in the following additional change(s):Details:
github.com/urfave/cli/v3v3.10.0->v3.10.1golang.org/x/modv0.37.0->v0.38.0golang.org/x/netv0.56.0->v0.57.0golang.org/x/toolsv0.47.0->v0.48.03dcffcc0c5to65efd7c50c65efd7c50cto61cb42e99bEdited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠️ Warning: custom changes will be lost.