Open corysimmons opened 5 years ago
The idea behind Boost is to simplify using Apollo. So, 99% of users should enjoy using Boost. If Boost isn't working 99% of the time, that would seem strange, because Boost is just a simple wrapper for Apollo Client and the other modules of Apollo. That in turn would mean, if you are using Boost and finding issues, then the modules in Apollo are buggy (or maybe you don't understand how to use them?). Whatever the case, it would be better to note the issues you are running into, instead of wanting to stick to the (more complicated) past implementation. Your feedback would help everyone else trying to use Boost and Apollo and the Apollo team, who want the use of Apollo to be as simple as possible.
Scott
Boost really isn't a wrapper around other Apollo projects with a more intuitive API. It actively excludes parts of the ecosystem.
For instance, enabling websockets in the previously documented libs is pretty straightforward, but it's not possible in apollo-boost. https://blog.hasura.io/moving-from-apollo-boost-to-graphql-subscriptions-with-apollo-client-cc0373e0adb0
Basically, apollo-boost needs to support everything the existing libs do, but with a simpler API. This seems very doable and tree-shaking will get rid of unused bits in production, so I'm not sure why Boost is a subset of existing functionalities...
The whole thing is just confusing.
It is a wrapper. It just doesn't wrap the websocket/ subscription parts of Apollo Client. You can upvote (+1) this suggestion to get that functionality. https://github.com/apollographql/apollo-feature-requests/issues/13
And my point about noting the problems you are finding as issues still stands.
Scott
Okay, so to be semantically correct, "Apollo Boost wraps certain parts of the pre-existing Apollo Client stack."
Hell yeah! Glad we figured that out. 🤪
Now, back to my anecdotal feedback (that a few other people I know—who have worked extensively with Apollo—share with me):
Almost every time I use Apollo, I run into docs/tutorials/etc. pushing me towards Boost, and almost every time I end up having to swap it out for the old Apollo Client stack (sometimes for websockets, sometimes for other stuff).
When I do that, I have a hard time locating relevant docs on the old Apollo Client stack because all the docs/tutorials/etc. are trying to bottleneck me into using Apollo Boost.
My suggestions are:
Like... just a feature comparison table with links to relevant libraries prominently displayed on the sidebar would be amazing and save people time.
If your app needs any of the following features be sure to pick the right setup:
Feature | Boost | Client |
---|---|---|
Queries | ✔️ | ✔️ |
Mutations | ✔️ | ✔️ |
Subscriptions/Websockets | ❌ | ✔ |
Some other feature(s) | ❌ | ✔ |
Unsubscribing before I get banned from this repo. Contributors: Feel free to close whenever, but I'm not the only person that has experienced this frustration.
Why would you get banned? Those are good suggestions and that's what constructive criticism is all about. I agree with you too. Boost should cover all features of Apollo Client. Otherwise, the whole idea of it simplifying Client is lost.
On the other hand, the docs for Boost (granted in the Migration Section) dos clearly state the Client package needs to be set up for subscriptions and other more detailed tasks. From the docs:
Apollo Boost is a great way to get started with Apollo Client quickly, but there are some advanced features it doesn’t support out of the box. If you’d like to use subscriptions, swap out the Apollo cache, or add an existing Apollo Link to your network stack that isn’t already included, you will have to set Apollo Client up manually.
Also, in the docs, you still have the Client setup procedures under "Advanced" for Subscriptions. :)
But, I definitely like the comparison Chart idea, which needs to be front and center as long as Boost isn't covering all of the features of Client. This will make it is clear, Boost can only do the "simple stuff".
Scott
Apollo Boost doesn't work 99% of the time and I have to use apollo-client to establish a connection.
Every time I go to find docs on Apollo Client it's obfuscated by Boost stuff.
Can you just put the Boost docs/stuff in its own repo and leave Client docs specific to apollo-client stuff? :\
For posterity: https://www.apollographql.com/docs/link/index.html#apollo-client is how you init a client if you don't want to use apollo-boost