{"componentChunkName":"component---src-templates-modal-page-js","path":"/relay","result":{"pageContext":{"node":{"slug":{"current":"relay"},"name":"Relay","githubUrl":"https://github.com/facebook/relay","description":"A JavaScript framework for building data-driven React applications.","developer":{"name":"Facebook","url":"https://developers.facebook.com","logo":{"asset":{"url":"https://cdn.sanity.io/images/g5bd2nk6/production/2260c71f967377e16ffbb611ef03393e79e51f6e-2143x2143.png"}}},"price":"Free","url":"https://relay.dev","tags":[{"id":"be16bebb-ead8-5ccd-9b12-43490b7a3f4e","name":"JavaScript","slug":{"current":"javascript"}},{"id":"0a926ca0-b673-55da-9067-d1130fbd856d","name":"React","slug":{"current":"react"}}],"logo":{"asset":{"url":"https://cdn.sanity.io/images/g5bd2nk6/production/b8068a0407450b9a5b6501ccb48fd44119a85a19-2500x1475.svg"}},"categories":[],"_rawContent":[{"_key":"e48fcc517e4c","_type":"block","children":[{"_key":"e48fcc517e4c0","_type":"span","marks":[],"text":"Built for scale"}],"markDefs":[],"style":"h1"},{"_key":"3238ac534bb5","_type":"block","children":[{"_key":"3238ac534bb50","_type":"span","marks":[],"text":"Relay was designed to be performant from the ground up, and to support scaling your application to "},{"_key":"3238ac534bb51","_type":"span","marks":["strong","em"],"text":"thousands"},{"_key":"3238ac534bb52","_type":"span","marks":[],"text":" of components, while keeping management of data fetching sane, and fast iteration speeds as your application grows and changes."}],"markDefs":[],"style":"normal"},{"_key":"6051971d8247","_type":"block","children":[{"_key":"6051971d82470","_type":"span","marks":[],"text":"Quick iteration"}],"markDefs":[],"style":"h3"},{"_key":"de785a1f7748","_type":"block","children":[{"_key":"de785a1f77480","_type":"span","marks":[],"text":"Relay is built upon "},{"_key":"de785a1f77481","_type":"span","marks":["em"],"text":"locally"},{"_key":"de785a1f77482","_type":"span","marks":[],"text":" declaring data dependencies for components. This means each component declares "},{"_key":"de785a1f77483","_type":"span","marks":["em"],"text":"what"},{"_key":"de785a1f77484","_type":"span","marks":[],"text":" data that it needs, without worrying about "},{"_key":"de785a1f77485","_type":"span","marks":["em"],"text":"how"},{"_key":"de785a1f77486","_type":"span","marks":[],"text":" to fetch it; Relay guarantees that the data each component needs is fetched and available."}],"markDefs":[],"style":"normal"},{"_key":"4a484e335aeb","_type":"block","children":[{"_key":"4a484e335aeb0","_type":"span","marks":[],"text":"This allows components and their data dependencies to be modified "},{"_key":"4a484e335aeb1","_type":"span","marks":["strong","em"],"text":"quickly"},{"_key":"4a484e335aeb2","_type":"span","marks":[],"text":" and in "},{"_key":"4a484e335aeb3","_type":"span","marks":["strong","em"],"text":"isolation"},{"_key":"4a484e335aeb4","_type":"span","marks":[],"text":", without needing to update other parts of the system or, worrying about breaking other components"}],"markDefs":[],"style":"normal"},{"_key":"de6a14e99ee2","_type":"block","children":[{"_key":"de6a14e99ee20","_type":"span","marks":[],"text":"Minimal round trips"}],"markDefs":[],"style":"h3"},{"_key":"9e69a5774b02","_type":"block","children":[{"_key":"9e69a5774b020","_type":"span","marks":[],"text":"Relay automatically aggregates the data requirements for your entire application, so that they can be fetched in a single GraphQL request."}],"markDefs":[],"style":"normal"},{"_key":"30b5eab0858c","_type":"block","children":[{"_key":"30b5eab0858c0","_type":"span","marks":[],"text":"Relay will handle all of the heavy lifting to ensure the data declared by your components is fetched in the most efficient way, for example by deduplicating identical fields, fetching as early as possible, among other optimizations."}],"markDefs":[],"style":"normal"},{"_key":"716db8b21499","_type":"block","children":[{"_key":"716db8b214990","_type":"span","marks":[],"text":"Automatic data consistency"}],"markDefs":[],"style":"h3"},{"_key":"06d5d796490a","_type":"block","children":[{"_key":"06d5d796490a0","_type":"span","marks":[],"text":"Relay automatically keeps all of your components up to date whenever data that affects them changes, and efficiently update them only when strictly necessary."}],"markDefs":[],"style":"normal"},{"_key":"7ab4c0b48230","_type":"block","children":[{"_key":"7ab4c0b482300","_type":"span","marks":[],"text":"Relay also supports executing GraphQL Mutations, optionally with optimistic updates, and updates to local data, while ensuring that visible data on the screen is always kept up to date."}],"markDefs":[],"style":"normal"}]},"targetPath":"","modalType":"tool"}},"staticQueryHashes":[]}