I’d like to pick up a discussion that has been circulating before: GraphQL and Holochain. I came across the Junpier GraphQL library for Rust and decided to give it a try integrating it into a simple DNA. Conclusion: It seems to be working great! No obvious performance loss or excessive memory consumption, even though that would have to be investigated more in detail. Juniper adds only ca 150 K to the final size of compiled DNA. And ofcourse, client development becomes really straightforward when Holochain can be acessed as a GraphQL endpoint, no translation in the client needed.
You can find the repo here:
My initial plan was to use Relay in the client because they offer cool stuff such as support for React Suspense and Concurrent mode. In the end I went with Apollo Client instead. But, I still tried to implement and support the GraphQL Server Specification proposed by Relay. Following that spec and other best practices for GraphQL I see as one of the major benefits of integrating GraphQL on the Conductor level. It forces you / nudges you to consider the clients use of the DNA interface at all times.