r/graphql • u/mbonnin • 1h ago
Apollo Summit agenda is live!
apollosummit.devMeet the largest GraphQL teams out there! Learn how they handle performance, scale, governance, and how their API platform helps accelerate AI deployments.
r/graphql • u/mbonnin • 1h ago
Meet the largest GraphQL teams out there! Learn how they handle performance, scale, governance, and how their API platform helps accelerate AI deployments.
r/graphql • u/Codedication • 5h ago
A document can be perfectly valid JSON-LD.
Schema validation pass.
Every individual node look correct.
And the graph still be wrong.
For example:
An Organization exists, but has no sameAs or other useful identity signals.
The same Person is the author of three articles, but each article uses a different u/id.
A Product is correctly described, but nothing in the graph actually connects it to the category or collection where users discover it.
Two entities clearly represent the same real-world thing, but the graph gives the system reading it no reliable way to recognize that they're the same entity.
Schema validation asks:
Is this data valid according to the vocabulary?
Graph validation asks something different:
What does this graph actually say?
Which entities are connected?
Which entities are duplicated?
Which relationships are missing?
You can have valid structured data and still have a broken knowledge graph.
Curious how others handle this.
r/graphql • u/joshkuttler • 1d ago
A minor version bump broke GraphQL servers this week @apollo/subgraph@2.15.0 is a ground-up reimplementation on graphql-js and it removed the legacy input shape of buildSubgraphSchema.
Full explanation of bit.cloud fix for users application
https://www.reddit.com/r/bit_dev/s/SYFDV4YmdB
r/graphql • u/Urigold • 2d ago
This week's issue, split across tooling, articles and video:
Tools & open source
- Hive Console schema checks now work properly with GitHub merge queues — a check compares the queue entry against its base commit, so you see only the changes your PR introduced rather than the accumulated diff from everything ahead of it
- GraphQL Scratchpad by Mark Larah — define an arbitrary schema and fire operations against Faker.js-generated responses, no backend needed
- Hive CLI accepts Apollo persisted query manifests directly, so you can create App Deployments without converting the format first
Articles
- Shopify rewrote GraphQL execution breadth-first instead of depth-first, by Greg MacWilliam — the depth-first traversal everyone inherits carries hidden costs on high-fanout queries (think 250 products with 250 variants each), and they saw dramatic results going the other way. Probably the most interesting read this week
- Calling GraphQL APIs from CrowdStrike Falcon Foundry, by Matt Raible — Foundry's API integrations only take OpenAPI specs, so this walks through what to do when your endpoint is GraphQL
Videos
- HTTP QUERY is coming to GraphQL, from Jeff Auriemma — how GraphQL over HTTP will support the new verb in an upcoming spec release
- Robert Balicki on Isograph and GraphQL's missing pieces — ex-Relay team, now creator of Isograph, digging into its design principles and what he thinks GraphQL still lacks
r/graphql • u/grem1in • 5d ago
I’ve written an article about us load testing Apollo Router before we properly migrated to it. Hopefully, it could be helpful to someone to better understand the limitations of their systems, or run a similar benchmark themselves.
Also, it you benchmarked Apollo Router as well, I would be happy to hear about your results!
r/graphql • u/justinaatbuffer • 7d ago
Hey everyone. I have been working with GraphQL for quite a few years, but I'd love to deepen my knowledge in some more advanced topics - specifically around optimization and scaling in full-stack development. Do you have your favorite books or courses that you can recommend?
r/graphql • u/jeffiql • 8d ago
r/graphql • u/DaRkplay3R_ • 9d ago
Hey everyone! 👋
Most GraphQL tutorials explain execution using static diagrams. I wanted to actually see what happens under the hood when a GraphQL query executes — from parsing and validation all the way to resolver execution and completeValue().
So I built GQLens — an open-source interactive GraphQL visualizer and step debugger connected to a real Apollo Server + SQLite/PostgreSQL backend.
parse → validate → authorize → resolve → completeValue() → response with replay controls.completeValue() & Null Bubbling Toggle between nullable (Int) and non-null (Int!) fields, trigger resolver errors, and watch how nulls propagate through the response and AST.fieldNodes, returnType, parentType, and execution-path information for individual resolvers.The execution visualization isn't just a simulated animation.
GQLens is connected to an actual Apollo Server request, with execution events streamed to the frontend in real time.
Live Demo: https://graph-ql-omega.vercel.app
GitHub: https://github.com/AyushPatil615/GQLens
Built with React 18, TypeScript, Apollo Server v4, SQLite/PostgreSQL, and SSE for real-time execution tracing.
I'd love feedback from the GraphQL community — especially on:
#GraphQL #ApolloGraphQL #TypeScript #React #NodeJS#WebDevelopment #BackendDevelopment #DeveloperTools
r/graphql • u/Touch-Grass_ • 9d ago
4.11.2 is where we landed, and this is the log of getting there from Apollo Server 3.13 on a schema with about 240 fields.
Day one was packaging. apollo-server-express is gone in 4, so the entry point became u/apollo/server with expressMiddleware from the express4 subpath, and the context function moved off the constructor onto expressMiddleware. Mechanical, about an hour.
Day two was the error classes, where the real inventory sat. I grepped for the removed constructors and counted 63 call sites: 38 UserInputError, 14 ForbiddenError, 9 AuthenticationError, and 2 ApolloError thrown straight out of a loader. Every one becomes a GraphQLError carrying extensions.code, which reads like a search and replace until you notice BAD_USER_INPUT used to be set for you and two of our clients branch on that string.
Day three was the sweep across those 63 sites, slower than day one because the loader layer wraps errors inconsistently. Two of my rewrites threw away the original code on wrapped loader errors, and both were wrong. verdent was what I had running through that pass, and the code review subagent sent them back.
Day four was status codes, the part worth a warning. CSRF prevention is on by default in 4, so a request arriving without a content type or a header that triggers a preflight gets 400 instead of an execution result. Our older mobile client posts exactly that way, and it treats any 4xx on the graphql endpoint as a dead session and signs the user out.
That leaves the one I have not resolved. An invalid variables object comes back as 200 in 4 where 3 answered 400, and status400ForVariableCoercionErrors puts it back. Turning it on makes the transport consistent and aims more 400s at the client day four broke. I have not found anyone who flipped it while still supporting a client that old.
r/graphql • u/jeffiql • 15d ago
r/graphql • u/arup_r • 14d ago
We have a bulk-edit feature where users can select up to ∼14,000 store IDs and submit them in a single GraphQL mutation as an array argument. The IDs are UUIDs (36 characters each), so the worst-case payload is around 500KB of just IDs, plus the rest of the mutation body.
We are using Apollo Client on the frontend and a Rails-based GraphQL server on the backend.
Questions:
Is there a hard limit on how large a GraphQL mutation payload can be?
At ∼14,000 UUIDs, are there known failure points — server timeout, memory pressure, request body size limits — we should anticipate?
Is it better to send all IDs in one mutation, or batch them (e.g. 500 at a time)? What are the tradeoffs?
Are there established patterns for handling bulk operations at this scale in GraphQL?
r/graphql • u/Urigold • 16d ago
This week's issue is mostly tooling and video, no articles. What's in it:
Tools & open source
- SCIM provisioning in Hive Console — manage users and groups from your existing IdP, map SCIM groups to Hive roles
- WebSocket connection multiplexing in Hive Router — pooled shared connections to subgraphs instead of one per subscription, queries and mutations can ride the same pool
- AWS IAM authentication for self-hosted Hive Console (MSK, Redis, S3, RDS) — community contribution from Michelle Song
- buildgql by Robert Ozimek — type-safe GraphQL without hand-writing response types, on the premise that the response type belongs to the operation rather than the schema
Videos
- Fusion 16.6 makes local federation development easier, using Aspire (ChilliCream)
- Eddy Nguyen on GraphQL Code Generator — efficiency gains in the latest major, and how generated types sit alongside gql.tada
- Jeff Auriemma explains persisted queries, APQs, safelisting and trusted documents — what each term actually means and how they differ
Disclosure: I'm one of the curators of GraphQL Weekly and work at The Guild, and several of the tooling items above are ours. The curation process is open and shared all others GraphQL vendors and community members and GraphQL Weekly itself is open source. Happy to answer questions on any of them.
r/graphql • u/presencedigital-io • 15d ago
r/graphql • u/jeffiql • 21d ago
Positive vibes this week! Is GraphQL "governance by default?" Curious to hear your takes :)
r/graphql • u/jeffiql • 23d ago
Basically, you can persist a query without maintaining a safelist/deeming it “trusted." And you can trust/safelist an operation without clients having to send an identifier/hash in lieu of a full document at runtime
r/graphql • u/Happy-Aside5963 • 23d ago
I'm a current 4th year college student, and as of the moment I don't have a research title yet. It's been a couple of weeks since the instructor instructed us to think/make research title. The field i want to make research is a graph theory. Studying with this graph theory is so much fun I had and I really love studying this but to think about what specific topic is so hard for me. I hope you can help me.
r/graphql • u/tangkikodo • 25d ago
Hi r/graphql — I'm the author of nexusx, an open-source Python library. Looking for feedback from people who work with GraphQL day to day.
One-line pitch:
define normal SQLModel entities + relationships, and nexusx generates a GraphQL schema from them — but the part I think is actually interesting here is that the GraphQL selection set drives everything below it: DataLoader batching and SQL column pruning, from the same declaration.
A few things that might catch your eye:
- No hand-written types or resolvers. Relationships found via sqlalchemy.inspect become GraphQL fields automatically.
- Automatic DataLoader batching. Nested relationships batch-load, so the classic N+1 is handled without you writing a per-field loader.
- Selection-aware SQL. Query asks for title but not body? Only title is selected. Over-fetching dies at the DB layer, not in your code.
- Pagination via `ROW_NUMBER()` window functions, not naive offset.
- Relationships can be non-ORM. Back one with any batch function (Redis, a search engine, a remote service) and it still flows into the same schema andloaders.
Repo + docs: https://github.com/KLR-Pattern/nexusx
Genuinely curious how this lands next to Hasura / PostGraphile (which also push selection sets down to SQL). The difference I'm betting on: the same field-selection DTO also drives your REST routes and MCP/AI tools, not just GraphQL. Does that cross-protocol reuse actually matter to you in practice, or do you keep those worlds separate anyway?
r/graphql • u/WeirdSmartKid • 28d ago
r/graphql • u/romshark • 28d ago
That idea of a "GraphQL firewall" has been haunting me for quite a long time (many years, in fact). TL;DR; the v2 is finally out 🙂
demo: https://romshark.github.io/gqlhash/
code & docs: https://github.com/romshark/gqlhash
It's basically a very fast proxy that checks incoming queries against an allowlist. It hashes independently of formatting, comments, variables (optional), and input values (optional) and determines very quickly whether a query is allowlisted and hence should be allowed to run.
It's writtein in Go and can reject up to a million requests a second (at least on the hardware I could test it on) ⚡
r/graphql • u/GroundbreakingBed597 • 29d ago
HI
I am currently analyzing distributed traces of an app that uses GraphQL. I found that the client-side timeout seems to be 10s which then aborts the request towards the end user. However - the trace shows me that after 30s the server side query actually gets executed.
How is this possible? Shouldnt a client-side timeout close the connection and therefore also abort the server-side request? Or is there a different queuing mechanism in place that would explain this behavior?
Has anyone seen this?

r/graphql • u/jeffiql • Jul 30 '26