Existing GraphQL frameworks are well designed to handle statically defined types and resolvers. Here at Benchling, we faced the problem of serving a GraphQL API which incorporated customer-defined types at runtime with a dynamically generated graph that varies customer-to-customer. In this talk, I’ll describe some of the challenges in serving this GraphQL API, including dynamic generation of graph components and performance. Then, I’ll describe how we extended Strawberry (the GraphQL framework we decided to use) to handle our use cases as well as a graph-caching strategy that allowed us to dramatically improve the performance of serving the API.