dotansimha/graphql-yoga

V2 Roadmap

saihaj opened this issue · 7 comments

We are excited to announce the development of the next major version for graphql-yoga. The goal is to provide a fully-featured, simple to set up, performant and extendable server. Some key features:

  • GraphQL-over-HTTP spec compliant
  • Extend the GraphQL request flow using envelop
  • File uploads (via GraphQL multipart request specification)
  • GraphQL Subscriptions (using SSE)
  • Logging using Pino
  • Improved TypeScript Support
  • Try out experimental GraphQL features such as @defer and @stream

We triaged all the current open issues into different categories and tried to address all of them. Let us know if we missed something or if there is something else you would like to see and we can make it happen!

Configurability/Extensibility

Real-time capabilities

Uploads

Testing

Improved TypeScript support

ESM Support

Serverless Support

Misc

Future releases

  • Allow using with Deno and Cloudflare workers with no additional configs
  • Improved development workflow with GraphQL CLI
  • Starter projects supporting different styles to create schemas
  • Support different storage providers for uploads
  • Enhanced Plugin System that extends the base envelop plugin system and allows fully async parse/validate hooks + also hooking into beforeParseRequest/postParseRequest and preSendResponse/postSendResponse

This is really good news!!!😍😍😍
Just for my curiosity when are we going to expect the new version?

@shamxeed Can't promise an exact date yet I have updated the list above with all things that we have landed so far to master and some are WIP and then need to write docs and example for things we have implemented.

Hi I'm looking around for the graphQL server, and looking at all the graphQl tools that The Guild offers, I see that there is also a GraphQL Helix server.
Can you please explain the differences between the two?
I see that graphql-yoga has a dependency on a forked version of the helix server.

Hey @ivandotv 👋🏼 great question we will also add this to our website explaining in more detail.

Difference between GraphQL Helix and GraphQL Yoga?

Helix is an extensible, framework and runtime agnostic GraphQL Server. Helix is an abstraction that all GraphQL HTTP server need. It lets you implement the features you want and the full control of the transport layer.

GraphQL Yoga is a fully-featured server focusing on easy setup and performance. It is built-on top of GraphQL Helix and Envelop. It comes with defaults that we use and believe are needed in a production ready GraphQL server. Yoga provides a cross-platform server that you can just deploy anywhere Deno, CloudFlare workers, Next.js or just a standalone http server. If you are migrating from some HTTP framework you can easily integrate. We try to keep it very simple to deploy @graphql-yoga/core is the package you can use to deploy anywhere and no additional config is needed. graphql-yoga is Node specific package which is just built on top of @graphql-yoga/core which is runtime agnostic and ready to use server.

How did we do this? see next answer

Why does graphql-yoga use forked version helix?

We are currently working on v2 for helix. We are working on creating agnostic HTTP handler using fetch API's Request and Response objects. Except Node.js all the new major runtimes support this out of the box. We are still actively working on the API and getting upstream means we go through the proper review cycle and testing. To get little more control how frequent we can release and so we can just upgrade and test out in yoga we think it is better to use the forked version for now while we work on finalizing all the details upstream in helix for the next release.

Been using GraphQL EZ for a while.
What's the difference?

Hey @RicardoValero95 👋🏼

Been using GraphQL EZ for a while.
What's the difference?

GraphQL EZ is a plug-in based server. It is also built on top of envelop. It’s lifecycle methods allow you to hook into different phases of the HTTP request. It also supports multiple deploy targets but it has a separate package for each handler.

Yoga is same in the sense that it is also built on top of envelop. Yoga comes with some built in defaults which we think are necessary for a production server whereas EZ doesn’t have any opinions. EZ’s lifecycle method allow for a very powerful plug-in system which is something we are also working on designing for yoga. Yoga supports multiple deploy targets but doesn’t require any extra configuration. Yoga’s handler are built on top of W3C fetch API which allow us to support any environment, in node we just need to add polyfills (but soon we won’t even need that).

Urigo commented

V 2.0 has been released!!!

Help us spread the word!
Announcement and blog post