Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V2 Roadmap #704

Closed
27 of 32 tasks
saihaj opened this issue Dec 5, 2021 · 7 comments
Closed
27 of 32 tasks

V2 Roadmap #704

saihaj opened this issue Dec 5, 2021 · 7 comments

Comments

@saihaj
Copy link
Collaborator

saihaj commented Dec 5, 2021

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
@shamxeed
Copy link

shamxeed commented Dec 7, 2021

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

@saihaj
Copy link
Collaborator Author

saihaj commented Dec 11, 2021

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

@ivandotv
Copy link

ivandotv commented Dec 18, 2021

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.

@saihaj
Copy link
Collaborator Author

saihaj commented Dec 19, 2021

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.

@ricardo-valero
Copy link

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

@saihaj
Copy link
Collaborator Author

saihaj commented Feb 1, 2022

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
Copy link
Collaborator

Urigo commented Mar 29, 2022

V 2.0 has been released!!!

Help us spread the word!
Announcement and blog post

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants