Registry /
web-framework / react-relay-network-modern-ssr
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
RelayServerSSR
✓ import RelayServerSSR from 'react-relay-network-modern-ssr/lib/server'
✗ import { RelayServerSSR } from 'react-relay-network-modern-ssr'
Default export from lib/server — named import does not work. Also available via require: const RelayServerSSR = require('react-relay-network-modern-ssr/lib/server').default
RelayClientSSR
✓ import RelayClientSSR from 'react-relay-network-modern-ssr/lib/client'
✗ import { RelayClientSSR } from 'react-relay-network-modern-ssr/lib/client'
Default export from lib/client — named import does not work. For client-side hydration.
SSRCacheMiddleware
✓ import SSRCacheMiddleware from 'react-relay-network-modern-ssr/lib/client'
✗ import { SSRCacheMiddleware } from 'react-relay-network-modern-ssr'
SSRCacheMiddleware is an alias for RelayClientSSR; use default import from lib/client.
Complete Express SSR setup with RelayServerSSR – two-pass rendering, schema injection, cache retrieval, and HTML serialization.
import express from 'express';
import ReactDOMServer from 'react-dom/server';
import { RelayNetworkLayer } from 'react-relay-network-modern';
import RelayServerSSR from 'react-relay-network-modern-ssr/lib/server';
import serialize from 'serialize-javascript';
import { Environment, Network, RecordSource, Store } from 'relay-runtime';
import schema from './schema';
const app = express();
app.get('/*', async (req, res, next) => {
const relayServerSSR = new RelayServerSSR();
const network = new RelayNetworkLayer([
relayServerSSR.getMiddleware({
schema,
contextValue: {}
})
]);
const source = new RecordSource();
const store = new Store(source);
const relayEnvironment = new Environment({ network, store });
// First render to kick off data fetching
ReactDOMServer.renderToString(<App relayEnvironment={relayEnvironment} />);
// Wait for all queries to complete
const relayData = await relayServerSSR.getCache();
// Second render with primed store
const appHtml = ReactDOMServer.renderToString(
<App
relayEnvironment={new Environment({
network: Network.create(() => relayData[0][1]),
store
})}
/>
);
res.status(200).send(`
<html>
<body>
<div id="react-root">${appHtml}</div>
<script>window.__RELAY_BOOTSTRAP_DATA__ = ${serialize(relayData)};</script>
<script src="/assets/bundle.js"></script>
</body>
</html>
`);
});
app.listen(3000);
Errors
Common errors & fixes
Cannot find module 'relay-runtime'
Missing peer dependency 'relay-runtime' (or 'react-relay' for older versions).
fixInstall react-relay: npm install react-relay
TypeError: relayServerSSR.getMiddleware is not a function
Incorrect import path – using main export instead of /lib/server.
fixUse import RelayServerSSR from 'react-relay-network-modern-ssr/lib/server'
Module not found: Can't resolve 'graphql'
Missing peer dependency 'graphql' when using schema option.
fixInstall graphql: npm install graphql
Audit
Dependencies
graphqlrequiredRequired peer dependency for schema execution in SSR middleware
react-relayrequiredRequired peer dependency for Relay Environment and components
react-relay-network-modernrequiredRequired peer dependency for network layer middleware integration