Skip to content

Commit 4a072ac

Browse files
committed
Refactor Server entrypoint to not import Client
This refactors the Server Components entrypoint for the `react` package (ReactServer.js) so that it doesn't depend on the client entrypoint (React.js). In the next step, I'll also rename React.js to ReactClient.js to make the separation clearer. This structure will make it easier to add client-only and server- only features.
1 parent ec0e8b0 commit 4a072ac

File tree

2 files changed

+85
-15
lines changed

2 files changed

+85
-15
lines changed

packages/react/src/ReactServer.experimental.js

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,43 @@ export {default as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED} from './R
1414

1515
export {default as __SECRET_SERVER_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED} from './ReactServerSharedInternals';
1616

17+
import {forEach, map, count, toArray, only} from './ReactChildren';
18+
import {
19+
REACT_FRAGMENT_TYPE,
20+
REACT_PROFILER_TYPE,
21+
REACT_STRICT_MODE_TYPE,
22+
REACT_SUSPENSE_TYPE,
23+
REACT_DEBUG_TRACING_MODE_TYPE,
24+
} from 'shared/ReactSymbols';
25+
import {cloneElement, createElement, isValidElement} from './ReactElement';
26+
import {createRef} from './ReactCreateRef';
27+
import {createServerContext} from './ReactServerContext';
28+
import {
29+
use,
30+
useId,
31+
useCallback,
32+
useContext,
33+
useDebugValue,
34+
useMemo,
35+
getCacheSignal,
36+
getCacheForType,
37+
} from './ReactHooks';
38+
import {forwardRef} from './ReactForwardRef';
39+
import {lazy} from './ReactLazy';
40+
import {memo} from './ReactMemo';
41+
import {cache} from './ReactCache';
42+
import {startTransition} from './ReactStartTransition';
43+
import {postpone} from './ReactPostpone';
44+
import version from 'shared/ReactVersion';
45+
46+
const Children = {
47+
map,
48+
forEach,
49+
count,
50+
toArray,
51+
only,
52+
};
53+
1754
// These are server-only
1855
export {
1956
taintUniqueValue as experimental_taintUniqueValue,
@@ -22,10 +59,10 @@ export {
2259

2360
export {
2461
Children,
25-
Fragment,
26-
Profiler,
27-
StrictMode,
28-
Suspense,
62+
REACT_FRAGMENT_TYPE as Fragment,
63+
REACT_PROFILER_TYPE as Profiler,
64+
REACT_STRICT_MODE_TYPE as StrictMode,
65+
REACT_SUSPENSE_TYPE as Suspense,
2966
cloneElement,
3067
createElement,
3168
createRef,
@@ -37,15 +74,15 @@ export {
3774
memo,
3875
cache,
3976
startTransition,
40-
unstable_DebugTracingMode,
41-
unstable_SuspenseList,
42-
unstable_getCacheSignal,
43-
unstable_getCacheForType,
44-
unstable_postpone,
77+
REACT_DEBUG_TRACING_MODE_TYPE as unstable_DebugTracingMode,
78+
REACT_SUSPENSE_TYPE as unstable_SuspenseList,
79+
getCacheSignal as unstable_getCacheSignal,
80+
getCacheForType as unstable_getCacheForType,
81+
postpone as unstable_postpone,
4582
useId,
4683
useCallback,
4784
useContext,
4885
useDebugValue,
4986
useMemo,
5087
version,
51-
} from './React';
88+
};

packages/react/src/ReactServer.js

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,45 @@ export {default as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED} from './R
1414

1515
export {default as __SECRET_SERVER_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED} from './ReactServerSharedInternals';
1616

17+
import {forEach, map, count, toArray, only} from './ReactChildren';
18+
import {
19+
REACT_FRAGMENT_TYPE,
20+
REACT_PROFILER_TYPE,
21+
REACT_STRICT_MODE_TYPE,
22+
REACT_SUSPENSE_TYPE,
23+
} from 'shared/ReactSymbols';
24+
import {cloneElement, createElement, isValidElement} from './ReactElement';
25+
import {createRef} from './ReactCreateRef';
26+
import {createServerContext} from './ReactServerContext';
27+
import {
28+
use,
29+
useId,
30+
useCallback,
31+
useContext,
32+
useDebugValue,
33+
useMemo,
34+
} from './ReactHooks';
35+
import {forwardRef} from './ReactForwardRef';
36+
import {lazy} from './ReactLazy';
37+
import {memo} from './ReactMemo';
38+
import {cache} from './ReactCache';
39+
import {startTransition} from './ReactStartTransition';
40+
import version from 'shared/ReactVersion';
41+
42+
const Children = {
43+
map,
44+
forEach,
45+
count,
46+
toArray,
47+
only,
48+
};
49+
1750
export {
1851
Children,
19-
Fragment,
20-
Profiler,
21-
StrictMode,
22-
Suspense,
52+
REACT_FRAGMENT_TYPE as Fragment,
53+
REACT_PROFILER_TYPE as Profiler,
54+
REACT_STRICT_MODE_TYPE as StrictMode,
55+
REACT_SUSPENSE_TYPE as Suspense,
2356
cloneElement,
2457
createElement,
2558
createRef,
@@ -37,4 +70,4 @@ export {
3770
useDebugValue,
3871
useMemo,
3972
version,
40-
} from './React';
73+
};

0 commit comments

Comments
 (0)