graphql-helix VS giraphql

Compare graphql-helix vs giraphql and see what are their differences.

graphql-helix

A highly evolved GraphQL HTTP Server 🧬 (by contra)

giraphql

GiraphQL is library for creating GraphQL schemas in typescript using a strongly typed code first approach (by hayes)
Our great sponsors
  • SonarQube - Static code analysis for 29 languages.
  • OPS - Build and Run Open Source Unikernels
  • Scout APM - Less time debugging, more time building
graphql-helix giraphql
14 6
609 372
14.3% -
9.1 9.6
1 day ago 6 days ago
TypeScript TypeScript
MIT License ISC License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

graphql-helix

Posts with mentions or reviews of graphql-helix. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-12-12.
  • What's next?
    5 projects | reddit.com/r/graphql | 12 Dec 2021
    E.g. recently I found Graphql-helix, replaced apollo-server-micro with it and had never looked back ever since (incl. subscriptions), what else could be done better? Also in terms of DX
    5 projects | reddit.com/r/graphql | 12 Dec 2021
    Looks interesting, have you tried graphql-helix?
  • When to use multiple endpoints in GraphQL
    1 project | dev.to | 10 Dec 2021
    When using a JavaScript server, a convenient way to achieve this is with GraphQL Helix, which decouples the handling of the HTTP request from the GraphQL server. With Helix, we can have the routing logic be handled by a Node.js web framework (such as Express.js or Fastify), and then — depending on the requested path (i.e., the requested endpoint — we can provide the corresponding schema to the GraphQL server.
  • a first look at graphQL helix
    6 projects | dev.to | 20 Sep 2021
    GraphQL Helix is a framework and runtime agnostic collection of utility functions for building your own GraphQL HTTP server. Instead of providing a complete HTTP server or middleware plugin function, GraphQL Helix only provides a handful of functions for turning an HTTP request into a GraphQL execution result. You decide how to send back the response.
  • Introducing Envelop - The GraphQL Plugin System
    12 projects | dev.to | 29 Jul 2021
    import { envelop, useSchema, useLogger } from '@envelop/core'; import fastify from 'fastify'; import { processRequest, getGraphQLParameters } from 'graphql-helix'; // This creates the `getEnveloped` function for us. Behind the scense the wrapped functions are created once, here. const getEnveloped = envelop({ plugins: [useSchema(schema), useLogger()], }); const app = fastify(); app.route({ method: ['POST'], url: '/graphql', async handler(req, res) { // Here we can pass the request and make available as part of the "context". // The return value is the a GraphQL-proxy that exposes all the functions. const { parse, validate, contextFactory, execute, schema } = getEnveloped({ req, }); const request = { body: req.body, headers: req.headers, method: req.method, query: req.query, }; const { operationName, query, variables } = getGraphQLParameters(request); // Here, we pass our custom functions to Helix, and it will take care of the rest. const result = await processRequest({ operationName, query, variables, request, schema, parse, validate, execute, contextFactory, }); if (result.type === 'RESPONSE') { res.status(result.status); res.send(result.payload); } else { // You can find a complete example with Subscriptions and stream/defer here: // https://github.com/contrawork/graphql-helix/blob/master/examples/fastify/server.ts res.send({ errors: [{ message: 'Not Supported in this demo' }] }); } }, }); app.listen(3000, () => { console.log(`GraphQL server is running...`); });
  • Subscriptions and Live Queries - Real Time with GraphQL
    5 projects | dev.to | 29 Jul 2021
    Fortunately, we now have libraries like Graphql Helix, which, in my humble opinion, should replace express-graphql as the reference HTTP implementation since GraphQL Helix is also not tied to any web server framework.
  • GraphQL - Diving Deep
    47 projects | dev.to | 29 Jul 2021
    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
  • The Stack #1
    9 projects | dev.to | 29 Jul 2021
    Graphql Helix
  • The Stack #2
    13 projects | dev.to | 29 Jul 2021
    In the previous blog, we had started going through "The GraphQL Stack" that we use at Timecampus going through various libraries and tools like VSCode, GraphQL Config, VSCode GraphQL, GraphQL ESLint, GraphQL Inspector, Typescript, GraphQL Helix and GraphQL Codegen. In this blog, we will continue our journey exploring from where we left off.
  • Need guidance on apollo subscription fallback
    4 projects | reddit.com/r/graphql | 16 May 2021
    If you want to do GraphQL subscriptions over HTTP you should look into graphql-helix (https://github.com/contrawork/graphql-helix), which gives you a generic interface for doing subscriptions over HTTP SSE (Server Side Events). graphql-helix can be used with any http transport.

giraphql

Posts with mentions or reviews of giraphql. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-05-19.
  • How do you test your graphql on the server?
    1 project | reddit.com/r/graphql | 26 Jul 2021
    Here is an example: https://github.com/hayes/giraphql/blob/main/packages/plugin-dataloader/tests/index.test.ts
  • What do you think about nexus? I'm new at this and wondering if I should use it in my project.
    3 projects | reddit.com/r/graphql | 19 May 2021
    There are multiple ways available of constructing a graphql schema. Usually, you can break down those into "SDL" First and "Code" First. A simple example of a Code First approach is the programmatic graphql.js API using `new GraphQLObjectType`. You define your schema with code. In an SDL First approach, you write your schema in the GraphQL SDL (as text) and define a resolver map. You can find some examples over here: https://graphql.org/graphql-js/constructing-types/ A lot of tooling has emerged of those two methods of building GraphQL schemas and you usually have to choose whether you wanna stick to Code First or SDL First. Tools like gqtx (https://github.com/sikanhe/gqtx), giraphql (https://github.com/hayes/giraphql), and nexus (https://github.com/graphql-nexus/nexus) are built around the Code First approach and improve the developer experience over the programmatic API form graphql.js by providing a more type-safe API when utilizing TypeScript. They ultimately all do the same, with slightly (more or less opinionated) different APIs. On the other hand tooling for SDL has also evolved. graphql-tools provides a more advanced interface over how you define the resolvers map and a lot of utilities for constructing your schema from SDL/resolver map partials distributed across different files (https://www.graphql-tools.com/docs/generate-schema/). Together, with graphql-codegen resolver type generation (https://www.graphql-code-generator.com/docs/plugins/typescript-resolvers) you can bring this to the next level if you are working with TypeScript and generate fully typed resolvers from the GraphQL SDL. You have to find out for yourself which approach is best suited for you. I have been using both on different projects and they both have benefits and trade-offs. My opinion is mostly based on the TypeScript developer experience. Code First seems to be the better pick for me if you have lots of computed fields that cannot be mapped 1:1 to the data sources, where you would have to add a lot of type resolver mappings configuration for codegen. With SDL I like that I have the feeling that I can write the schema faster and less clumsy, and the SDL is immediately readable. On Code First you, however, can still generate an SDL file from the coding schema. Maybe there is a niche open for an approach that combines Code and SDL First approaches. We will have to see what the future brings. Here are some more articles/threads regarding the topic: https://www.prisma.io/blog/the-problems-of-schema-first-graphql-development-x1mn4cb0tyl3 https://www.reddit.com/r/graphql/comments/fpkx7a/codefirst\_vs\_schemafirst\_development/ https://blog.logrocket.com/code-first-vs-schema-first-development-graphql/ Also, note that most GraphQL server/transports do or should not care about the way you construct your schema. E.g. the apollo-server docs show you only an SDL first way of constructing the schema (https://www.apollographql.com/docs/apollo-server/schema/schema/), but it is also possible to provide a schema instance(https://www.apollographql.com/docs/apollo-server/api/apollo-server/#schema). apollo-server defaults to advocating creating a schema with SDL (by using an old [email protected] version under the hood).
    3 projects | reddit.com/r/webdev | 18 May 2021
    Tools like gqtx (https://github.com/sikanhe/gqtx), giraphql (https://github.com/hayes/giraphql), and nexus (https://github.com/graphql-nexus/nexus) are built around the Code First approach and improve the developer experience over the programmatic API form graphql.js by providing a more type-safe API when utilizing TypeScript. They ultimately all do the same, with slightly (more or less opinionated) different APIs.
  • What are your thoughts on Next/Apollo/Prisma stack? Should I use it for my project (see details in the description)? Can you share some advice?
    6 projects | reddit.com/r/webdev | 14 May 2021
    You will also have to figure out which schema generation flow suits you best. E.g. you can use the programatic API from graphql-js, makeExecutableSchema from graphql-tools https://www.graphql-tools.com/docs/generate-schema/ or code schema builders like https://github.com/sikanhe/gqtx or https://github.com/hayes/giraphql
  • GiraphQL: a plugin based schema builder for creating code-first GraphQL schemas in typescript
    1 project | reddit.com/r/graphql | 10 Apr 2021
  • Nexus and directive
    2 projects | reddit.com/r/graphql | 29 Mar 2021
    The actual implementation is almost laughably simple, it's just getting the types right that is a bit of a pain: https://github.com/hayes/giraphql/blob/main/packages/plugin-directives/src/index.ts

What are some alternatives?

When comparing graphql-helix and giraphql you can also consider the following projects:

mercurius - Implement GraphQL servers and gateways with Fastify

graphql-ws - Coherent, zero-dependency, lazy, simple, GraphQL over WebSocket Protocol compliant server and client.

graphql-jit - GraphQL execution using a JIT compiler

envelop - Envelop is a lightweight library allowing developers to easily develop, share, collaborate and extend their GraphQL execution layer. Envelop is the missing GraphQL plugin system.

nestjs-graphql - GraphQL (TypeScript) module for Nest framework (node.js) 🍷

prisma1 - 💾 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL & MongoDB)

node-graphql-benchmarks - Benchmarks for different Node.js GraphQL Servers

graphql-yoga - 🧘 Rewrite of a fully-featured GraphQL Server with focus on easy setup, performance & great developer experience. The core of Yoga implements W3C Fetch API and can run/deploy on any JS environment.

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

express-graphql - Create a GraphQL HTTP server with Express.

nexus - Code-First, Type-Safe, GraphQL Schema Construction

graphql-upload - Middleware and an Upload scalar to add support for GraphQL multipart requests (file uploads via queries and mutations) to various Node.js GraphQL servers.