Envelop eases by adding features such as logging, monitoring, caching, rate-limiting and error handling to your GraphQL setup, without being opinionated about your GraphQL Transport or framework.
An Envelop plugin is a small, reusable and shareable piece of code that can easily be copy-pasted from one project to another or shipped as an NPM package.
Plugins allow hooking into all GraphQL phases such as
subscribe. Envelop plugins are composable and encourage writing isolated and lightweight code.
|Hooks into "before" of all phases, and prints the execution parameters to the console using
|Hooks into "before" and "after" of all phases, measures times, and then prints them
|Hooks into "before" and "after" of the
parse phase and implements caching based on the operation string
|Hooks into all phases, execution and resolvers, and creates Spans for OpenTelemetry performance tracing
Envelop is built by the community, for the community.
As an application developer, you can leverage Envelop plugins for customizing your GraphQL execution layer based on your needs, using a wide range of already built community plugins.
As a plugin developer, you have a standardized interface for sharing plugins with others.
Whether within your company or the open-source community, Envelop allows developers to share GraphQL functionality between projects with ease.
The Envelop Plugin Hub already has a vast amount of ready-to-use plugins that solve not only common but also very specialized problems.
Envelop has been designed by The Guild for solving recurring problems in the codebases of all our customers.
Companies such as Klarna started building their GraphQL server framework using Envelop. Open-Source frameworks such as RedwoodJS (The JS App Framework for Startups) use Envelop. Envelop can be used as a meta-framework for building high-level frameworks.
The core of Envelop has zero dependencies and will only alter and wrap the GraphQL execution phases that your plugins use.
Envelop can be integrated with any GraphQL server that follows
the execution phase, as defined in the GraphQL specification (opens in a new tab)
and lets you overwrite the core
graphql-js functions (
Envelop can be used with any environment (Node.js or browser) and any GraphQL workflow (client/server, client-side, or server-to-server).
We do not aim to provide a complete, vendor lock-in suite, since we believe that developers should be able to adjust and replace any part of their application, at any time, without being blocked by upstream dependency issues or refactoring.
The core implementation of Envelop is HTTP server agnostic (in fact you can even use it without an HTTP server at all).
You can define your GraphQL schema how you like. Envelop is not your traditional framework that tries to own and is opinionated about every aspect of your GraphQL server.
Aside from having the dependency of Envelop core, plugins should be framework-agnostic.
However, if you need plugins that include specific logic for your HTTP server or schema building framework, Envelop does not stop you from doing so.