1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6883],{61042:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/blog/2021-06-30-newsletter-june-2021",function(){return n(68102)}])},68102:function(e,t,n){"use strict";n.r(t),n.d(t,{useTOC:function(){return o}});var i=n(52676),a=n(92937),r=n(45043),s=n(79428);function o(e){let t={a:"a",code:"code",...(0,s.a)()};return[{value:"Working Group Updates",id:"working-group-updates",depth:2},{value:"GraphQL Foundation marketing committee",id:"graphql-foundation-marketing-committee",depth:3},{value:(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(t.a,{href:"https://github.com/graphql/graphql-spec/milestone/2",children:"Release plan for next version of GraphQL specification"})}),id:"release-plan-for-next-version-of-graphql-specification",depth:3},{value:"Schema Coordinates update",id:"schema-coordinates-update",depth:2},{value:"Full unicode support",id:"full-unicode-support",depth:2},{value:"Fragment Arguments RFC",id:"fragment-arguments-rfc",depth:3},{value:(0,i.jsxs)(i.Fragment,{children:["Roundtable discussion on ",(0,i.jsx)(t.code,{children:"@defer"}),"/",(0,i.jsx)(t.code,{children:"@stream"})]}),id:"roundtable-discussion-on-deferstream",depth:2},{value:"graphql-js update on the Typescript migration",id:"graphql-js-update-on-the-typescript-migration",depth:3},{value:"Default Value Coercion RFC",id:"default-value-coercion-rfc",depth:3},{value:"Glossary RFC",id:"glossary-rfc",depth:3},{value:"Query Level Nullability RFC",id:"query-level-nullability-rfc",depth:3},{value:"In Other Newsâ¦",id:"in-other-news",depth:2},{value:"Upcoming Events",id:"upcoming-events",depth:2},{value:"Get Involved!",id:"get-involved",depth:2}]}t.default=(0,a.c)(function(e){let{toc:t=o(e)}=e,n={a:"a",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"/",children:"GraphQL"})," has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter."]}),"\n",(0,i.jsx)(n.p,{children:"GraphQL reached new heights in 2020 and is only poised to continue its meteoric rise in 2021. Thank you again for your involvement in this project and your support of the GraphQL Foundation. We are excited for another productive year!"}),"\n",(0,i.jsx)(n.h2,{id:t[0].id,children:t[0].value}),"\n",(0,i.jsx)(n.h3,{id:t[1].id,children:t[1].value}),"\n",(0,i.jsxs)(n.p,{children:["The newly created GraphQL Foundation marketing committee is responsible for coordinating marketing activities in support of the ",(0,i.jsx)(n.a,{href:"https://foundation.graphql.org/",children:"Foundation"})," and the ",(0,i.jsx)(n.a,{href:"https://github.com/graphql",children:"projects"}),". They meet regularly, and welcome participation from Foundation and community members."]}),"\n",(0,i.jsxs)(n.p,{children:["The meeting agendas and minutes are open and available in ",(0,i.jsx)(n.a,{href:"https://github.com/graphql/marketing/blob/main/meetings",children:"meetings/"}),". We generally meet on the fourth Thursday of the month at 9am PT. To be added to the recurring invite, please contact ",(0,i.jsx)(n.a,{href:"mailto:[email protected]",children:"[email protected]"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:t[2].id,children:t[2].value}),"\n",(0,i.jsx)(n.p,{children:"The next release is in the final stages of review and is anticipated to be released soon. Details on the release are TBD."}),"\n",(0,i.jsx)(n.h2,{id:t[3].id,children:t[3].value}),"\n",(0,i.jsx)(n.p,{children:"The WG is evaluating how to use Schema Coordinates (e.g. what can we improve by using schema coordinates, and is Looking for support in advancing from Draft to Accepted."}),"\n",(0,i.jsx)(n.h2,{id:t[4].id,children:t[4].value}),"\n",(0,i.jsx)(n.p,{children:"The WG is looking for support in advancing this iteration from Proposal to Draft. Most notably full unicode is already supported today, albeit without having explicit tests for it."}),"\n",(0,i.jsx)(n.p,{children:"The only new code that is added is the verification of the surrogate pairs. The current implementation allows for invalid surrogate pairs."}),"\n",(0,i.jsx)(n.h3,{id:t[5].id,children:t[5].value}),"\n",(0,i.jsxs)(n.p,{children:["For the past 5+ years, Relay has had the ",(0,i.jsx)(n.a,{href:"https://relay.dev/docs/api-reference/graphql-and-directives/#arguments",children:"@arguments directive"}),", which is not spec compliant. In some sense, Relay is a ",(0,i.jsx)(n.em,{children:"dual GraphQL client"}),": thereâs Relay syntax which is used to resolve data available locally on the client, and then that syntax compiles down into a spec compliant syntax to resolve data from an external source (aka a âserverâ), which hydrates a graph of âlocalâ data the relay-specific resolvers operate over."]}),"\n",(0,i.jsx)(n.p,{children:"This means Relay can get away with having user-written fragments that are freed from operation-defined knowledge: Relayâs fragments can be provided with variable values that were never defined at the operation level, to use when resolving arguments."}),"\n",(0,i.jsx)(n.h2,{id:t[6].id,children:t[6].value}),"\n",(0,i.jsxs)(n.p,{children:["Read the lengthy and informative conversation ",(0,i.jsx)(n.a,{href:"https://github.com/graphql/graphql-wg/blob/main/notes/2021-06-03.md",children:"here"}),", or watch on YouTube ",(0,i.jsx)(n.a,{href:"https://www.youtube.com/watch?v=d4HhIo82Whg&list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb&index=1",children:"here"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:t[7].id,children:t[7].value}),"\n",(0,i.jsx)(n.p,{children:"The working group will be converting as much of graphql-js to TypeScript as possible, which will probably need some breaking changes due to default values and other changes. One of the aims is to al
1so be readable so they might release these breaking changes along with the TypeScript migration."}),"\n",(0,i.jsx)(n.h3,{id:t[8].id,children:t[8].value}),"\n",(0,i.jsx)(n.p,{children:"The WG has spent several weeks working to integrate the default value changes into GraphQL Ruby, which has resulted in several architectural discussions and some bug reports."}),"\n",(0,i.jsx)(n.h3,{id:t[9].id,children:t[9].value}),"\n",(0,i.jsx)(n.p,{children:"The purpose of this RFC is to add clarity and precision, especially after the many meanings of a query. The WG is working to define the terms first, then will revisit extracting it into an appendix."}),"\n",(0,i.jsx)(n.h3,{id:t[10].id,children:t[10].value}),"\n",(0,i.jsx)(n.p,{children:"Used by many including Yelp and Netflix, the proposal is to allow queries that can include a non-null designator (!) to indicate that a field should be treated non-nullable and if it returns null it should escalate following the standard GraphQL error bubbling."}),"\n",(0,i.jsx)(n.h2,{id:t[11].id,children:t[11].value}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Database, Trends & Applications: ",(0,i.jsx)(n.a,{href:"https://www.dbta.com/Editorial/News-Flashes/Hasura-Adds-the-Ability-to-Access-Existing-Data-and-Move-it-with-GraphQL-API-147680.aspx",children:"Hasura Adds the Ability to Access Existing Data and Move it with GraphQL API"})]}),"\n",(0,i.jsxs)(n.li,{children:["InfoQ: ",(0,i.jsx)(n.a,{href:"https://www.infoq.com/presentations/twitter-public-api/",children:"Rebuilding Twitterâs Public API"})]}),"\n",(0,i.jsxs)(n.li,{children:["ZDNet: ",(0,i.jsx)(n.a,{href:"https://www.zdnet.com/article/mulesoft-adds-datagraph-to-anypoint-platform-streamlining-api-requests/",children:"MuleSoft adds DataGraph to Anypoint Platform to streamline API requests"})]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:t[12].id,children:t[12].value}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://graphqlconf.org",children:"GraphQL Conf. 2021"})," - September 29th"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:t[13].id,children:t[13].value}),"\n",(0,i.jsxs)(n.p,{children:["Developers can get involved in the community and contribute to the project at ",(0,i.jsx)(n.a,{href:"https://github.com/graphql",children:"https://github.com/graphql"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our ",(0,i.jsx)(n.a,{href:"https://graphql.org/foundation/join",children:"member page"}),". If you have questions about membership, please send an email to ",(0,i.jsx)(n.a,{href:"mailto:[email protected]",children:"[email protected]"}),"."]})]})},"/blog/2021-06-30-newsletter-june-2021",{filePath:"src/pages/blog/2021-06-30-newsletter-june-2021.mdx",timestamp:1789481543e3,pageMap:r.v,frontMatter:{title:"GraphQL Foundation Monthly Newsletter June 2021",tags:["newsletter"],date:"2021-06-30",byline:"GraphQL Foundation"},title:"GraphQL Foundation Monthly Newsletter June 2021"},"undefined"==typeof RemoteContent?o:RemoteContent.useTOC)}},function(e){e.O(0,[3556,5043,2888,9774,179],function(){return e(e.s=61042)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.