To get the most out of GraphQL, most organizations end up exposing a single graph that provides a unified interface for querying all of your backing data. As your graph grows, however, it can become inefficient or even difficult to represent the graph without running into organizational problems such as schema management and ownership across the organization. To remedy this, you can divide your schema into modules that are composable, portable, and reusable, all while retaining clear and strong ownership within the graph. How does this actually work? Modules are stand-alone sections of the graph that are designed to be composed together. This gives us the flexibility to fully decouple the parts of the graph that the organization cares about (Who owns this type? Who owns this resolver? How do we share common functionality? ) from the construction of the graph itself. An extra added benefit is that modules let you prepare for federation without the operational overhead. We have built a brand new GraphQL stack using a modular approach with the intent to optimize for developer experience, ownership, and schema design. Using a combination of open-source tools such as graphql-code-generator, graphql-modules, along with some of our own custom tooling, we have been able to construct modules that are both fully isolated as well as easily composable. This approach has been invaluable in growing our graph and will likely be helpful for you too!