Products · Product
GraphQL
Raised as a usability problem by 38 people on Hacker News over 10 years (2016–2025), in 32 threads.
No issue was raised by at least 3 people in 3 threads this year.
Every issue, all time, most people first
Teams spend much time on primitives, mapping and hard-to-optimise requestsUnreviewed
20162026- Generated GraphQL queries are hard to reason about and cause unpredictable database load2025-01-23
- Teams spend much time on GraphQL primitives, mapping and syntax, and hard-to-optimize requests2023-03-03
- Finds GraphQL's query syntax unintuitive and hard to follow2022-10-17
Queries are hard to write from confusing docs, harder than a plain API callUnreviewed
20162026- Querying is painful; syntax is non-intuitive and requires an extra tool2023-06-07
- Queries are hard to craft from confusing docs, harder than a plain API call2022-05-06
- Queries are impossible to write with simple tools like curl2018-08-25
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 39 complaints
- Must learn each platform's data model and figure out fields to fetch, unlike simple REST exports2025-12-15
- Generated GraphQL queries are hard to reason about and cause unpredictable database load2025-01-23
- Ends up slow, overly complicated and hard to read in the commenter's experience2024-07-17
- Deeply nested queries are rejected as too big or deep, or fail on cycles2024-07-17
- Can't see all available fields, so keeps asking the client what data exists2024-05-30
- Tooling and queries are obtuse, and mutations are the hardest part to work with2024-05-30
- Permissions handling is a nightmare; fixes broke queries and debugging was painful2024-05-30
- Client-side caching has gotchas that trip up new team members more than REST2024-05-30
- Must specify every field wanted; cannot just get the entire response back2024-04-12
- Partial failures leave frontend unsure which data is valid2023-10-11
- Single interface is complicated, and users must learn a query language just to fetch basic info2023-08-14
- Querying is painful; syntax is non-intuitive and requires an extra tool2023-06-07
- Error handling is unintuitive; errors return 200 status unless extra work done2023-06-06
- Teams spend much time on GraphQL primitives, mapping and syntax, and hard-to-optimize requests2023-03-03
- Finds GraphQL's query syntax unintuitive and hard to follow2022-10-17
- Setting it up to minimize rough edges is incredibly difficult2022-08-06
- One deeply nested restricted field fails the whole query, or forces every field to be nullable2022-08-06
- Hard to learn, poor documentation, and bugs and performance issues are hard to track down2022-05-07
- Queries are hard to craft from confusing docs, harder than a plain API call2022-05-06
- Resolver pattern is easy to misuse, and developers miss batch resolution2021-09-11
- Nested pagination is basically unsolvable in one server roundtrip and breaks under concurrent changes2021-08-14
- Codebases become a nightmare for anyone who didn't set up the system2021-07-14
- Every call goes to one POST endpoint, so requests are hard to tell apart in dev tools2020-12-16
- Developers can't tell failures apart because errors come back as 200 OK2020-11-16
- Hard to explore; must know which attributes to request before starting2020-11-07
- Needs a lot of configuration and setup to work right2020-07-22
- Very cumbersome to inject all the things needed for unit testing2020-07-08
- Hard to get started; hunting through docs to learn syntax and rules2020-04-20
- Hard to get codegen pipelines working, and tedious to keep generating query types2020-03-24
- Steep learning curve for developers building the client against GraphQL2019-06-17
- Setting up resolvers and frontend error handling wastes a lot of developer time2019-06-12
- Adds complexity making endpoints hard to manage when fields have conditional access2019-04-22
- Users must keep rewatching the video; connectors and renaming are not discoverable2018-09-22
- Lines are drawn incorrectly and node renaming gives no visible cursor2018-09-22
- Queries are impossible to write with simple tools like curl2018-08-25
- Client libraries are too complex and magical, making simple query issues hard to debug2018-07-19
- Mutations feel like an afterthought, and state, caching and performance tuning make it too complicated2018-07-16
- Whitelisting queries becomes confusing and unhelpful for the people working with it2017-10-26
- Must spell out each nesting level explicitly; cannot request arbitrary depth2016-04-27