// the find
absinthe-graphql/absinthe
The GraphQL toolkit for Elixir
Absinthe is the GraphQL server library for Elixir, providing schema definition, query execution, and subscription support built on top of Phoenix and Plug. It's for Elixir/Phoenix teams building a GraphQL API rather than REST, especially ones that also want real-time subscriptions.
Schemas are Elixir macros checked at compile time, so a typo in a field or type reference fails the build instead of surfacing as a runtime 500. The middleware/plugin system lets you swap out individual pipeline phases (parsing, validation, resolution) per-document, which is unusual flexibility compared to most GraphQL server libraries. Built-in dataloader-style batching addresses N+1 resolution without bolting on a separate library, and subscriptions are a first-class part of the core rather than an add-on package.
It's Elixir-only, so there's no path here if your stack is polyglot and you need the schema logic shared outside the BEAM. The learning curve is steep if you're coming from schema-first tools like graphql-js or Hot Chocolate — the macro-heavy, pipeline-phase model takes a while to click, and debugging a custom pipeline phase means reading Absinthe's own source. Subscriptions require Phoenix PubSub wiring, which is fine if you're already on Phoenix but adds setup friction if you're using Absinthe standalone with Plug.