A complete, idiomatic GraphQL implementation for Elixir with compile-time schema verification and advanced resolution features.
Absinthe is a comprehensive GraphQL implementation for the Elixir programming language. It provides a complete toolkit for building GraphQL APIs, including schema definition, query execution, and advanced features like batching and asynchronous resolution. It solves the problem of creating robust, performant GraphQL servers in Elixir with an idiomatic API.
Elixir developers building GraphQL APIs, particularly those using Phoenix or Plug frameworks who need a production-ready, spec-compliant solution with advanced features.
Developers choose Absinthe for its compile-time schema verification that prevents runtime errors, its extensible and pluggable architecture, and its focus on both developer experience and production performance within the Elixir ecosystem.
The GraphQL toolkit for Elixir
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Schemas are defined using macros that verify structure at compile-time, preventing runtime errors and boosting performance, as emphasized in the README's key features.
The entire query processing pipeline is configurable, allowing per-document customization of parsers, validations, and resolution logic for extensibility.
Supports asynchronous and batched field resolution to solve N+1 query problems, with a plugin system for further extensibility, addressing common performance issues.
Uses snake_case for schemas with automatic camelCase translation for clients, making it natural for Elixir developers while maintaining API compatibility.
Tied exclusively to Elixir and requires Elixir 1.10 or higher, limiting use in mixed-language teams or projects outside this ecosystem.
Reliance on compile-time macros for schema verification can increase build times and add complexity, which may hinder rapid development cycles.
While it supports Relay, frontend setup requires additional effort compared to more established JavaScript GraphQL clients, with fewer out-of-the-box tools.