Introducing the Apollo GraphQL data stack
Sashko Stubailo
Today, I’m excited to announce a technical preview release of the Apollo data stack. There is still a lot of work to do before Apollo is production ready, but we think the components we have now are a great first step.
Our main goal today is to enable people to get their hands dirty experimenting with the different parts, and to seek out contributors who are excited about such a project. If you check out our new documentation and you like the direction, please don’t hesitate to join our Slack team or file issues or PRs on GitHub.
What’s Apollo?
Apollo is our vision for the data stack of the future. It includes both client and server-side components that live between your UI (React, Angular, Reduxor anything else) and your backend services (MongoDB, SQL, REST, etc), shuttling data between the two. You query your data with GraphQL, and the data stack handles the rest.
Check out our earlier post and talk about Apollo to learn about why we are building it, what it is, and where it’s going.
So, what can you start using and looking at today?
The initial set of tools and integrations
First and foremost, there is now a set of packages you can install from NPM and start experimenting with. The main components are the client and server:
- Apollo Client, a simple, incrementally adoptable GraphQL client built on Redux.
- GraphQL Tools, a set of useful utilities for GraphQL-JS that enable you to declaratively specify your schema, easily mock data, and enjoy improved error reporting.
We also have native integrations for a variety of environments:
- react-apollo, a React integration for the Apollo Client heavily inspired by react-redux.
- angular2-apollo, an integration for Angular 2.
- Meteor integration, with easy conventions for working with the Meteor accounts system and web server.
- Redux integration, which lets you keep your client and server data in the same place, and track them with the spectacular Redux DevTools.
If you don’t see your favorite technology here yet, don’t worry — more integrations are coming, and it’s easy to build your own on top of the core packages.
Three example apps to get you started
We’ve whipped together a few small example apps to show how the different parts might fit together. We’re always looking for improvements and feedback on these apps, and they’ll get better as Apollo progresses. We plan to start integrating Apollo into our own production apps in the very short term, and we’re going to bring those learnings back to the packages and examples.
Here are the three examples we have today:
- A full-stack app with a Material UI React frontend on top of Discourse
- A GraphQL server example that uses SQL, MongoDB + REST
- A bare-bones Meteor starter kit
Documentation and resources
In order to make it as easy as possible to try this stuff out, we’ve put together a detailed documentation site for the current set of packages. The APIs will change frequently at this early stage, so check back often to see what we’re cooking!
And to top it off, we now have a beautiful new website to introduce people to the project!
For the near future, we are focused on building a full-stack solution for GraphQL that’s easy to get started with and scales as your app grows, both in the number of users and complexity of the code.
This whole journey started with a post called Reactive GraphQL, and we’re always keeping that goal in mind. Even though reactivity is not in the immediate plans, you can achieve it today by refetching data or mixing Meteor subscriptions with your GraphQL queries, and we plan to make this approach much better in the short term.
Join us on Slack: If the projects we are working on right now sound like something you need, and you want to get started with it right away or contribute to the project, drop us a line on Slack and we’ll set you up.
Follow us on Medium: We’re going to keep blogging about our progress with Apollo and what we learn along the way right here on Medium. Let’s keep in touch and build the future together!
Big thanks to all of the contributors who have helped us get this preview together: James Baxley III, John Pinkerton, Maxime Quandalle, Brady Whitten, Louis DeScioli, and Kamil Kisiela.