I re-learned GraphQL last quarter. Nested fields, __typename, the difference between a query and a mutation. I shipped a feature, felt sharp for about two weeks, then the next sprint started and half the schema had fallen out of my head again.
If that sounds familiar, you're not broken. GraphQL shows up in bursts. You touch it hard for a month, then you don't write a single operation until the next API surface lands. Syntax fades. The mental model fades faster if you never practice retrieving it.
What sticks vs what evaporates
Raw syntax is the easy part to look up. Curly braces, arguments, aliases. Your editor and the GraphiQL playground will remind you how to shape a selection set.
What evaporates is the model underneath.
A query reads. A mutation writes, or at least triggers a side effect. I treat them like GET vs POST with a typed contract, not two flavors of the same call. The schema is the API: types, fields, arguments, and what can be null. If you don't know the types, you're guessing at the wire format.
Nested fields are intentional. You ask for user { posts { title } } because the graph lets you walk relationships in one round trip. That only helps if you remember which edges exist. Resolvers do the work on the server. Clients never see them, but forgetting that a field can be expensive still bites you when you over-fetch.
I used to bookmark three "GraphQL for beginners" posts and call that learning. Bookmarks don't quiz you. Three months later I'd open one, skim the same intro diagram, and still blank on whether input types belong on queries or only on mutations.
A practice loop that survives the next project
Skip the 40-video playlist until you've done this once with a real API.
1. Query one real schema. Pick a public GraphQL endpoint or your team's staging playground. Write a query by hand that returns something you care about. Example shape:
query ViewerRepos {
me {
id
name
posts(first: 3) {
edges {
node {
title
publishedAt
}
}
}
}
}
Don't paste from a tutorial. Type it. Break it. Read the error. That friction is the lesson.
2. Write the types yourself once. For that same shape, sketch the TypeScript (or whatever you use) types before codegen saves you:
type Post = { title: string; publishedAt: string };
type User = { id: string; name: string; posts: { edges: { node: Post }[] } };
You're not replacing the schema. You're forcing your brain to name the graph. When codegen later spits out the real types, you'll notice mismatches instead of accepting them blindly.
3. Add one mutation on purpose. Something small: create a note, update a status, leave a reaction. Notice how the input object and the return type differ from a query. Write one sentence in your own words: "Mutations take an input type and return a payload type; queries usually take args on the field."
4. Revisit on a schedule. Close the docs. Ask yourself out loud: What's the difference between a field argument and an input type? Why might user.posts be a connection with edges instead of a bare array? What does a nullable field mean for your UI?
Wrong answers are useful. They show which part of the model is still mushy. Right answers that took twenty seconds of staring count too.
Do that loop once per GraphQL surface you care about. Leave a tiny cheat sheet: three example operations, the main types, and one note about auth headers or persisted queries if your stack uses them. Open that sheet before the next sprint instead of opening a new "intro to GraphQL" video.
Where tools help (so the loop doesn't die in a tabs folder)
The first afternoon is easy. Week six is harder, when you've been in React Native or a Postgres migration and GraphQL is cold again.
When a docs page, conference talk, or blog post finally clicks, save it somewhere that will bring it back as a question, not another unread bookmark. I use Recl for that. Share a GraphQL tutorial, YouTube talk, or schema design post into it, get a short TL;DR and key takeaways, and let spaced-repetition recall nudges ask "still remember this one?" later. The Chrome extension (Ctrl/Cmd+Shift+S) is handy when you're mid-docs and don't want to leave the tab. Sunday's weekly quiz is a decent forcing function if your team only ships GraphQL work every other month.
Same idea works without any particular app: capture the explanation in your words, tag it under a GraphQL topic, and schedule a revisit. The point is retrieval practice on the schema model, not another passive skim of the Apollo docs.
If you already keep saves in one library, asking that library "what's the difference between a query and a mutation in our API?" only helps when the source material is actually there. Recl's library is one place those GraphQL saves can live next to each other; a well-tagged folder beats twelve forgotten browser tabs either way.
One next step
Before you close this tab, open a playground and write one query against a real schema without copying. Then write three quiz questions for yourself about that schema's types. Answer them again in a week with the docs closed.
That's how GraphQL stops being something you re-learn every sprint and starts being something you can still sketch on a whiteboard after the feature ships.
Asutosh builds Recl, an app for saving what you learn and remembering it later. Summaries, library topics, and spaced recall for the GraphQL docs and talks you'd otherwise forget between projects.


Top comments (0)