GraphQL seems to be a good way to go, much better than RESTful API, no issues with API versioning and under/over fetching, great tooling - GraphiQL IDE. As of Relay, there are some alternatives, Apollo is being the most promising one. For small apps it might be a good idea to use GraphQL server directly, unless you're already comfortable using Relay or another GraphQL client. For larger apps, you may want to evaluate Relay, Apollo, Lokka to check what better suites project's needs.