Skip to content

Commit 5051938

Browse files
fix(federated-css-react-ssr): avoid requiring remote LoaderContext during SSR startup; use passthrough provider server-side, real providers client-side
1 parent 219df67 commit 5051938

File tree

5 files changed

+68
-13
lines changed

5 files changed

+68
-13
lines changed
Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1-
import LoaderContext1 from 'expose_css/LoaderContext';
1+
// Avoid requiring remote LoaderContext during SSR startup.
2+
// On the server, provide a passthrough provider; on the client, use remote providers.
3+
let providers;
4+
if (typeof window !== 'undefined') {
5+
// eslint-disable-next-line global-require
6+
const LoaderContext1 = require('expose_css/LoaderContext');
7+
providers = [LoaderContext1.StyleContext.Provider];
8+
} else {
9+
// eslint-disable-next-line global-require
10+
const React = require('react');
11+
const Passthrough = ({ children }) => React.createElement(React.Fragment, null, children);
12+
providers = [Passthrough];
13+
}
214

3-
export default [LoaderContext1.StyleContext.Provider];
15+
export default providers;
Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
import LoaderContext1 from 'expose_css/LoaderContext';
2-
import LoaderContext2 from 'expose_scss/LoaderContext';
1+
let providers;
2+
if (typeof window !== 'undefined') {
3+
// eslint-disable-next-line global-require
4+
const LoaderContext1 = require('expose_css/LoaderContext');
5+
// eslint-disable-next-line global-require
6+
const LoaderContext2 = require('expose_scss/LoaderContext');
7+
providers = [LoaderContext1.StyleContext.Provider, LoaderContext2.StyleContext.Provider];
8+
} else {
9+
// eslint-disable-next-line global-require
10+
const React = require('react');
11+
const Passthrough = ({ children }) => React.createElement(React.Fragment, null, children);
12+
providers = [Passthrough];
13+
}
314

4-
export default [LoaderContext1.StyleContext.Provider, LoaderContext2.StyleContext.Provider];
15+
export default providers;
Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1-
import LoaderContext1 from 'expose_css_module/LoaderContext';
1+
let providers;
2+
if (typeof window !== 'undefined') {
3+
// eslint-disable-next-line global-require
4+
const LoaderContext1 = require('expose_css_module/LoaderContext');
5+
providers = [LoaderContext1.StyleContext.Provider];
6+
} else {
7+
// eslint-disable-next-line global-require
8+
const React = require('react');
9+
const Passthrough = ({ children }) => React.createElement(React.Fragment, null, children);
10+
providers = [Passthrough];
11+
}
212

3-
export default [LoaderContext1.StyleContext.Provider];
13+
export default providers;
Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
import LoaderContext1 from 'expose_less/LoaderContext';
2-
import LoaderContext2 from 'expose_scss/LoaderContext';
1+
let providers;
2+
if (typeof window !== 'undefined') {
3+
// eslint-disable-next-line global-require
4+
const LoaderContext1 = require('expose_less/LoaderContext');
5+
// eslint-disable-next-line global-require
6+
const LoaderContext2 = require('expose_scss/LoaderContext');
7+
providers = [LoaderContext1.StyleContext.Provider, LoaderContext2.StyleContext.Provider];
8+
} else {
9+
// eslint-disable-next-line global-require
10+
const React = require('react');
11+
const Passthrough = ({ children }) => React.createElement(React.Fragment, null, children);
12+
providers = [Passthrough];
13+
}
314

4-
export default [LoaderContext1.StyleContext.Provider, LoaderContext2.StyleContext.Provider];
15+
export default providers;
Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
import LoaderContext1 from 'expose_tailwind_css/LoaderContext';
2-
import LoaderContext2 from 'expose_scss/LoaderContext';
1+
let providers;
2+
if (typeof window !== 'undefined') {
3+
// eslint-disable-next-line global-require
4+
const LoaderContext1 = require('expose_tailwind_css/LoaderContext');
5+
// eslint-disable-next-line global-require
6+
const LoaderContext2 = require('expose_scss/LoaderContext');
7+
providers = [LoaderContext1.StyleContext.Provider, LoaderContext2.StyleContext.Provider];
8+
} else {
9+
// eslint-disable-next-line global-require
10+
const React = require('react');
11+
const Passthrough = ({ children }) => React.createElement(React.Fragment, null, children);
12+
providers = [Passthrough];
13+
}
314

4-
export default [LoaderContext1.StyleContext.Provider, LoaderContext2.StyleContext.Provider];
15+
export default providers;

0 commit comments

Comments
 (0)