GraphQL - Diving Deep

This page summarizes the projects mentioned and recommended in the original post on dev.to

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

    GraphQL is a query language and execution engine tied to any backend service.

    Contribute to the GraphQL spec with your suggestions (Some suggestions may take years to implement even if it is good, so you may need to have a lot of patience for this)

  • graphql-landscape

    🌄Landscape for the GraphQL ecosystem

    And today, there is a GraphQL foundation which tries to ensure that GraphQL and the ecosystem thrives over time, a huge landscape of projects, a huge set of tools like this and this and these can just be few of the examples on how big the ecosystem has grown with a lot of languages, frameworks, tools supporting it as a first class citizen, so much so that even some of the huge enterprises are using it today as part of their stack.

  • 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.

  • awesome-graphql

    Awesome list of GraphQL

    And today, there is a GraphQL foundation which tries to ensure that GraphQL and the ecosystem thrives over time, a huge landscape of projects, a huge set of tools like this and this and these can just be few of the examples on how big the ecosystem has grown with a lot of languages, frameworks, tools supporting it as a first class citizen, so much so that even some of the huge enterprises are using it today as part of their stack.

  • graphql-js

    A reference implementation of GraphQL for JavaScript

    One thing to understand is that, if you are using Node.js graphql-js would typically be the underlying implementation of all libraries and ultimately everything would get converted to JS/TS objects typically an AST ultimately making all these as abstractions on top of the existing way to define schemas. Note that the implementation can differ a bit in other languages or even within Node.js if you are using other ways of implementation like graphql-jit

  • TypeScript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    If you are working with Typescript it would be better to have codegen setup as part of your workflow.

  • graphql-jit

    GraphQL execution using a JIT compiler

    One thing to understand is that, if you are using Node.js graphql-js would typically be the underlying implementation of all libraries and ultimately everything would get converted to JS/TS objects typically an AST ultimately making all these as abstractions on top of the existing way to define schemas. Note that the implementation can differ a bit in other languages or even within Node.js if you are using other ways of implementation like graphql-jit

  • prisma1

    Discontinued 💾 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL & MongoDB) [deprecated]

    Or you want to have a single ORM which closely resembles GraphQL like Prisma to integrate with multiple databases underneath

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • express-graphql

    Discontinued Create a GraphQL HTTP server with Express.

    If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here

  • postman-app-support

    Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster.

    Want to use a tool to test GraphQL endpoints? You might need something like Insomnia, Postman, Hoppscotch or VSCode REST Client

  • apollo-server

    🌍  Spec-compliant and production ready JavaScript GraphQL server that lets you develop in a schema-first way. Built for Express, Connect, Hapi, Koa, and more.

    If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here

  • jaeger

    CNCF Jaeger, a Distributed Tracing Platform

    If you want to do this on your own, you can send traces or contexts from within the resolvers using the Jaeger/Opentelemetry SDKs and send all the information manually for tracing.

  • graphql-tools

    :wrench: Utility library for GraphQL to build, stitch and mock GraphQL schemas in the SDL-first approach

    Yes. GraphQL Tools (which was initially from Apollo and then taken over by the Guild) is one of those libraries which I highly recommend. You can do a lot of operations on your SDL or schema like merging multiple schemas, mocking your schemas with test data, building custom directives, loading remote schemas and so on which you can add as part of your stack.

  • mercurius

    Implement GraphQL servers and gateways with Fastify

    If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here

  • Gatsby

    The best React-based framework with performance, scalability and security built in.

    One of the great examples of real-world implementation of this would be Gatsby where irrespective of the source of data, everything ultimately gets converted to GraphQL with plugins which can then be used in your workflow.

  • graphql-helix

    A highly evolved GraphQL HTTP Server 🧬

    If you are using Node.js there are a lot of implementations of GraphQL servers with a few being express-graphql, apollo-server, mercurius, graphql-helix and more. And if you are using other languages, you can see a great list here

  • Express

    Fast, unopinionated, minimalist web framework for node.

    Do you use express as your framework? Use express-graphql

  • node-graphql-benchmarks

    Benchmarks for different Node.js GraphQL Servers

    And infact, if you are keen on understanding how every graphql-server performs, I would recommend checking out this

  • fast

    The adaptive interface system for modern web experiences.

    Using vanilla JS or TS or using web components and want to have a framework-independent way of doing things? You can stick to the GraphQL codegen itself since it takes care of almost everything underneath. Or if you want, you can also use Apollo Client’s vanilla version @apollo/client/core. Apollo Elements does come with support for a lot of webcomponent libraries like Lit, Fast and Gluon or even without any of it and hence is quite flexible.

  • apollo-ios

    📱  A strongly-typed, caching GraphQL client for iOS, written in Swift.

    Apollo Client does have a good integration with these frameworks including React, iOS and Android — so, you might want to check that out

  • graphql-typed-document-node

    An improved version of `DocumentNode` for seamless TypeScript integration for GraphQL.

    Want to generate Typescript objects based on GQL documents? You can try out Typed Document Node

  • graphql-inspector

    🕵️‍♀️ Validate schema, get schema change notifications, validate operations, find breaking changes, look for similar types, schema coverage

    If you want to validate your schema as and when you push to Version control to maintain sanity, setup something like GraphQL Inspector locally and in your CI/CD pipelines to maintain your sanity. If you use the Apollo ecosystem, it comes inbuilt in the Apollo Studio or the CLI tools which it gives you.

  • apollo-android

    :robot:  A strongly-typed, caching GraphQL client for the JVM, Android, and Kotlin multiplatform.

    Apollo Client does have a good integration with these frameworks including React, iOS and Android — so, you might want to check that out

  • graphql-eslint

    ESLint parser, plugin and set rules for GraphQL (for schema and operations). Easily customizable with custom rules. Integrates with IDEs and modern GraphQL tools.

    Want to have ESLint support to enforce standards and maintain sanity across your team, try something like GraphQL ESLint and set it up with your preferred conventions.

  • apollo-elements

    🚀🌛 Use the Launch Platform 👩‍🚀👨‍🚀

    Using vanilla JS or TS or using web components and want to have a framework-independent way of doing things? You can stick to the GraphQL codegen itself since it takes care of almost everything underneath. Or if you want, you can also use Apollo Client’s vanilla version @apollo/client/core. Apollo Elements does come with support for a lot of webcomponent libraries like Lit, Fast and Gluon or even without any of it and hence is quite flexible.

  • gluonjs

    A lightweight Web Component base

    Using vanilla JS or TS or using web components and want to have a framework-independent way of doing things? You can stick to the GraphQL codegen itself since it takes care of almost everything underneath. Or if you want, you can also use Apollo Client’s vanilla version @apollo/client/core. Apollo Elements does come with support for a lot of webcomponent libraries like Lit, Fast and Gluon or even without any of it and hence is quite flexible.

  • TypeGraphQL

    Create GraphQL schema and resolvers with TypeScript, using classes and decorators!

    Or do you want to directly code the schema in Typescript and maintain strict types? Try Typegraphql

  • graphql-request

    Minimal GraphQL client

    Or if you are looking for a minimal client which runs both in the Browser and Node, you can try GraphQL Request

  • react-relay

    Relay is a JavaScript framework for building data-driven React applications.

    Using React? Relay can be a great choice

  • opentelemetry-specification

    Specifications for OpenTelemetry

    If you want to do this on your own, you can send traces or contexts from within the resolvers using the Jaeger/Opentelemetry SDKs and send all the information manually for tracing.

  • Neo4j

    Graphs for Everyone

    Neo4j has a GraphQL adapter

  • dataloader

    DataLoader is a generic utility to be used as part of your application's data fetching layer to provide a consistent API over various backends and reduce requests to those backends via batching and caching.

    While GraphQL is really promising and helpful, you have to understand that like any technology or framework, it does come with its own set of problems, most of which have already been addressed. For instance you might have heard about the N+1 problem, lack of caching, Query cost and complexity and so on and these have been addressed by some projects like the Dataloader, Persisted Queries, Caching and more which you can setup depending on your needs.

  • lit-element

    LEGACY REPO. This repository is for maintenance of the legacy LitElement library. The LitElement base class is now part of the Lit library, which is developed in the lit monorepo.

    Using vanilla JS or TS or using web components and want to have a framework-independent way of doing things? You can stick to the GraphQL codegen itself since it takes care of almost everything underneath. Or if you want, you can also use Apollo Client’s vanilla version @apollo/client/core. Apollo Elements does come with support for a lot of webcomponent libraries like Lit, Fast and Gluon or even without any of it and hence is quite flexible.

  • Gitlab GraphQL Explorer

  • graphql-apis

    📜 A collective list of public GraphQL APIs

    You can have a look at more like these here and play around with it.

  • graphql-shield

    🛡 A GraphQL tool to ease the creation of permission layer.

    You can also use libraries like GraphQL Shield which offers powerful middlewares to do this. But remember that authorization does come with attached cost since you are running a specific logic in/before your resolvers for all the fields which you want to authorize.

  • opentelemetry-js-contrib

    OpenTelemetry instrumentation for JavaScript modules

    Opentelemetry has recently made support for GraphQL available. You can find it here

  • graphql-cost-analysis

    A Graphql query cost analyzer.

    Another way is to use custom cost directives as in this package manually specifying the complexity and cost and using that to bill your APIs

  • frank_jwt

    JSON Web Token implementation in Rust.

    While the GraphQL spec itself does not recommend any specific way to do this and leaves it to the person implementing it, you can either use JWT, Cookies, Sessions and so on like you normally would when authenticating through other mechanisms.

  • insomnia

    The open-source, cross-platform API client for GraphQL, REST, WebSockets, SSE and gRPC. With Cloud, Local and Git storage.

    Want to use a tool to test GraphQL endpoints? You might need something like Insomnia, Postman, Hoppscotch or VSCode REST Client

  • Postwoman

    👽 Open source API development ecosystem - https://hoppscotch.io

    Want to use a tool to test GraphQL endpoints? You might need something like Insomnia, Postman, Hoppscotch or VSCode REST Client

  • Hasura

    Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.

    Hasura provides a GraphQL abstraction on top of your datasources

  • gRPC

    The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

    In summary, all of them are different. HTTP is a protocol by itself and does not define about the structure of the data transmitted via HTTP itself (The latest version is http 3) , GRPC uses protocol buffers to sends packets using http 2 as the protocol (and in the future can extend to use http 3 as well) and is often used for inter-service communications and GraphQL has nothing to do with the transport layer at all. It is just a specification for structuring and transmitting data to and fro different locations and it does not even matter even if you compress, encrypt or do anything with the queries and mutations as long as you have a logic to decompress or decrypt them on the server side. So, in summary they serve different purposes.

  • graphql-code-generator

    A tool for generating code based on a GraphQL schema and GraphQL operations (query/mutation/subscription), with flexible support for custom plugins.

    For instance, there are some amazing projects from The Guild like GraphQL Codegen which we can use for generating types based on our local/remote schema with great Typescript integration, and you have a lot of plugins/recepies you can use along with it as well.

  • dgraph

    The high-performance database for modern applications

    Dgraph has a native GraphQL implementation

  • Visual Studio Code

    Visual Studio Code

    If you are using VSCode and are looking to enable syntax highlighting, validation, autocomplete, code-completion and so on, you can try using either VSCode GraphQL or Apollo GraphQL depending on which suits you better.

  • graphql-voyager

    🛰️ Represent any GraphQL API as an interactive graph

    Introspection is typically used by the tooling to understand your GraphQL types and schema. For instance, tools like GraphQL Voyager can introspect your schema and build amazing graphs, and almost all extensions built around GraphQL leverage this power to understand your schema, types and everything around it.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

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