July 18, 2017

Apollo Server 1.0 — A GraphQL server for all Node.js frameworks

Jonas Helfer

Jonas Helfer

Today, after more than a year of development, testing and production use, we’re proud to announce the 1.0 release of Apollo Server! 🎉

Late edit: We also just announced Apollo Optics is now free for most apps, up to 1 million queries per month! Try out Optics to visualize, monitor, and track your GraphQL API.

Apollo Server principles

Apollo Server is a community-maintained, open-source GraphQL server. It works with all Node.js HTTP server frameworks: Express, Connect, Hapi, Koa, AWS Lambda, Restify and Micro. It is built on top of the <a href="https://github.com/graphql/graphql-js" target="_blank" rel="noreferrer noopener">graphql-js</a> reference implementation.

Apollo Server is built with the following principles in mind:

  • By the community, for the community: Apollo Server’s development is driven by the needs of developers.
  • Simplicity: by keeping things simple, Apollo Server is easier to use, easier to contribute to, and more secure.
  • Performance: Apollo Server is well-tested and production-ready — no modifications needed.

Those were the principles that we laid out when the project started, and I’m happy to see that the principles still hold today.

Zero to 4K

The development of Apollo Server has been driven by the community from the very beginning, and it’s been really exciting to watch. In a little more than a year, it went from zero to over 600 commits by 45 contributors, and NPM downloads have grown to almost 4K per day!

NPM downloads for Apollo Server

Among the production users, there are a couple of names that you might recognize:

Those are just the ones that we know about, but I’m sure there are many others. If you’re using Apollo Server in production and your company wasn’t mentioned, let us know in the comments!

If you’re not using Apollo Server just yet but want to give it a try, read the next section to learn how to set it up.

How to get started

If you want a more in-depth introduction for how to set up a GraphQL server and connect it to SQL, Mongo or REST backends, I highly recommend doing our recently updated tutorial: How to Build a GraphQL Server. It is by far the most viewed post on our blog!

A note for those who’ve used Apollo Server previously: You may notice we now import from apollo-server- rather than graphql-server- npm packages. We felt the rename better reflects that it’s part of the Apollo project and family of libraries.

Here’s how easy it is to use Apollo Server once you’ve built a GraphQL schema (for example with graphql-tools).

import express from 'express';
import bodyParser from 'body-parser';
import {
  graphqlExpress,
  graphiqlExpress
} from 'apollo-server-express';

const myGraphQLSchema = // ... define or import your schema here!
const PORT = 3000;

const app = express();

// bodyParser is needed for POST requests.
app.use('/graphql', bodyParser.json(), graphqlExpress({ schema: myGraphQLSchema }));// GraphiQL is reachable on http://localhost:3000/graphiql
app.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql' }));app.listen(PORT);

This example uses Express, but it’s almost the same for all other integrations. Check the docs or the readme for how to set up Apollo Server with Hapi, Koa, Lambda, Restify or Micro!

A huge ‘Thank You’ to everyone who contributed!

The 1.0 release of Apollo Server would never have been possible without the hard work of all the contributors. There are two people whose contributions really stand out: Hagai Cohen and Nick Nance.

Nick was there when we laid the foundation for what became Apollo Server, and he built most of the Hapi and Micro integrations. If it wasn’t for him, this project may never have gotten started. Thank you Nick!

Hagai came in a bit later and turned Apollo Server into what it is today. He migrated the project to Lerna, refactored large parts of the codebase and was the project’s chief maintainer for more than 6 months. Without him, Apollo Server wouldn’t be nearly as good as it is today. Thank you Hagai!

There were many other contributors over the course of the last year, whose big and small contributions made a difference. Thank you stubailoNeoReyadHriBBnicolaslopezjUrigodotansimhaconrad-vanlspicydonutstimneutkenscreatorkuangTallybkamilkisielasoda0289kievechuardreyn1mmyNeoPhitrotzigjadkapRafaelCosmanpapandreouClaudiuCeiaphranevirbenjamnpradelxeoneuxdahjellesiegesmundsammkjod1kpcarrierDattayalarswAlexLeungalanchristensenChris-R3ephemerthebigredgeekcomusblakeembreyomegablitz!

Where we go from here

Apollo Server is a community project, so if you have ideas or find a bug then don’t be shy filing issues or opening pull requests on GitHub!

We’re always looking for more contributors and maintainers, so if you think that could be something for you, let us know in the #contributors channel on the Apollo Slack or directly on GitHub!


If you liked this post and want to hear more about Apollo and GraphQL, make sure to click the “Follow” button below, and follow us on Twitter at @apollographql and @helferjs.

Written by

Jonas Helfer

Jonas Helfer

Read more by Jonas Helfer