# Building a GraphQL Server Without Apollo

DevFeed: [Building a GraphQL Server Without Apollo](<https://devfeed.tech/articles/graphql-the-simple-way-or-don-t-use-apollo-19096.md>)

Original publisher: [Read original article](<https://httptoolkit.com/blog/simple-graphql-server-without-apollo/>)

Author: HTTP Toolkit; Tim Perry

Published: 2020-09-02T12:00:00Z

Content type: opinion

Language: en

Sources: [HTTP Toolkit](<https://devfeed.tech/sources/http-toolkit.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [apollo-server](<https://devfeed.tech/topics/apollo-server.md>), [npm packages](<https://devfeed.tech/topics/npm-packages.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [apollo](<https://devfeed.tech/tags/apollo.md>), [babel](<https://devfeed.tech/tags/babel.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [npm-packages](<https://devfeed.tech/tags/npm-packages.md>)

## AI overview

This opinion article argues that developers should avoid starting a new GraphQL API with Apollo because its ecosystem introduces substantial package and infrastructure complexity. It discusses Apollo's dependencies, transport layers, code generation, reporting, tracing, caching, and cloud integrations.

## Source excerpt

The fundamentals of GraphQL are remarkably simple. Nonetheless, a busy hype train & rocket-speed ecosystem means that building a GraphQL API in the real world can be a tricky balancing act of piling complex interacting components a mile high, none of which anybody fully understands. About 90% of this pile is built & heavily promoted by a VC-funded company called Apollo. Apollo describe themselves as a "data graph platform" who've built the self-described "industry-standard GraphQL implementation". Unfortunately, while I'm sure their platform is great, if you're setting up a fresh GraphQL API you should not start with Apollo. It certainly might be useful later, but on day 1 it's a trap, and you'll make your life simpler and easier if you avoid it entirely. Let's talk about why that is, what can go wrong, and what you should do instead. The Problem with Apollo In practice, "industry-standard GraphQL implementation" means 169 separate npm packages, including: 44 different server packages and apollo-server-* subpackages. 7 different GraphQL 'transport layers', plus a long list of link layer extensions that build on top of this. 8 code generation packages 5 different create-* project setup packages 3 different GraphQL Babel plugins (plus a Relay un-Babel plugin, so you can avoid using Babel for some specific cases). Much much more... The Apollo packages required to install the base apollo-server package suggested in their Getting Started guide include the "Apollo Studio" (née Apollo Graph Manager, néeée Apollo Engine) reporting engine, which integrates your server with their cloud service, plus extra protobuf definitions on top of that to reporting to the cloud service with Protobuf. It includes request tracing for their own custom tracing format, multiple different custom caching packages, an abstraction layer that powers the many available transport link layers, an abstraction layer for connecting external data sources... In total, installing apollo-server installs actuall