Self-published, so the page setting is a little strange (I suspect LaTeX) and the text could have used some editing. Switching between first person (we) and second person (you) within the same paragraph forces mental switching on the part of the reader that is not necessary. Giroux should decide if he is with the reader (first person, we) or if he's only talking at them (second person, you), and stick with it. A good editor would have caught this and they would have made the prose tighter. But the author did build GraphQL APIs at Spotify and GitHub, so he knows the material otherwise.
Giroux advocates for building APIs that are as specific as possible, instead of generic ones. Especially when it comes to mutations. The more specific the better.
There is a complex description of cursor-based pagination as opposed to the more common pagination using an offset. The former are more resilient to cases where data gets added or removed in the middle of lists while the end-users are paging through them.
There is an interesting bit about how to deal with errors. The author distinguishes between client errors, essentially protocol errors, and user errors, errors in the business logic. E.g., email already in use, password too weak.
The author acknowledges that GraphQL still needs to grow in a few areas. Companies use it mostly for internal, private APIs. Best practices around error messages and observability (tracing, rate limiting, etc.) are still emerging. When you build a GraphQL client against a published API, you still need to learn the specific ways that API does everything besides queries and mutations.
Giroux provides a code example for schema stitching, which is deprecated, but not for a federated schema, which is an emerging technology. It would have been nice to look at both options side-by-side and show how federation handles some of the limitations of stitching. The Apollo federation equivalent would have been even shorter than the schema stitching code example.
The chapter on documentation is great. The advice is: Don't just provide a dictionary of types and fields. Also provide examples that show how these things can work together to solve problems. Maybe even provide high-level examples that solve business problems using multiple parts of your API.
When the author presents his preferred workflow, it is front-loaded with a lot of analysis. You craft the schema carefully before you implement it, and gather a lot of feedback from beta clients before final publication. This is very much a waterfall process and it does not work well in practice. You need to put things in the hands of users to see how they will use them. There is only so much you can really anticipate, or that the users can tell you ahead of time. We need a technology that can operate in tight feedback cycles and evolve with guidance from real world usage.
At the end of the chapter on versioning, the advice is again big-design-up-front. Giroux is quick to point out the risks of breaking existing clients, but there are also risks to having an API that stagnates and customer features that are not being built in a timely manner. It's a tough act to balance and Giroux's presentation felt one-sided.