{"_id":"@economist/isomorphic-relay","_rev":"596-62d66d609ab5b09230888732b9bab7ef","name":"@economist/isomorphic-relay","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@economist/isomorphic-relay","version":"1.0.0","keywords":["isomorphic","isomorphic-react-relay","isomorphic-relay","react","react-relay","relay","server","server-rendering","server-side","server-side-rendering"],"author":{"name":"Denis Nedelyaev"},"license":"BSD-2-Clause","_id":"@economist/isomorphic-relay@1.0.0","maintainers":[{"name":"economist-org-bot","email":"angelorepole@economist.com"}],"homepage":"https://github.com/economist-components/isomorphic-relay","bugs":{"url":"https://github.com/economist-components/isomorphic-relay/issues"},"dist":{"shasum":"d864e27b5885daf02af11a43b43ba898d6aa7188","tarball":"https://registry.npmjs.org/@economist/isomorphic-relay/-/isomorphic-relay-1.0.0.tgz","integrity":"sha512-dJY9qP+6vCdzo6YbR1Dm5p0B2G46eaZ3ePBjL8KJSdO2iyI75nZEhF6CW9FokuMFO4KvpMmL8mEU3UICf3MFNA==","signatures":[{"sig":"MEYCIQCaHpAZIB2S9aw3gUpmPb5mD8CydjJnVF3Q1xUl84Rv+wIhANPP/eU8fxJGzV52NLXyE6/SB5QacGCBmfS+10DJ2bII","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/index.js","_from":".","_shasum":"d864e27b5885daf02af11a43b43ba898d6aa7188","gitHead":"480760b92479d4691eaccd236f41621980ff300c","scripts":{"test":"true","build":"babel src --out-dir lib","access":"npm-run-all --parallel access:*","prepublish":"npm run build","access:sudo":"npm access grant read-write economist:read-write-all $npm_package_name || true","postpublish":"npm run access","access:public":"npm access public $npm_package_name || true","semantic-release":"semantic-release pre || exit 0; npm publish && semantic-release post"},"_npmUser":{"name":"economist-org-bot","email":"angelorepole@economist.com"},"repository":{"url":"git+ssh://git@github.com/economist-components/isomorphic-relay.git","type":"git"},"_npmVersion":"3.10.10","description":"Adds server side rendering support to React Relay. This package is forked from isomorphic-relay.","directories":{},"_nodeVersion":"6.12.0","dependencies":{"prop-types":"^15.5.0","babel-runtime":"^6.6.1"},"devDependencies":{"react":"^16.0.0","babel-cli":"^6.7.5","npm-run-all":"^2.1.0","react-relay":"^1.4.1","relay-compiler":"^1.4.1","semantic-release":"^4.3.5","travis-after-all":"^1.4.4","babel-plugin-relay":"^1.4.1","babel-preset-react":"^6.5.0","babel-preset-es2015":"^6.6.0","babel-preset-stage-0":"^6.5.0","babel-plugin-transform-runtime":"^6.7.5","babel-plugin-transform-es2015-classes":"^6.6.5"},"peerDependencies":{"react":"^0.14.8 || ^15.0.1 || ^16.0.0","react-relay":"^1.4.1"},"_npmOperationalInternal":{"tmp":"tmp/isomorphic-relay-1.0.0.tgz_1511781914489_0.0854980363510549","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-11-27T11:25:15.292Z","modified":"2026-10-02T12:54:21.075Z","1.0.0":"2017-11-27T11:25:15.292Z"},"bugs":{"url":"https://github.com/economist-components/isomorphic-relay/issues"},"author":{"name":"Denis Nedelyaev"},"license":"BSD-2-Clause","homepage":"https://github.com/economist-components/isomorphic-relay","keywords":["isomorphic","isomorphic-react-relay","isomorphic-relay","react","react-relay","relay","server","server-rendering","server-side","server-side-rendering"],"repository":{"url":"git+ssh://git@github.com/economist-components/isomorphic-relay.git","type":"git"},"description":"Adds server side rendering support to React Relay. This package is forked from isomorphic-relay.","maintainers":[{"email":"markmayer@eiu.com","name":"economist-org-bot"},{"email":"wellingtonvieira@economist.com","name":"wellingtonvieira"},{"email":"v.potonya@itransition.com","name":"v.potonya"},{"email":"e.lyndin@itransition.com","name":"evgenylyndin"},{"email":"tonygoodey@economist.com","name":"tonygoodey"},{"email":"nanjundaswamysainath@economist.com","name":"nanjunda-teg"},{"email":"futuraprime@gmail.com","name":"futuraprime"},{"email":"carmen.diana.dima@gmail.com","name":"diana.carmen"},{"email":"itservicedesklon@economist.com","name":"economistrobot"},{"email":"withoutnations@gmail.com","name":"withoutnations"},{"email":"barneyward@economist.com","name":"barneyward"},{"email":"ashutoshsalodkar@partner.economist.com","name":"ashutosh-teg"},{"email":"angela.maugey@kinandcarta.com","name":"angelamaugey"},{"email":"adamlewis@economist.com","name":"a-w-l"},{"email":"irfanarisnurhakim@economist.com","name":"irfan2204"},{"email":"mikeconway@economist.com","name":"mikeconway"},{"email":"jamespenrice@economist.com","name":"jamespenrice"},{"email":"matthew.hall@kinandcarta.com","name":"matt-hall-kcc"},{"email":"johnvannguyen@economist.com","name":"johnvannguyen"},{"email":"madhavsharma@economist.com","name":"madhav1-teg"},{"email":"kartik.saxena@infosys.com","name":"kartik.saxena"},{"email":"alexselbyboothroyd@economist.com","name":"alexselbyboothroyd"},{"email":"elliottmorris@economist.com","name":"elliottmorris"},{"email":"elenafayethomas@eiu.com","name":"elenafayethomas"},{"email":"rendyfebry@economist.com","name":"rendyfebry.eco"},{"email":"greg.cann.chat@gmail.com","name":"greg-cann"},{"email":"guydunton@economist.com","name":"gdunton"},{"email":"me@joshwalwyn.com","name":"drinkataco"},{"email":"fannycorlosquet@economist.com","name":"fceco"},{"email":"granko87@gmail.com","name":"tothvoj"},{"email":"JavierMorant@economist.com","name":"ecomorant"},{"email":"mattrusscouchman@gmail.com","name":"mattcouchman"},{"email":"kristynolan@economist.com","name":"kristynolan"},{"email":"johtivashisht@economist.com","name":"johti"},{"email":"webteam.services@economist.com","name":"economist-web-team"},{"email":"sukh.kalsi@kinandcarta.com","name":"sukh-kinandcarta"},{"email":"juan@otomogroove.com","name":"otomogroove"},{"email":"samualpayne@economist.com","name":"samualdjpayne"},{"email":"hannahmurphy@eiu.com","name":"impactyogi"},{"email":"shahdotrahul@gmail.com","name":"shahdotrahul"},{"email":"peter.peklansky@globallogic.com","name":"pedrito77"},{"email":"jan.stancek@globallogic.com","name":"stancek_globallogic"},{"email":"kevincarmody@economist.com","name":"kevin-economist"},{"email":"matildealiffi@economist.com","name":"matildealiffi"},{"email":"pads@thisispads.me.uk","name":"pads"},{"email":"raynelle.alphonso@kinandcarta.com","name":"raynelle03"},{"email":"rob.morgan@kinandcarta.com","name":"robmorgan-tab"},{"email":"peterforis@economist.com","name":"forpet"},{"email":"jonhinks@economist.com","name":"jonh-econ"},{"email":"davidgoodchild@economist.com","name":"davidgoodchild"},{"email":"fadumoaideed@economist.com","name":"fadumoaideed"},{"email":"jaroslav.hamrak@globallogic.com","name":"jaroslavhamrak"},{"email":"miles.loveday@gmail.com","name":"mloveday"},{"email":"irfanyasin@economist.com","name":"irfanyasin_teg"},{"email":"i.shcherba@itransition.com","name":"igorshcherba"},{"email":"ManueliNunes@economist.com","name":"manunes"},{"email":"joewillis@hotmail.com","name":"joeawillis"},{"email":"johnjameshodgins@economist.com","name":"johnjameshodgins"},{"email":"ethancevans92@gmail.com","name":"ethancevans"},{"email":"jonny.hamilton@kinandcarta.com","name":"jonny_kc"},{"email":"adjizulfiqarfauzi@economist.com","name":"adjizulfiqarfauzi"},{"email":"alankfadliawan@economist.com","name":"tegalankf"},{"email":"afiefyonaramadhana@economist.com","name":"afiefyr"},{"email":"chriscamplin@signalnoise.io","name":"chriscamplin"},{"email":"jordanwalker@economist.com","name":"jayyecm"},{"email":"craigallen@economist.com","name":"cjallen88"},{"email":"shrikrishan@economist.com","name":"shrikrishaneiu"},{"email":"kamilpoltorak@economist.com","name":"kamil_p"},{"email":"james.miller@kinandcarta.com","name":"jimhuntyeconomist"},{"email":"stephendrogalis@economist.com","name":"stevedrog"},{"email":"JohnPeragine@economist.com","name":"johnperagine"},{"email":"Simonwtaylor93@gmail.com","name":"simonwtaylor"},{"email":"toolorunsaiye@gmail.com","name":"layo_titi"},{"email":"umairyounus@economist.com","name":"umairyounus"},{"email":"bangunhariawansafutra@economist.com","name":"banguneco"},{"email":"xavigimenez@economist.com","name":"xaviergimenez"},{"email":"oliviafletchervane@gmail.com","name":"ov212"},{"email":"r.misyuk@itransition.com","name":"rmisyuk"},{"email":"npmjs@grmnd.ch","name":"grmnd"},{"email":"farnaz.ostovari@kinandcarta.com","name":"farnaz.ostovari"},{"email":"matthewarrowsmith@economist.com","name":"matthewarrowsmith"},{"email":"manishnautiyal@economist.com","name":"nautiyalmanish"},{"email":"charlottecutler@economist.com","name":"charlottecutler"},{"email":"yayankuswara@economist.com","name":"ykswra-teg"},{"email":"cristiangutu@economist.com","name":"cristiangutueconomist"},{"email":"azhar.hasan@mutualmobile.com","name":"azzuhasan"},{"email":"edem@korchagin.me","name":"edemeconomist"},{"email":"endiirawan@economist.com","name":"endiirawaneco"},{"email":"zufrizalyordan@economist.com","name":"yordan-teg"},{"email":"muhammadghazali@economist.com","name":"ghazali-teg"},{"email":"amryousef@economist.com","name":"yousea2_economist"},{"email":"laurencegladden@gmail.com","name":"larry4000"},{"email":"kellymonson+npm@protonmail.com","name":"celltowertrees"},{"email":"mfireski@gmail.com","name":"mfiresky"},{"email":"faisalrahman@economist.com","name":"faisal1505"},{"email":"liambird@economist.com","name":"liambird"},{"email":"l.gordienko@itransition.com","name":"lgordienko"},{"email":"dwisasongkosupriyadi@economist.com","name":"dwi-teg"},{"email":"rezafaizarahman@economist.com","name":"reza-eco"},{"email":"raghunathesturi@economist.com","name":"raghu-teg"},{"email":"ZeekIkomoni@economist.com","name":"zeek01"},{"email":"jake.zachariah.nixon@gmail.com","name":"jakezachariahnixon"},{"email":"leahpatel@economist.com","name":"leahpatel"},{"email":"mrdanielmensah@hotmail.co.uk","name":"danielmensah"},{"email":"teenuburi@economist.com","name":"teenuburi"},{"email":"robertthomas@economist.com","name":"robthomas72"},{"email":"marcus.speight@hotmail.co.uk","name":"wizbit77"},{"email":"shubhamshukla+1@partner.economist.com","name":"shubham-shukla-teg"},{"email":"aayushkumar@economist.com","name":"aayushkumarecon"},{"email":"rullywijoyohendrawan@economist.com","name":"rully-teg"},{"email":"renukanaik@partner.economist.com","name":"renuka-naik-teg"},{"email":"romany.sefen@globallogic.com","name":"romany-gl"},{"email":"rosamundpearce@economist.com","name":"rospearce"},{"email":"devrathad@economist.com","name":"devrath-teg"},{"email":"cristianpetre@economist.com","name":"cristianpetre-teg"},{"email":"benhalstead@economist.com","name":"benhalsteadteg"},{"email":"alexcooper@economist.com","name":"alexeco"},{"email":"nishitasahni@economist.com","name":"nishitasahni_eiu"},{"email":"Irshadfareed@economist.com","name":"irshadfareed"},{"email":"jimchua@economist.com","name":"jimc-teg"},{"email":"ft2503@columbia.edu","name":"fteoldi"},{"email":"evheniy.dem@gmail.com","name":"yevdomin"},{"email":"martinchan@partner.economist.com","name":"econ.martinchan"},{"email":"rahuldhuri@partner.economist.com","name":"rahuldhuri"},{"email":"meghawalia@economist.com","name":"megha123"},{"email":"faizazmirekatama@economist.com","name":"faiz-teg"},{"email":"saurabhsatwani@economist.com","name":"saurabhsatwani-teg"},{"email":"rorywebber@economist.com","name":"rorywebber"},{"email":"josephclark@economist.com","name":"josephc_100"},{"email":"bimobranarto@economist.com","name":"bbimo-teg"},{"email":"michaelfleshman@economist.com","name":"cto-economist"},{"email":"olumideosikomaiya@economist.com","name":"olumideosikomaiya"},{"email":"mayankdhanawade@partner.economist.com","name":"mayank-dhanawade-teg"},{"email":"deepeshyadav@partner.economist.com","name":"deepesh-yadav-teg"},{"email":"sarthaksrivastava@partner.economist.com","name":"sarthak-srivastava-teg"},{"email":"walterbassage@economist.com","name":"walteco"},{"email":"andrew@modestudio.uk","name":"gibbsy"},{"email":"o2.vysotskaya@itransition.com","name":"ovysotskaya"},{"email":"serendavies@economist.com","name":"ninjanailseconomist"},{"email":"Connorpayne@economist.com","name":"connorpayne"},{"email":"lenface.apps@gmail.com","name":"lenface"},{"email":"sagaryadav@partner.economist.com","name":"sagar-yadav-teg"},{"email":"shivpathak@economist.com","name":"shivpathak-teg"},{"email":"navsheelbiral@partner.economist.com","name":"navsheel-biral-teg"},{"email":"benpeh@economist.com","name":"benpeh"},{"email":"vinodk.info@gmail.com","name":"virajvinodkumar"},{"email":"yashikajibhakate@partner.economist.com","name":"yashika-jibhakate-teg"},{"email":"AjeetSingh@economist.com","name":"ajeet-singh024"},{"email":"alaukikchauhan@economist.com","name":"alaukik-chauhan"},{"email":"kimtungtran@partner.economist.com","name":"trankimtung-economist"},{"email":"neelchavan@partner.economist.com","name":"neel-chavan-teg"},{"email":"akankshadhumal@partner.economist.com","name":"akankshadhumal-teg"},{"email":"vrushabhbayas@partner.economist.com","name":"vrushabheconomist"},{"email":"AlanRennie@economist.com","name":"alanrennie"},{"email":"trgrisley@gmail.com","name":"tgrisley"},{"email":"stevenlee@economist.com","name":"stevenleeeconomist"},{"email":"olufemiadeolusile@economist.com","name":"femieconomist"},{"email":"rahulgupta@economist.com","name":"rahulgupta-teg"},{"email":"lukegriffiths@economist.com","name":"lukegriffiths-economist"},{"email":"kumudamulgund@partner.economist.com","name":"kumuda-mulgund-teg"},{"email":"adam.r.morris@gmail.com","name":"adamrmorris"},{"email":"sourabhchandrakar@partner.economist.com","name":"sourabh-teg"},{"email":"victoriatalbot@economist.com","name":"victorialeatalbot"},{"email":"arunkantpant@economist.com","name":"arunkantpanteiu"},{"email":"richardstcatherine@economist.com","name":"richardstcatherine"},{"email":"sivakumarnatarajan+npm@economist.com","name":"siva-teg-npm"},{"email":"joycruzvargas@economist.com","name":"joy-cruzvargas"},{"email":"anitankumar@partner.economist.com","name":"anitan-teg"},{"email":"saurabhsaurabh@economist.com","name":"saurabh-eiu"},{"email":"georgehoughton@economist.com","name":"georgehoughton"},{"email":"ankitankit@economist.com","name":"ankitankit"},{"email":"hariomsingh@economist.com","name":"hariomsingh"},{"email":"umangjain@economist.com","name":"umangjain"},{"email":"luthfifrahman@economist.com","name":"luthfifrahman"},{"email":"heriyantobinduni@economist.com","name":"heriyantobinduni"},{"email":"stephaniedaniel@economist.com","name":"stephaniedaniel"},{"email":"rahulkumar@economist.com","name":"rahulkumar-teg"},{"email":"sagarsahasrabuddhe@partner.economist.com","name":"sagar-teg"},{"email":"ronaldsavianto@economist.com","name":"ronaldsavianto"},{"email":"ankitsharma@economist.com","name":"ankitsharma-teg"},{"email":"levadysinarta@economist.com","name":"levadys-eco"},{"email":"shipraparihar@economist.com","name":"shipraparihar"},{"email":"inanzengin@economist.com","name":"inanzengin"},{"email":"prerakjain@partner.economist.com","name":"prerak-jain-teg"},{"email":"chivo@economist.com","name":"chilinhhovo"},{"email":"kevinlaurens@economist.com","name":"kevinlaurens-teg"},{"email":"vineetsinghal@partner.economist.com","name":"vineet-singhal-teg"},{"email":"heelaine.hello@gmail.com","name":"heelaine-hello"},{"email":"erandoputra@economist.com","name":"erando-teg"},{"email":"andrysdanielsilalahi@economist.com","name":"andrys-teg"},{"email":"arandasoedjono@economist.com","name":"arandasoedjono"},{"email":"sigitadinugroho@economist.com","name":"sigiteconomist"},{"email":"jessicaengerer@eiu.com","name":"jessicaengerer"},{"email":"vivekagrawal@partner.economist.com","name":"vivek-agrawal-teg"},{"email":"andrewgillon@partner.economist.com","name":"andyg_econ"},{"email":"abdulbasit@economist.com","name":"abnpm07"},{"email":"ashrafiftekhar@economist.com","name":"mohammadashrafiftekhar"},{"email":"santoshmudavat@partner.economist.com","name":"santoshmeconomist"},{"email":"carlodellanno@economist.com","name":"carlo-economist"},{"email":"ankurraj@economist.com","name":"ankurrajteg"},{"email":"kalpnamishra@economist.com","name":"kalpna-teg"},{"email":"scottedwards@economist.com","name":"scott-edwards-economist"},{"email":"andrewmcclay@partner.economist.com","name":"andrewmcclay_partner"},{"email":"kandarpmankad@economist.com","name":"kandarp-eiu"},{"email":"chaitralipalasdeokar@partner.economist.com","name":"chaitrali-economist"},{"email":"heung@ransomprofit.com","name":"ransomprofit"},{"email":"angeloschristidis@economist.com","name":"angelosteg"},{"email":"akashnagpal@economist.com","name":"akashnagpal"},{"email":"valeriomattera@economist.com","name":"valeriomattera_economist"},{"email":"vladimirexil@partner.economist.com","name":"vladeco"},{"email":"shouryaranka@economist.com","name":"eiufe"},{"email":"fabioruolo@partner.economist.com","name":"fabioruolo-teig"}],"readme":"Isomorphic React Relay [![npm version][npm-badge]][npm]\n======================\n\nEnables server-side rendering of [React Relay](https://facebook.github.io/relay/) containers.\n\nIf you use [react-router-relay](https://github.com/relay-tools/react-router-relay)\nyou might also become interested in\n[isomorphic-relay-router](https://github.com/denvned/isomorphic-relay-router).\n\nAcknowledgments\n---------------\n\nThank you to everyone who helped in the development of this project with suggestions,\ntesting, reported issues, pull-requests. Thank you to the Facebook employees who reviewed\nmy [contributions](https://github.com/facebook/relay/commits/master?author=denvned)\nto Relay, which helped to improve the server-side rendering support.\n\nInstallation\n------------\n\n    npm install --save isomorphic-relay\n\nHow to Use\n----------\n\nHere is an example with detailed comments of how *isomorphic-relay*\ncan be used **on the server:**\n```jsx\nimport IsomorphicRelay from 'isomorphic-relay';\n\nconst rootContainerProps = {\n  Container: MyContainer,\n  queryConfig: new MyRoute(),\n};\n\napp.get('/', (req, res, next) => {\n  // Create a Relay network layer. Note that on the server you need to specify\n  // the absolute URL of your GraphQL server endpoint.\n  // Here we also pass the user cookies on to the GraphQL server to allow them\n  // to be used there, e.g. for authentication.\n  const networkLayer = new Relay.DefaultNetworkLayer(\n    'http://localhost:8080/graphql',\n    { headers: { cookie: req.headers.cookie } },\n  );\n\n  // Use IsomorphicRelay.prepareData() to prefetch the data required for\n  // rendering of the Relay container.\n  IsomorphicRelay.prepareData(rootContainerProps, networkLayer).then(({ data, props }) => {\n    // Use <IsomorphicRelay.Renderer> to render your Relay container when the data is ready.\n    // Note that we cannot use the standard <Relay.Renderer> because at the first render\n    // it renders an empty/loading screen even when all the required data is already available.\n    // Unlike that, <IsomorphicRelay.Renderer> in that case renders normally right at\n    // the first render, and it is important for server side rendering\n    // where we do not have a second render.\n    const reactOutput = ReactDOMServer.renderToString(\n      <IsomorphicRelay.Renderer {...props} />\n    );\n\n    // To allow the data to be reused in the browser, serialize and embed it\n    // in the page together with the React markup.\n    res.render('index.ejs', {\n      preloadedData: JSON.stringify(data),\n      reactOutput\n    });\n  }).catch(next);\n});\n```\n\nAnd here is an example of the code that can be used **in the browser:**\n```jsx\nimport IsomorphicRelay from 'isomorphic-relay';\n\nconst environment = new Relay.Environment();\nenvironment.injectNetworkLayer(new Relay.DefaultNetworkLayer('/graphql'));\n\n// Deserialize the data preloaded on the server.\nconst data = JSON.parse(document.getElementById('preloadedData').textContent);\n\n// Use IsomorphicRelay.injectPreparedData() to inject the data into the Relay cache,\n// so Relay doesn't need to make GraphQL requests to fetch the data.\nIsomorphicRelay.injectPreparedData(environment, data);\n\n// Use IsomorphicRelay.prepareInitialRender() to wait until all the required data\n// is ready for rendering of the Relay container.\n// Note that it is important to use the same rootContainerProps as on the server to\n// avoid additional GraphQL requests.\nIsomorphicRelay.prepareInitialRender({ ...rootContainerProps, environment }).then(props => {\n  // Use <IsomorphicRelay.Renderer> to render your Relay container when the data is ready.\n  // Like on the server we cannot use the standard <Relay.Renderer>, bacause here\n  // we also need to render normally right at the initial render, otherwise we would get\n  // React markup mismatch with the markup prerendered on the server.\n  ReactDOM.render(<IsomorphicRelay.Renderer {...props} />, document.getElementById('root'));\n});\n```\n\nAlso see the [Star Wars](examples/star-wars) example.\n\n[npm-badge]: https://img.shields.io/npm/v/isomorphic-relay.svg\n[npm]: https://www.npmjs.com/package/isomorphic-relay\n","readmeFilename":"README.md"}