Edges is just a wrapper around the real results that adds extra data used for slicing the result cursor

(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at: lawrence@krubner.com

I think the “edges” and “nodes” terminology is one of the most confusing things about React / Relay / GraphQL, at least at first:

Relay connection defines a relationship an an object that has two root fields: edges and pageInfo. Edges is just a wrapper around the real results that adds extra data used for slicing the results (cursors), PageInfo has metadata related to the current page. This is how it looks like:

connectionName {
   edges {
      node, // the actual node
      cursor
   },
   pageInfo {
      hasNextPage,
      hasPreviousPage
   }
}
Source