2020-05-18
1429
#graphql
Vilva Athiban P B
18629
May 18, 2020 ⋅ 5 min read

Common anti-patterns in GraphQL schema design

Vilva Athiban P B JavaScript developer. React, Node, GraphQL. Trying to make the web a better place to browse.

Recent posts:

How Ralph makes Claude Code actually finish tasks

Claude Code is deceptively capable. Point it at a codebase, describe what you need, and it’ll autonomously navigate files, write […]

Ikeh Akinyemi
Feb 17, 2026 ⋅ 4 min read
ai dev tool power rankings

AI dev tool power rankings & comparison [Feb. 2026]

Compare the top AI development tools and models of February 2026. View updated rankings, feature breakdowns, and find the best fit for you.

Chizaram Ken
Feb 13, 2026 ⋅ 10 min read

How to solve package validation pain with Publint

Broken npm packages often fail due to small packaging mistakes. This guide shows how to use Publint to validate exports, entry points, and module formats before publishing.

Rahul Chhodde
Feb 12, 2026 ⋅ 5 min read
feb 11 the replay

The Replay (2/11/26): React performance wins, fine-grained frameworks, and more

Discover what’s new in The Replay, LogRocket’s newsletter for dev and engineering leaders, in the February 11th issue.

Matt MacCormack
Feb 11, 2026 ⋅ 34 sec read
View all posts

3 Replies to "Common anti-patterns in GraphQL schema design"

  1. Hi Vilva, thanks for the great and informative article. I learned something new today! I will start making my fields non-nullable except where null is permitted and makes sense.

    A couple observations and questions:

    There’s a minor typo in the Circular Reference anti-pattern example (‘counrty’)

    In that same anti-pattern, how would one reach a truly infinite depth? I didn’t thing GraphQL allowed for such a thing by design (unless something like a recursive fragment were permitted).

    In the input type example ‘type PassengerData’ should be ‘input PassengerData’ (or even ‘input PassengerInput’ as is GraphQL convention).

    Thanks again!

  2. Can you expand on “Thus, GraphQL supports pagination with limit and offset out of the box.”?

  3. Hey Hunter,

    Thanks for the message. With the typo, let me fix it 🙂 Thanks for being clear. And with infinite depth, its not a practical use-case but a security measure. And with the convention it can be input but personally, we follow type so engineers from typescript world feel easy to pick up and thats not an issue as well 🙂

Leave a Reply

Hey there, want to help make our blog better?

Join LogRocket’s Content Advisory Board. You’ll help inform the type of content we create and get access to exclusive meetups, social accreditation, and swag.

Sign up now