10 Principles for Designing Good GraphQL Schemas
GraphQL schema design should prioritize client needs over backend data models. Key principles include capability-based design (understanding what clients need to accomplish), making expected errors explicit through union types, careful nullability management to minimize blast radius, mandatory pagination for security and UX, and abstracting implementation details to allow backend changes without breaking clients. Schemas should match organizational structure—monolithic for single teams, federated for multiple teams. Assume fields can never be deprecated once published, especially for mobile clients. Use semantic nullability to distinguish between absent data, null values, and error-caused nulls.