GraphQL Trends in 2019
Photo by Sven Scheuermeier on Unsplash
The GraphQL Foundation announcement last year was another reassurance that GraphQL is here to stay, after Facebook granted full patent rights to all GraphQL users two years ago.
While the legal situation around GraphQL is in the clear now, 4 years after its open-source release, the best practices and developments surrounding the still-emerging technology are still rapidly evolving.
This article gives an overview of the current state of GraphQL, recent trends and a prediction for the most relevant topics in GraphQL in 2019 and the near future.
The GraphQL Community is Thriving
The GraphQL community is bigger and more active than ever. Honestly, it's almost impossible to keep up with all of the events, initiatives and resources the community is creating on a regular basis.
Conferences All Over the World
Yesterday, the videos from GraphQL Asia 2019 were published.
GraphQL Asia is not the only GraphQL conference. The Call For Papers for the fourth edition of GraphQL Summit is open for another two weeks, the third edition of GraphQL Conf (formerly GraphQL Europe) in Berlin is around the corner. There is no lack of great GraphQL conferences all over the world!
Meetups, One Day Conferences and More
According to Meetup, there are over 120 GraphQL meetups with over 60,000 members all over the world.
Let me catch my breath - Apollo Day is happening twice this year (once yesterday in New York as well as next week in San Francisco). Next month, Prisma Day provides a nice excuse to enjoy sunny Berlin an extra day before GraphQL Conf.
Later this year, GraphQL Day goes into round three, this time at Lake Constance. Today, This Dot Labs is hosting another edition of the GraphQL Contributor Day.
Community-Driven Learning Resources and Content
Resources like How to GraphQL, Learn Hasura, and Open GraphQL are the result of a community-driven effort to provide top quality learning material.
Additionally, there is the occasional panel discussion, tutorial, case study or developer tool. And soon there is even going to be a GraphQL documentary!
There is already the GraphQL Weekly newsletter. How long until we get The Daily GraphQL™? I think you got the message. The GraphQL community is thriving, that much is clear.
The Big Topics for GraphQL in 2019
With all of this buzz, what are the most important topics in GraphQL this year?
Schema Stitching and Distributed GraphQL Schemas
Let's start our tour by going back in time by about two years. As GraphQL adoption around this time was quickly growing, so did the average size of organizations that adopted it. This meant that a big wave of almost-GraphQL-adopters were encountering similar issues that occur when working at multiple GraphQL schemas in a distributed way.
Many of those developers started to look into different approaches to build a "GraphQL Gateway" to solve the new challenges they were facing. The idea was to combine multiple GraphQL schemas into a unified API, which brought its own set of challenges with it.
What followed was an effort spear-headed by Mikhail Novikov, Apollo and Prisma to develop techniques and approaches to solve these challenges, commonly referred to as schema stitching or schema delegation. Schema stitching quickly grew from a demo and proof of concept into the hot topic for GraphQL in 2017.
The whispers and cautious optimism around schema stitching exploded into sheer celebration at GraphQL Summit 2017, with schema stitching being the central theme to stand out at the conference.
Several projects like GrAMPS, GraphQL schema bindings and GraphQL-tools were revealed and talked about at the conference. A big part of the excitement was that all projects were united by similar observations independently from each other. They looked at different use cases and angles on the same underlying problem.
A clearer vision of schema stitching emerged, promising to be the cure-all when working with multiple GraphQL schemas. 2018 saw multiple resources that offered further developments for the collective understanding of schema stitching.
How did this excitement carry over to 2019?
More teams encountered the same problems around distributed GraphQL schema, but schema stitching didn't turn out to be the unified approach it once promised to be. In fact, the approach of schema stitching opens up its own set of problems and shortcomings. Instead, teams are developing specialized approaches that make sense for their unique situation, especially in bigger organizations.
In 2019, a new approach termed schema federation is emerging, that can be seen as the evolution of schema stitching. With James Baxley's upcoming talk on Apollo Schema Federation at GraphQL Conf, it's exciting to see how schema federation is going to tackle the problem of collaborating on multiple GraphQL schemas in huge and distributed teams.
Will it deliver to the hype of schema stitching of the recent years?
A More Diverse Landscape of GraphQL Services
As a continuation of a trend over the last few years, more and more options are available today to set up a GraphQL server environment, either in the cloud or locally, that we can categorize them along the spectrum from fully integrated solution to a single component in your stack.
The Hasura DIY BaaS offering, the serverless GraphQL Backend 8base, the headless GraphQL CMS GraphCMS and the library AWS Amplify in combination with the BaaS AWS AppSync are all viable options to set up a GraphQL server environment today. These options lean further towards the integrated serverless backend services end of the spectrum.
There is also a lot of movement and competition on the other end of the spectrum. Postgraphile, Prisma and Hasura can all be used to generate a GraphQL API on top of a database, offering much more flexibility as the above services, but also come with a higher required effort in terms of additional tooling, infrastructure or implementation.
By now, a big and diverse landscape of such services has accrued. Therefore, it will become increasingly important to have an in-depth understanding of all the different tools and their respective best use case, to be able to deliver the best experience with the least resources.
When GraphQL was released to the public, it shipped with GraphiQL - one of the first in a long range of tools that enable a totally new developer experience. At GraphQL Summit 2016, the first GraphQL conference, Lee Byron closed his brilliant talk Lessons from 4 Years of GraphQL with the words:
Where we definitely still need focus is in building and improving the tools for using GraphQL in lots of different environments. [...] I really think that great tools are what will make GraphQL ubiquitous and that's where we need all of your help.
And the community is doing a lot of work to fulfill that aspiration, whether that's in client- or server-side tooling, tools that improve the developer experience and workflows or tools that improve processes spanning across teams.
At GraphQL Asia, Uri Goldshtein showcased a range of super useful tools in Practical tools to use GraphQL in the harshest environments, and Ivan Goncharov showed that GraphQL Tools are easy or how to write one in less than 100 lines.
There are way too many tools to mention them all, but let's highlight a few.
Whether you're working code-first or schema-first (the latter sometimes also being called SDL-first), there are always going to be schema-related workflows. GraphQL Nexus and GraphQL Modules are two examples that are gaining popularity this year.
There is also a range of IDE integrations. Apollo GraphQL, Prisma GraphQL and GraphQL for VSCode are the three most popular ones for VS Code.
Additionally, there is a rich ecosystem of highly specialized tools in GraphQL: SOFA provides a way to generate REST APIs from a GraphQL server, while
graphql-shieldcan be used to easily implement a permission layer into your GraphQL resolvers.
Last but not least, one of the oldest visual tools for GraphQL, GraphQL Voyager, has been joined by GraphQL Birdseye and GraphQL Editor this year. Both tools offer an graphical interface to gain insights into your GraphQL schema or interact with it.
A big part of the attraction of GraphQL is the aspect of developer-centric and powerful tooling. And while a lot of tools have been built in the past few years, there is still a lot of potential for more use cases, and more polished experiences.
Classical API Concepts
As an API technology, GraphQL sits at a crucial location in the stack. As such, potential users of GraphQL have to carefully consider how GraphQL plays out for them and their use case with regards to a lot of responsibilities and concepts related to APIs.
While there are many valid approaches for concepts like offline-first, realtime queries and subscriptions, schema migrations, error handling, backwards compatibility, microservice architecture, and security, the lack of commonly agreed best-practices has severly hindered GraphQL adoption.
In 2019, we will continue to see more case studies, tutorials, libraries and discussions about these very concepts.
GraphQL vs. REST or Beating a Dead Horse
Ever since GraphQL gained popularity, there have been large debates, discussions and flame wars about which technology is better - GraphQL or REST? Following the sentiment of Robert Zhu's talk on Why you should use REST instead of GraphQL at GraphQL Asia 2019 we can hopefully observe an increasing quality of such conversations.
In software development, there is an old saying that probably also applies to the matter of "Which is better, REST or GrapgQL?": It depends. What's for sure is that GraphQL has brought a lot of value and momentum to the table of API development and software development processes in general.
Code-First vs. Schema-First, Code Generation and Type Safety
The debate around code-first vs. schema-first GraphQL that recently sparked is a big contender for the most discussed GraphQL topic in 2019.
The trend of code-first vs. schema-first GraphQL development is also connected to two other big trends: code-generation and end-to-end type safety. These topics have gained a lot of traction in the GraphQL community recently.
Tools like graphqlgen and GraphQL Code Generator set out to automatically generate type-safe GraphQL code based on a GraphQL Schema (schema-first). When using the AWS Amplify framework, you can integrate with AWS AppSync in a schema-first manner. Again, the native client code can be automatically generated.
GraphQL Nexus actually flips this workflow around. Following a code-first approach, you can write code that describes your data structure and let GraphQL Nexus automatically generate the GraphQL schema for you, in a type-safe way.
While these concepts are not novel by themselves, the new terminology and combination helps to have new conversations and perspectives. It's going to be exciting to see further developments in this area of GraphQL unfold.
We're In For a Treat
No matter which trends the remainder of 2019 holds in store for the GraphQL community, one thing's for sure. With the upcoming Prisma Day and GraphQL Conf in June and GraphQL Summit in October, we're in for a treat.
What are your thoughts on current GraphQL trends? Which topic are you most excited about? Come talk to me at Prisma Day and GraphQL Conf, I'm looking forward to meeting you!
Note: There is an excellent article by my former colleague Etel on What to expect at GraphQL Conf 2019 specifically. Check it out for another perspective on GraphQL trends!
Saying Good Bye
This article is dedicated to Oleg Ilyenko, author of Sangria and one of the earliest and most valiant GraphQL adopters. He passed away last week.
I met Oleg just over 3 years ago in Berlin at the first GraphQL Berlin meetup. Just like GraphQL, my life has changed completely in the last three years.
Thanks for being a part of it, Oleg, and thanks for making my first experiences with GraphQL and Berlin sweeter, funnier and easier. I will miss you dearly.
Published 15 May 2019Back Home