{"action":"created","issue":{"url":"https://api.github.com/repos/apollostack/apollo-client/issues/464","repository_url":"https://api.github.com/repos/apollostack/apollo-client","labels_url":"https://api.github.com/repos/apollostack/apollo-client/issues/464/labels{/name}","comments_url":"https://api.github.com/repos/apollostack/apollo-client/issues/464/comments","events_url":"https://api.github.com/repos/apollostack/apollo-client/issues/464/events","html_url":"https://github.com/apollostack/apollo-client/issues/464","id":167440686,"number":464,"title":"1.0 Countdown","user":{"login":"Poincare","id":217352,"avatar_url":"https://avatars.githubusercontent.com/u/217352?v=3","gravatar_id":"","url":"https://api.github.com/users/Poincare","html_url":"https://github.com/Poincare","followers_url":"https://api.github.com/users/Poincare/followers","following_url":"https://api.github.com/users/Poincare/following{/other_user}","gists_url":"https://api.github.com/users/Poincare/gists{/gist_id}","starred_url":"https://api.github.com/users/Poincare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Poincare/subscriptions","organizations_url":"https://api.github.com/users/Poincare/orgs","repos_url":"https://api.github.com/users/Poincare/repos","events_url":"https://api.github.com/users/Poincare/events{/privacy}","received_events_url":"https://api.github.com/users/Poincare/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/apollostack/apollo-client/labels/idea","name":"idea","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2016-07-25T19:02:06Z","updated_at":"2016-07-27T00:38:51Z","closed_at":null,"body":"When we started working on Apollo Client, we wrote up a [design document](https://github.com/apollostack/apollo-client/blob/master/design.md) that outlined all of the features we need for an initial production-ready version.\r\n\r\nAt this point we have working implementations of most of these features. We want to ship a \"1.0\" release in a reasonable timeframe to signal that people should be confident relying on Apollo Client in production, and that the APIs will remain stable for a long time.\r\n\r\nBefore we can do this, we need to identify and fix any critical problems that would block people from using it in their production GraphQL app.\r\n\r\nHere's the list of features/fixes/etc. we think we absolutely need for the 1.0 release:\r\n\r\n* Better documentation on all aspects of Apollo Client\r\n* Better error handling (also involves view layers)\r\n* Better loading state handling (also involves view layers)\r\n* Validate the design for mutation results, pagination and fragments\r\n    - For fragments, should decide whether we should use the fragment name from the document or generate a fragment name and allow referencing by variable name.\r\n    - For mutation results, get people to use it and see what the feedback is\r\n* Offer a way to integrate non-GraphQL data into the Apollo store (can be similar to `updateQueries` works on mutation results)\r\n* Refactor `QueryManager.ts` to make it less complex\r\n* Make it more convenient to pass headers, tokens, etc. in `networkInterface`\r\n* Check if `resetStore` is a valid cache eviction strategy\r\n* Figure out strategy for retrying queries and mutations (#439)\r\n* Allow refetching by query/mutation name\r\n* Look at #398 and figure out what we want to implement from it\r\n\r\nThese are the improvements @stubailo and I thought of that are currently standing between us and a 1.0 release. If you have a particular issue that is preventing you from using Apollo in production, we'd be happy to hear about it, and perhaps add it to the list.\r\n\r\nAs always, we want Apollo Client to be a community-driven effort, so if you have the need for a feature that is not in the list above, and there is a good design and pull request implemented, we can still accept it. This is just to have a complete list of \"blockers\" before we consider the library stable.\r\n"},"comment":{"url":"https://api.github.com/repos/apollostack/apollo-client/issues/comments/235448475","html_url":"https://github.com/apollostack/apollo-client/issues/464#issuecomment-235448475","issue_url":"https://api.github.com/repos/apollostack/apollo-client/issues/464","id":235448475,"user":{"login":"HriBB","id":4412324,"avatar_url":"https://avatars.githubusercontent.com/u/4412324?v=3","gravatar_id":"","url":"https://api.github.com/users/HriBB","html_url":"https://github.com/HriBB","followers_url":"https://api.github.com/users/HriBB/followers","following_url":"https://api.github.com/users/HriBB/following{/other_user}","gists_url":"https://api.github.com/users/HriBB/gists{/gist_id}","starred_url":"https://api.github.com/users/HriBB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HriBB/subscriptions","organizations_url":"https://api.github.com/users/HriBB/orgs","repos_url":"https://api.github.com/users/HriBB/repos","events_url":"https://api.github.com/users/HriBB/events{/privacy}","received_events_url":"https://api.github.com/users/HriBB/received_events","type":"User","site_admin":false},"created_at":"2016-07-27T00:38:51Z","updated_at":"2016-07-27T00:38:51Z","body":"@stubailo I was trying to do a `multipart/form-data` upload to store a profile photo with apollo client ... did not get far :) I thought I could somehow manipulate the request with `networkInterface` middleware, attach `FormData`, then handle everything on the server before request hits the `expressApollo` server. \r\n\r\nAnyway ... what is the official recommendation? Upload files via custom endpoint, then merge results into apollo store manually? Or refetch the data manually? I have seen some examples on [express-graphql](https://github.com/graphql/express-graphql/blob/master/src/__tests__/http-test.js#L676) but haven't had the time to check it out ...\r\n\r\nI understand that file upload has nothing to do with the GraphQL, but at least point us into the right direction :) How would you implement that?"}}
{"actor":{"display_login":"HriBB"}}