Absinthe support for the Relay framework

Latest version: 1.2.1 registry icon
Maintenance score
Safety score
Popularity score
Check your open source dependency risks. Get immediate insight about security, stability and licensing risks.
Version Suggest Low Medium High Critical
1.2.1 0 0 0 0 0
1.2.0 0 0 0 0 0

Latest release:

1.2.1 - This version may not be safe as it has not been updated for a long time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform


Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.

BSD-3-Clause   -   BSD 3-Clause "New" or "Revised" License

Not a wildcard

Not proprietary

OSI Compliant


Build Status Version Hex Docs Download License Last Updated

Support for the Relay framework from Elixir, using the Absinthe package.


Install from Hex.pm:

def deps do
    {:absinthe_relay, "~> 1.5.0"}

Note: Absinthe.Relay requires Elixir 1.11 or higher.


See CHANGELOG for upgrade steps between versions.

You may want to look for the specific upgrade guide in the Absinthe documentation.


See "Usage," below, for basic usage information and links to specific resources.

Related Projects

See the GitHub organization.


Schemas should use Absinthe.Relay.Schema, optionally providing what flavor of Relay they'd like to support (:classic or :modern):

defmodule Schema do
  use Absinthe.Schema
  use Absinthe.Relay.Schema, :modern

  # ...


For a type module, use Absinthe.Relay.Schema.Notation

defmodule Schema do
  use Absinthe.Schema.Notation
  use Absinthe.Relay.Schema.Notation, :modern

  # ...


Note that if you do not provide a flavor option, it will choose the default of :classic, but warn you that this behavior will change to :modern in absinthe_relay v1.5.

See the documentation for Absinthe.Relay.Node, Absinthe.Relay.Connection, and Absinthe.Relay.Mutation for specific usage information.

Node Interface

Relay requires an interface, "Node", be defined in your schema to provide a simple way to fetch objects using a global ID scheme.

See the Absinthe.Relay.Node module documentation for specific instructions on how do design a schema that makes use of nodes.


Relay uses Connection (and other related) types to provide a standardized way of slicing and paginating a one-to-many relationship.

Support in this package is designed to match the Relay Cursor Connection Specification.

See the Absinthe.Relay.Connection module documentation for specific instructions on how do design a schema that makes use of nodes.


Relay supports mutation via a contract involving single input object arguments (optionally for Relay Modern) with client mutation IDs (only for Relay Classic).

See the Absinthe.Relay.Mutation module documentation for specific instructions on how to design a schema that makes use of mutations.

Supporting the Babel Relay Plugin

To generate a schema.json file for use with the Babel Relay Plugin, run the absinthe.schema.json Mix task, built-in to Absinthe.

In your project, check out the documentation with:

mix help absinthe.schema.json


The project is under constant improvement by a growing list of contributors, and your feedback is important. Please join us in Slack (#absinthe-graphql under the Elixir Slack account) or the Elixir Forum (tagged absinthe).

Please remember that all interactions in our official spaces follow our Code of Conduct.


Please follow contribution guide.