Explain GraphQL code

Paste a GraphQL query and Vibe explains what it asks the server for: which fields come back, what each variable and argument does and how a fragment fits in.

query.graphql

Up to 1,500 characters (about 60 lines). Your code is sent to Unvibe and Anthropic to write the explanation. Don't paste keys or passwords. Common key formats are refused.

Vibe22 lines selected

Press Explain it for the sample, or paste your own code first.

What this GraphQL sample shows

fields
A query lists the fields it wants, and the reply has the same shape with only those fields. Run against a test schema, each order came back with just id, total, customer.name and items; asking for only id returned { "id": "1001" } and nothing else.
variables and defaults
$status and $first are filled in from a separate JSON object sent with the query. Int! means required, and = OPEN is a default: with only {"first": 2}, the reply held two open orders, 1001 and 1003, and skipped the shipped 1002. Sending "status": "SHIPPED" returned 1002.
arguments
Values in parentheses after a field, such as orders(status: $status, first: $first), are arguments the server uses to pick what to return. Here they filter by status and cap how many orders come back.
fragments
fragment UserBits on User is a reusable list of fields for a User, and ...UserBits pastes it in. me came back with name and email, as if they were written there.

Good to know

  • Run with graphql-js 17.0.2 against a small test schema of orders, items and users, with made-up data.
  • The server checks every field name: asking for price gave Cannot query field "price" on type "Order".
  • A field that holds an object needs its own list of fields. customer on its own gave Field "customer" of type "User!" must have a selection of subfields. Did you mean "customer { ... }"?
  • A field without ! in the schema can come back null: the second customer's email did.

Watch out: A required variable left out stops the whole query. Sent without $first, it returned no data, only Variable "$first" has invalid value: Expected a value of non-null type "Int!" to be provided. Enum values are case-sensitive too: "shipped" was refused with Did you mean the enum value "SHIPPED"?

Explain GraphQL code beside your editor

Unvibe is a free app for Mac and Windows. In the app there is no pasting: select code in any app and press Control+U (Ctrl+Alt+U on Windows).

Install on Mac

curl -fsSL https://unvibe.site/install.sh | bash

Paste into Terminal. Unvibe isn't notarized by Apple yet, so this is the smooth path.

Opening the .dmg the first time
  1. Open the .dmg and drag Unvibe to Applications.
  2. Open it once; macOS says it can't verify it. Click Done.
    macOS dialog: Unvibe Not Opened, with Done and Move to Trash
    Real screen, macOS 15
  3. System Settings › Privacy & Security › Open Anyway. Confirm, then enter your Mac password. The button shows for about an hour after you try to open Unvibe.
    macOS Privacy & Security, Security section: Unvibe was blocked to protect your Mac, with the Open Anyway button
    Real screen, macOS 15

The Terminal line checks the download against the published SHA-256 and Unvibe's self-signed signature before it installs anything. More help with the first open