The state of Meteor + Apollo integration at present


#1

I know that MDG are very busy with Apollo and doing updates to Meteor itself, but I can’t help but think we (the Meteor community) are being pushed and pulled in a direction that has seriously large flaws, at present. Let me explain…

We are all aware that MDG are shifting their focus heavily onto Apollo, allowing us a choice of DB and some very clever features. Now, Apollo is being stated as “production ready” and I don’t disagree, while it’s a little rough around the edges, I do believe it to be usable in production systems. So naturally we’re being told to use it, and generally being pushed in that direction…

But then when it comes to integration with Meteor, it seems we’re in the queue behind everyone else!

We have this package: https://github.com/apollostack/meteor-integration which is maintained by @loren, who does a good job of simply maintaining it, but he clearly needs some help to get it to the point that it should be at.

For example, subscriptions have been in Apollo for quite a while now, they solve issues that simply aren’t easily solvable any other way. Do we have them in Meteor? No. Not added yet (https://github.com/apollostack/meteor-integration/issues/36). Performance issues/improvements (https://github.com/apollostack/meteor-integration/issues/4). Even the most recent PR update to get it working with Apollo Client v0.5.x took nearly two weeks (from v0.5 release) to be pushed.

Now I don’t blame @loren for these issues, it simply seems that there’s just too much to do and not enough “official” support in helping getting it done.

So MDG, what is going to be done about this? Are you going to invest some time in making sure that packages like this aren’t left weeks/months behind the main Apollo releases? Is this all going to be fixed as part of the v1.5 release that is supposed to integrate the two better? If so, what do we do in the meantime? And finally do we as a community need to “step up” and help out more with packages like this?

Just thought I’d get a bit of a discussion on the subject as I’m finding it very hard going at the moment having to develop a live production Meteor application & convert it to GraphQL in a workable way…


#2

I think that’s a good point. @loren is doing an awesome job but I think even he would agree that it’d be even better if this package was officially maintained by MDG.

In fact for Telescope, we actually decided not to use the package because we didn’t want it to be a bottleneck in our codebase.


#3

Thanks @sacha, I’m not surprised that you ended up not using that package and “rolling your own” with Telescope; it’s just too much of a bottleneck to be usable in production at the moment.


#4

@sashko I don’t suppose you could raise this point with MDG at some point and let us know what the general thoughts are?


#5

No official response at all to this? :confused:

It’s becoming a huge problem for me, if this carries on, I’ll be forced to ditch Meteor entirely and switch to a Webpack + Apolllo + React setup… Not something I want to do!


#6

@Siyfion I just thought I’d put in my 2 cents here. It’s not all that difficult to build a usable app quickly outside of meteor thanks to create-react-app.

For example, I made a simple blog (just to see how easy it was) using this method:

  • create react app and then run npm run eject so you have access to all the packages and the webpack config.
  • Add SASS support and add it to the webpack config.
  • In my case I used rethinkdb for the database and set up a separate express server as a data API for the front-end.
  • Real-time changes delivered through socket.io. Rethinkdb is already a ‘push’ database, so setting this up was easy!
  • Back to the front-end, I simply added react-router for routing, react-helmet for SEO purposes and socket.io-client for the real-time data.

Time from concept to a finished, working project was probably slightly longer than it would be with Meteor, but if you’re forced to go down this route it probably wouldn’t be too difficult for you to accomplish.