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:

Use TypeScript Instead Of Python For ETL Pipelines

Use TypeScript instead of Python for ETL pipelines

Build a TypeScript ETL pipeline that extracts, transforms, and loads data using Prisma, node-cron, and modern async/await practices.

Muhammed Ali
Apr 17, 2025 â‹… 6 min read
best react charts libraries

Best React chart libraries (2025 update): Features, performance & use cases

Looking for the best React charting library? Compare the latest options, from Recharts to MUI X Charts, and see which one fits your project best.

Hafsah Emekoma
Apr 16, 2025 â‹… 10 min read
TypeScript Is Going Go: Why It's The Pragmatic Choice

TypeScript is going Go: Why it’s the pragmatic choice

Explore why the TypeScript team is porting the compiler to Go in TypeScript 7. Learn how this shift impacts performance, tooling, and the future of the TypeScript ecosystem.

John Reilly
Apr 16, 2025 â‹… 9 min read
six RAG types you should know

6 retrieval augmented generation (RAG) techniques you should know

Explore six powerful RAG techniques to enhance LLMs with external data for smarter, real-time AI-driven web applications.

Rosario De Chiara
Apr 16, 2025 â‹… 6 min 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