GraphQL - From Excitement to Deception

This page summarizes the projects mentioned and recommended in the original post on /r/programming

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • prisma-relay-cursor-connection

    Extend Prisma's `findMany` method to support Relay Cursor Connections.

  • Want pagination? Use something like https://github.com/devoxa/prisma-relay-cursor-connection

  • graphql-multipart-request-spec

    A spec for GraphQL multipart form requests (file uploads).

  • Also, we manage to upload files via GraphQL just fine. Turns out nothing prevents you from putting a GraphQL query in a multipart form. Frameworks support this just fine, and if not, just write your own middleware, it's not even that hard.

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • Socket.io

    Realtime application framework (Node.JS server)

  • I kinda like Graphql, I think one of its strongest properties, is that the query semantics requires the client to be very specific on the data they want to retrieve or actions they want to perform. (for example - the client has no way to request all the properties of a type) This combined with the flexibility of the schema provide many capabilities to join or stitch multiple data sources in a way that play nicely with microservice architecture (entity can resolve multiple fields from different sources and linking is simpler). I also find subscriptions to be nicer to consume compared to using websocket directly socket.io, or SSE. While the tooling is also superb, it's also very complex, and it's not as straightforward as doing a simple POST/GET request (try composing a graphql query in the CLI, not fun....). And as mentioned in the article, the surrounding ecosystem has yet to establish strong standards in regard to schema structuring or solved cross-cutting concerns which are more trivial in REST such as security/caching/observability/quotas etc.... I also find it very challenging to implement correctly when using non-js runtime - I used Go for several services and both client and server suffered in terms of developer experience (debugging, error handling, typing, code-gen, etc...)

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts