From f216f6a08ffa719bb6bb49648c95cfe3856bd79b Mon Sep 17 00:00:00 2001
From: Sebastian Markbage
Date: Fri, 30 Oct 2020 20:07:42 -0400
Subject: [PATCH 1/3] Remove Blocks
---
.../react-client/src/ReactFlightClient.js | 78 +---
.../src/__tests__/ReactFlight-test.js | 76 ----
.../react-debug-tools/src/ReactDebugHooks.js | 4 +-
.../src/ReactChildFiber.new.js | 71 ----
.../src/ReactChildFiber.old.js | 71 ----
.../react-reconciler/src/ReactFiber.new.js | 11 -
.../react-reconciler/src/ReactFiber.old.js | 11 -
.../src/ReactFiberBeginWork.new.js | 94 -----
.../src/ReactFiberBeginWork.old.js | 94 -----
.../src/ReactFiberCommitWork.new.js | 40 +-
.../src/ReactFiberCommitWork.old.js | 16 +-
.../src/ReactFiberCompleteWork.new.js | 8 -
.../src/ReactFiberCompleteWork.old.js | 7 -
.../src/ReactFiberComponentStack.js | 3 -
.../src/ReactFiberWorkLoop.new.js | 7 +-
.../src/ReactFiberWorkLoop.old.js | 7 +-
.../react-reconciler/src/ReactWorkTags.js | 8 +-
.../src/__tests__/ReactBlocks-test.js | 351 ------------------
.../react-server/src/ReactFlightServer.js | 55 +--
.../src/ReactFlightServerRuntime.js | 44 ---
.../src/ReactTestRenderer.js | 10 -
.../ReactFlightDOMRelay-test.internal.js | 50 ---
.../src/__tests__/ReactFlightDOM-test.js | 235 ------------
packages/react/index.classic.fb.js | 3 -
packages/react/index.experimental.js | 2 -
packages/react/index.js | 2 -
packages/react/index.modern.fb.js | 3 -
packages/react/src/React.js | 3 -
packages/react/src/ReactBlock.js | 138 -------
packages/shared/ReactComponentStackFrame.js | 3 -
packages/shared/ReactFeatureFlags.js | 1 -
packages/shared/ReactSymbols.js | 4 -
.../forks/ReactFeatureFlags.native-fb.js | 1 -
.../forks/ReactFeatureFlags.native-oss.js | 1 -
.../forks/ReactFeatureFlags.test-renderer.js | 1 -
.../ReactFeatureFlags.test-renderer.native.js | 1 -
.../ReactFeatureFlags.test-renderer.www.js | 1 -
.../shared/forks/ReactFeatureFlags.testing.js | 1 -
.../forks/ReactFeatureFlags.testing.www.js | 1 -
.../shared/forks/ReactFeatureFlags.www.js | 1 -
packages/shared/getComponentName.js | 3 -
packages/shared/isValidElementType.js | 6 +-
scripts/error-codes/codes.json | 2 +-
scripts/jest/TestFlags.js | 6 +-
44 files changed, 38 insertions(+), 1497 deletions(-)
delete mode 100644 packages/react-reconciler/src/__tests__/ReactBlocks-test.js
delete mode 100644 packages/react/src/ReactBlock.js
diff --git a/packages/react-client/src/ReactFlightClient.js b/packages/react-client/src/ReactFlightClient.js
index 7450e736de60d..67e6ee9bf374f 100644
--- a/packages/react-client/src/ReactFlightClient.js
+++ b/packages/react-client/src/ReactFlightClient.js
@@ -8,7 +8,6 @@
*/
import type {Wakeable} from 'shared/ReactTypes';
-import type {BlockComponent, BlockRenderFunction} from 'react/src/ReactBlock';
import type {LazyComponent} from 'react/src/ReactLazy';
import type {
@@ -25,11 +24,7 @@ import {
parseModel,
} from './ReactFlightClientHostConfig';
-import {
- REACT_LAZY_TYPE,
- REACT_BLOCK_TYPE,
- REACT_ELEMENT_TYPE,
-} from 'shared/ReactSymbols';
+import {REACT_LAZY_TYPE, REACT_ELEMENT_TYPE} from 'shared/ReactSymbols';
export type JSONValue =
| number
@@ -229,15 +224,6 @@ export function reportGlobalError(response: Response, error: Error): void {
});
}
-function readMaybeChunk(maybeChunk: SomeChunk | T): T {
- if (maybeChunk == null || !(maybeChunk instanceof Chunk)) {
- // $FlowFixMe
- return maybeChunk;
- }
- const chunk: SomeChunk = (maybeChunk: any);
- return readChunk(chunk);
-}
-
function createElement(type, key, props): React$Element {
const element: any = {
// This tag allows us to uniquely identify this as a React Element
@@ -279,45 +265,6 @@ function createElement(type, key, props): React$Element {
return element;
}
-type UninitializedBlockPayload = [
- mixed,
- BlockRenderFunction | SomeChunk>,
- Data | SomeChunk,
- Response,
-];
-
-function initializeBlock(
- tuple: UninitializedBlockPayload,
-): BlockComponent {
- // Require module first and then data. The ordering matters.
- const moduleExport = readMaybeChunk(tuple[1]);
-
- // The ordering here is important because this call might suspend.
- // We don't want that to prevent the module graph for being initialized.
- const data: Data = readMaybeChunk(tuple[2]);
-
- return {
- $$typeof: REACT_BLOCK_TYPE,
- _status: -1,
- _data: data,
- _render: moduleExport,
- };
-}
-
-function createLazyBlock(
- tuple: UninitializedBlockPayload,
-): LazyComponent, UninitializedBlockPayload> {
- const lazyType: LazyComponent<
- BlockComponent,
- UninitializedBlockPayload,
- > = {
- $$typeof: REACT_LAZY_TYPE,
- _payload: tuple,
- _init: initializeBlock,
- };
- return lazyType;
-}
-
function createLazyChunkWrapper(
chunk: SomeChunk,
): LazyComponent> {
@@ -354,25 +301,15 @@ export function parseModelString(
} else {
const id = parseInt(value.substring(1), 16);
const chunk = getChunk(response, id);
- if (parentObject[0] === REACT_BLOCK_TYPE) {
- // Block types know how to deal with lazy values.
- return chunk;
- }
- // For anything else we must Suspend this block if
- // we don't yet have the value.
return readChunk(chunk);
}
}
case '@': {
- if (value === '@') {
- return REACT_BLOCK_TYPE;
- } else {
- const id = parseInt(value.substring(1), 16);
- const chunk = getChunk(response, id);
- // We create a React.lazy wrapper around any lazy values.
- // When passed into React, we'll know how to suspend on this.
- return createLazyChunkWrapper(chunk);
- }
+ const id = parseInt(value.substring(1), 16);
+ const chunk = getChunk(response, id);
+ // We create a React.lazy wrapper around any lazy values.
+ // When passed into React, we'll know how to suspend on this.
+ return createLazyChunkWrapper(chunk);
}
}
return value;
@@ -387,9 +324,6 @@ export function parseModelTuple(
// TODO: Consider having React just directly accept these arrays as elements.
// Or even change the ReactElement type to be an array.
return createElement(tuple[1], tuple[2], tuple[3]);
- } else if (tuple[0] === REACT_BLOCK_TYPE) {
- // TODO: Consider having React just directly accept these arrays as blocks.
- return createLazyBlock((tuple: any));
}
return value;
}
diff --git a/packages/react-client/src/__tests__/ReactFlight-test.js b/packages/react-client/src/__tests__/ReactFlight-test.js
index 3ba54c51262ee..838db8337121e 100644
--- a/packages/react-client/src/__tests__/ReactFlight-test.js
+++ b/packages/react-client/src/__tests__/ReactFlight-test.js
@@ -10,13 +10,10 @@
'use strict';
-const ReactFeatureFlags = require('shared/ReactFeatureFlags');
-
let act;
let React;
let ReactNoop;
let ReactNoopFlightServer;
-let ReactNoopFlightServerRuntime;
let ReactNoopFlightClient;
let ErrorBoundary;
@@ -27,7 +24,6 @@ describe('ReactFlight', () => {
React = require('react');
ReactNoop = require('react-noop-renderer');
ReactNoopFlightServer = require('react-noop-renderer/flight-server');
- ReactNoopFlightServerRuntime = require('react-noop-renderer/flight-server-runtime');
ReactNoopFlightClient = require('react-noop-renderer/flight-client');
act = ReactNoop.act;
@@ -60,25 +56,6 @@ describe('ReactFlight', () => {
};
}
- function block(render, load) {
- if (load === undefined) {
- return () => {
- return ReactNoopFlightServerRuntime.serverBlockNoData(
- moduleReference(render),
- );
- };
- }
- return function(...args) {
- const curriedLoad = () => {
- return load(...args);
- };
- return ReactNoopFlightServerRuntime.serverBlock(
- moduleReference(render),
- curriedLoad,
- );
- };
- }
-
it('can render a server component', () => {
function Bar({text}) {
return text.toUpperCase();
@@ -138,59 +115,6 @@ describe('ReactFlight', () => {
expect(ReactNoop).toMatchRenderedOutput(Hello, Seb Smith);
});
- if (ReactFeatureFlags.enableBlocksAPI) {
- it('can transfer a Block to the client and render there, without data', () => {
- function User(props, data) {
- return (
-
- {props.greeting} {typeof data}
-
- );
- }
- const loadUser = block(User);
- const model = {
- User: loadUser('Seb', 'Smith'),
- };
-
- const transport = ReactNoopFlightServer.render(model);
-
- act(() => {
- const rootModel = ReactNoopFlightClient.read(transport);
- const UserClient = rootModel.User;
- ReactNoop.render();
- });
-
- expect(ReactNoop).toMatchRenderedOutput(Hello undefined);
- });
-
- it('can transfer a Block to the client and render there, with data', () => {
- function load(firstName, lastName) {
- return {name: firstName + ' ' + lastName};
- }
- function User(props, data) {
- return (
-
- {props.greeting}, {data.name}
-
- );
- }
- const loadUser = block(User, load);
- const model = {
- User: loadUser('Seb', 'Smith'),
- };
-
- const transport = ReactNoopFlightServer.render(model);
-
- act(() => {
- const rootModel = ReactNoopFlightClient.read(transport);
- const UserClient = rootModel.User;
- ReactNoop.render();
- });
-
- expect(ReactNoop).toMatchRenderedOutput(Hello, Seb Smith);
- });
- }
-
it('should error if a non-serializable value is passed to a host component', () => {
function EventHandlerProp() {
return (
diff --git a/packages/react-debug-tools/src/ReactDebugHooks.js b/packages/react-debug-tools/src/ReactDebugHooks.js
index 24d74bd309faf..39f8f5118c265 100644
--- a/packages/react-debug-tools/src/ReactDebugHooks.js
+++ b/packages/react-debug-tools/src/ReactDebugHooks.js
@@ -30,7 +30,6 @@ import {
SimpleMemoComponent,
ContextProvider,
ForwardRef,
- Block,
} from 'react-reconciler/src/ReactWorkTags';
type CurrentDispatcherRef = typeof ReactSharedInternals.ReactCurrentDispatcher;
@@ -667,8 +666,7 @@ export function inspectHooksOfFiber(
if (
fiber.tag !== FunctionComponent &&
fiber.tag !== SimpleMemoComponent &&
- fiber.tag !== ForwardRef &&
- fiber.tag !== Block
+ fiber.tag !== ForwardRef
) {
throw new Error(
'Unknown Fiber. Needs to be a function component to inspect hooks.',
diff --git a/packages/react-reconciler/src/ReactChildFiber.new.js b/packages/react-reconciler/src/ReactChildFiber.new.js
index 463ebefe876e0..e9048959fd7a6 100644
--- a/packages/react-reconciler/src/ReactChildFiber.new.js
+++ b/packages/react-reconciler/src/ReactChildFiber.new.js
@@ -9,8 +9,6 @@
import type {ReactElement} from 'shared/ReactElementType';
import type {ReactPortal} from 'shared/ReactTypes';
-import type {BlockComponent} from 'react/src/ReactBlock';
-import type {LazyComponent} from 'react/src/ReactLazy';
import type {Fiber} from './ReactInternalTypes';
import type {Lanes} from './ReactFiberLane';
@@ -22,7 +20,6 @@ import {
REACT_FRAGMENT_TYPE,
REACT_PORTAL_TYPE,
REACT_LAZY_TYPE,
- REACT_BLOCK_TYPE,
} from 'shared/ReactSymbols';
import {
FunctionComponent,
@@ -32,12 +29,10 @@ import {
ForwardRef,
Fragment,
SimpleMemoComponent,
- Block,
} from './ReactWorkTags';
import invariant from 'shared/invariant';
import {
warnAboutStringRefs,
- enableBlocksAPI,
enableLazyElements,
} from 'shared/ReactFeatureFlags';
@@ -251,22 +246,6 @@ function warnOnFunctionType(returnFiber: Fiber) {
}
}
-// We avoid inlining this to avoid potential deopts from using try/catch.
-/** @noinline */
-function resolveLazyType(
- lazyComponent: LazyComponent,
-): LazyComponent | T {
- try {
- // If we can, let's peek at the resulting type.
- const payload = lazyComponent._payload;
- const init = lazyComponent._init;
- return init(payload);
- } catch (x) {
- // Leave it in place and let it throw again in the begin phase.
- return lazyComponent;
- }
-}
-
// This wrapper function exists because I expect to clone the code in each path
// to be able to optimize each path individually by branching early. This needs
// a compiler or we can do it manually. Helpers that don't need this branching
@@ -412,28 +391,6 @@ function ChildReconciler(shouldTrackSideEffects) {
existing._debugOwner = element._owner;
}
return existing;
- } else if (enableBlocksAPI && current.tag === Block) {
- // The new Block might not be initialized yet. We need to initialize
- // it in case initializing it turns out it would match.
- let type = element.type;
- if (type.$$typeof === REACT_LAZY_TYPE) {
- type = resolveLazyType(type);
- }
- if (
- type.$$typeof === REACT_BLOCK_TYPE &&
- ((type: any): BlockComponent)._render ===
- (current.type: BlockComponent)._render
- ) {
- // Same as above but also update the .type field.
- const existing = useFiber(current, element.props);
- existing.return = returnFiber;
- existing.type = type;
- if (__DEV__) {
- existing._debugSource = element._source;
- existing._debugOwner = element._owner;
- }
- return existing;
- }
}
}
// Insert
@@ -1151,33 +1108,6 @@ function ChildReconciler(shouldTrackSideEffects) {
}
break;
}
- case Block:
- if (enableBlocksAPI) {
- let type = element.type;
- if (type.$$typeof === REACT_LAZY_TYPE) {
- type = resolveLazyType(type);
- }
- if (type.$$typeof === REACT_BLOCK_TYPE) {
- // The new Block might not be initialized yet. We need to initialize
- // it in case initializing it turns out it would match.
- if (
- ((type: any): BlockComponent)._render ===
- (child.type: BlockComponent)._render
- ) {
- deleteRemainingChildren(returnFiber, child.sibling);
- const existing = useFiber(child, element.props);
- existing.type = type;
- existing.return = returnFiber;
- if (__DEV__) {
- existing._debugSource = element._source;
- existing._debugOwner = element._owner;
- }
- return existing;
- }
- }
- }
- // We intentionally fallthrough here if enableBlocksAPI is not on.
- // eslint-disable-next-lined no-fallthrough
default: {
if (
child.elementType === element.type ||
@@ -1380,7 +1310,6 @@ function ChildReconciler(shouldTrackSideEffects) {
// Intentionally fall through to the next case, which handles both
// functions and classes
// eslint-disable-next-lined no-fallthrough
- case Block:
case FunctionComponent:
case ForwardRef:
case SimpleMemoComponent: {
diff --git a/packages/react-reconciler/src/ReactChildFiber.old.js b/packages/react-reconciler/src/ReactChildFiber.old.js
index 0aea86f033672..adb9c0418df0e 100644
--- a/packages/react-reconciler/src/ReactChildFiber.old.js
+++ b/packages/react-reconciler/src/ReactChildFiber.old.js
@@ -9,8 +9,6 @@
import type {ReactElement} from 'shared/ReactElementType';
import type {ReactPortal} from 'shared/ReactTypes';
-import type {BlockComponent} from 'react/src/ReactBlock';
-import type {LazyComponent} from 'react/src/ReactLazy';
import type {Fiber} from './ReactInternalTypes';
import type {Lanes} from './ReactFiberLane';
@@ -22,7 +20,6 @@ import {
REACT_FRAGMENT_TYPE,
REACT_PORTAL_TYPE,
REACT_LAZY_TYPE,
- REACT_BLOCK_TYPE,
} from 'shared/ReactSymbols';
import {
FunctionComponent,
@@ -32,12 +29,10 @@ import {
ForwardRef,
Fragment,
SimpleMemoComponent,
- Block,
} from './ReactWorkTags';
import invariant from 'shared/invariant';
import {
warnAboutStringRefs,
- enableBlocksAPI,
enableLazyElements,
} from 'shared/ReactFeatureFlags';
@@ -251,22 +246,6 @@ function warnOnFunctionType(returnFiber: Fiber) {
}
}
-// We avoid inlining this to avoid potential deopts from using try/catch.
-/** @noinline */
-function resolveLazyType(
- lazyComponent: LazyComponent,
-): LazyComponent | T {
- try {
- // If we can, let's peek at the resulting type.
- const payload = lazyComponent._payload;
- const init = lazyComponent._init;
- return init(payload);
- } catch (x) {
- // Leave it in place and let it throw again in the begin phase.
- return lazyComponent;
- }
-}
-
// This wrapper function exists because I expect to clone the code in each path
// to be able to optimize each path individually by branching early. This needs
// a compiler or we can do it manually. Helpers that don't need this branching
@@ -419,28 +398,6 @@ function ChildReconciler(shouldTrackSideEffects) {
existing._debugOwner = element._owner;
}
return existing;
- } else if (enableBlocksAPI && current.tag === Block) {
- // The new Block might not be initialized yet. We need to initialize
- // it in case initializing it turns out it would match.
- let type = element.type;
- if (type.$$typeof === REACT_LAZY_TYPE) {
- type = resolveLazyType(type);
- }
- if (
- type.$$typeof === REACT_BLOCK_TYPE &&
- ((type: any): BlockComponent)._render ===
- (current.type: BlockComponent)._render
- ) {
- // Same as above but also update the .type field.
- const existing = useFiber(current, element.props);
- existing.return = returnFiber;
- existing.type = type;
- if (__DEV__) {
- existing._debugSource = element._source;
- existing._debugOwner = element._owner;
- }
- return existing;
- }
}
}
// Insert
@@ -1158,33 +1115,6 @@ function ChildReconciler(shouldTrackSideEffects) {
}
break;
}
- case Block:
- if (enableBlocksAPI) {
- let type = element.type;
- if (type.$$typeof === REACT_LAZY_TYPE) {
- type = resolveLazyType(type);
- }
- if (type.$$typeof === REACT_BLOCK_TYPE) {
- // The new Block might not be initialized yet. We need to initialize
- // it in case initializing it turns out it would match.
- if (
- ((type: any): BlockComponent)._render ===
- (child.type: BlockComponent)._render
- ) {
- deleteRemainingChildren(returnFiber, child.sibling);
- const existing = useFiber(child, element.props);
- existing.type = type;
- existing.return = returnFiber;
- if (__DEV__) {
- existing._debugSource = element._source;
- existing._debugOwner = element._owner;
- }
- return existing;
- }
- }
- }
- // We intentionally fallthrough here if enableBlocksAPI is not on.
- // eslint-disable-next-lined no-fallthrough
default: {
if (
child.elementType === element.type ||
@@ -1387,7 +1317,6 @@ function ChildReconciler(shouldTrackSideEffects) {
// Intentionally fall through to the next case, which handles both
// functions and classes
// eslint-disable-next-lined no-fallthrough
- case Block:
case FunctionComponent:
case ForwardRef:
case SimpleMemoComponent: {
diff --git a/packages/react-reconciler/src/ReactFiber.new.js b/packages/react-reconciler/src/ReactFiber.new.js
index eca759ceaba6e..0dcff2f776fb4 100644
--- a/packages/react-reconciler/src/ReactFiber.new.js
+++ b/packages/react-reconciler/src/ReactFiber.new.js
@@ -27,7 +27,6 @@ import {
enableProfilerTimer,
enableFundamentalAPI,
enableScopeAPI,
- enableBlocksAPI,
} from 'shared/ReactFeatureFlags';
import {NoFlags, Placement, StaticMask} from './ReactFiberFlags';
import {ConcurrentRoot, BlockingRoot} from './ReactRootTags';
@@ -53,7 +52,6 @@ import {
LazyComponent,
FundamentalComponent,
ScopeComponent,
- Block,
OffscreenComponent,
LegacyHiddenComponent,
} from './ReactWorkTags';
@@ -88,7 +86,6 @@ import {
REACT_LAZY_TYPE,
REACT_FUNDAMENTAL_TYPE,
REACT_SCOPE_TYPE,
- REACT_BLOCK_TYPE,
REACT_OFFSCREEN_TYPE,
REACT_LEGACY_HIDDEN_TYPE,
} from 'shared/ReactSymbols';
@@ -239,11 +236,6 @@ export function resolveLazyComponentTag(Component: Function): WorkTag {
if ($$typeof === REACT_MEMO_TYPE) {
return MemoComponent;
}
- if (enableBlocksAPI) {
- if ($$typeof === REACT_BLOCK_TYPE) {
- return Block;
- }
- }
}
return IndeterminateComponent;
}
@@ -516,9 +508,6 @@ export function createFiberFromTypeAndProps(
fiberTag = LazyComponent;
resolvedType = null;
break getTag;
- case REACT_BLOCK_TYPE:
- fiberTag = Block;
- break getTag;
case REACT_FUNDAMENTAL_TYPE:
if (enableFundamentalAPI) {
return createFiberFromFundamental(
diff --git a/packages/react-reconciler/src/ReactFiber.old.js b/packages/react-reconciler/src/ReactFiber.old.js
index 6906869acee90..57c421e9076a5 100644
--- a/packages/react-reconciler/src/ReactFiber.old.js
+++ b/packages/react-reconciler/src/ReactFiber.old.js
@@ -27,7 +27,6 @@ import {
enableProfilerTimer,
enableFundamentalAPI,
enableScopeAPI,
- enableBlocksAPI,
} from 'shared/ReactFeatureFlags';
import {NoFlags, Placement} from './ReactFiberFlags';
import {ConcurrentRoot, BlockingRoot} from './ReactRootTags';
@@ -53,7 +52,6 @@ import {
LazyComponent,
FundamentalComponent,
ScopeComponent,
- Block,
OffscreenComponent,
LegacyHiddenComponent,
} from './ReactWorkTags';
@@ -88,7 +86,6 @@ import {
REACT_LAZY_TYPE,
REACT_FUNDAMENTAL_TYPE,
REACT_SCOPE_TYPE,
- REACT_BLOCK_TYPE,
REACT_OFFSCREEN_TYPE,
REACT_LEGACY_HIDDEN_TYPE,
} from 'shared/ReactSymbols';
@@ -241,11 +238,6 @@ export function resolveLazyComponentTag(Component: Function): WorkTag {
if ($$typeof === REACT_MEMO_TYPE) {
return MemoComponent;
}
- if (enableBlocksAPI) {
- if ($$typeof === REACT_BLOCK_TYPE) {
- return Block;
- }
- }
}
return IndeterminateComponent;
}
@@ -522,9 +514,6 @@ export function createFiberFromTypeAndProps(
fiberTag = LazyComponent;
resolvedType = null;
break getTag;
- case REACT_BLOCK_TYPE:
- fiberTag = Block;
- break getTag;
case REACT_FUNDAMENTAL_TYPE:
if (enableFundamentalAPI) {
return createFiberFromFundamental(
diff --git a/packages/react-reconciler/src/ReactFiberBeginWork.new.js b/packages/react-reconciler/src/ReactFiberBeginWork.new.js
index 99dd385674eeb..163984840a21f 100644
--- a/packages/react-reconciler/src/ReactFiberBeginWork.new.js
+++ b/packages/react-reconciler/src/ReactFiberBeginWork.new.js
@@ -8,7 +8,6 @@
*/
import type {ReactProviderType, ReactContext} from 'shared/ReactTypes';
-import type {BlockComponent} from 'react/src/ReactBlock';
import type {LazyComponent as LazyComponentType} from 'react/src/ReactLazy';
import type {Fiber} from './ReactInternalTypes';
import type {FiberRoot} from './ReactInternalTypes';
@@ -49,7 +48,6 @@ import {
IncompleteClassComponent,
FundamentalComponent,
ScopeComponent,
- Block,
OffscreenComponent,
LegacyHiddenComponent,
} from './ReactWorkTags';
@@ -76,7 +74,6 @@ import {
enableFundamentalAPI,
warnAboutDefaultPropsOnFunctionComponents,
enableScopeAPI,
- enableBlocksAPI,
} from 'shared/ReactFeatureFlags';
import invariant from 'shared/invariant';
import shallowEqual from 'shared/shallowEqual';
@@ -780,75 +777,6 @@ function updateFunctionComponent(
return workInProgress.child;
}
-function updateBlock(
- current: Fiber | null,
- workInProgress: Fiber,
- block: BlockComponent,
- nextProps: any,
- renderLanes: Lanes,
-) {
- // TODO: current can be non-null here even if the component
- // hasn't yet mounted. This happens after the first render suspends.
- // We'll need to figure out if this is fine or can cause issues.
-
- const render = block._render;
- const data = block._data;
-
- // The rest is a fork of updateFunctionComponent
- let nextChildren;
- prepareToReadContext(workInProgress, renderLanes);
- if (__DEV__) {
- ReactCurrentOwner.current = workInProgress;
- setIsRendering(true);
- nextChildren = renderWithHooks(
- current,
- workInProgress,
- render,
- nextProps,
- data,
- renderLanes,
- );
- if (
- debugRenderPhaseSideEffectsForStrictMode &&
- workInProgress.mode & StrictMode
- ) {
- disableLogs();
- try {
- nextChildren = renderWithHooks(
- current,
- workInProgress,
- render,
- nextProps,
- data,
- renderLanes,
- );
- } finally {
- reenableLogs();
- }
- }
- setIsRendering(false);
- } else {
- nextChildren = renderWithHooks(
- current,
- workInProgress,
- render,
- nextProps,
- data,
- renderLanes,
- );
- }
-
- if (current !== null && !didReceiveUpdate) {
- bailoutHooks(current, workInProgress, renderLanes);
- return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
- }
-
- // React DevTools reads this flag.
- workInProgress.flags |= PerformedWork;
- reconcileChildren(current, workInProgress, nextChildren, renderLanes);
- return workInProgress.child;
-}
-
function updateClassComponent(
current: Fiber | null,
workInProgress: Fiber,
@@ -1265,20 +1193,6 @@ function mountLazyComponent(
);
return child;
}
- case Block: {
- if (enableBlocksAPI) {
- // TODO: Resolve for Hot Reloading.
- child = updateBlock(
- null,
- workInProgress,
- Component,
- props,
- renderLanes,
- );
- return child;
- }
- break;
- }
}
let hint = '';
if (__DEV__) {
@@ -3454,14 +3368,6 @@ function beginWork(
}
break;
}
- case Block: {
- if (enableBlocksAPI) {
- const block = workInProgress.type;
- const props = workInProgress.pendingProps;
- return updateBlock(current, workInProgress, block, props, renderLanes);
- }
- break;
- }
case OffscreenComponent: {
return updateOffscreenComponent(current, workInProgress, renderLanes);
}
diff --git a/packages/react-reconciler/src/ReactFiberBeginWork.old.js b/packages/react-reconciler/src/ReactFiberBeginWork.old.js
index ef41dff89a0ea..e12f7f300b472 100644
--- a/packages/react-reconciler/src/ReactFiberBeginWork.old.js
+++ b/packages/react-reconciler/src/ReactFiberBeginWork.old.js
@@ -8,7 +8,6 @@
*/
import type {ReactProviderType, ReactContext} from 'shared/ReactTypes';
-import type {BlockComponent} from 'react/src/ReactBlock';
import type {LazyComponent as LazyComponentType} from 'react/src/ReactLazy';
import type {Fiber} from './ReactInternalTypes';
import type {FiberRoot} from './ReactInternalTypes';
@@ -49,7 +48,6 @@ import {
IncompleteClassComponent,
FundamentalComponent,
ScopeComponent,
- Block,
OffscreenComponent,
LegacyHiddenComponent,
} from './ReactWorkTags';
@@ -76,7 +74,6 @@ import {
enableFundamentalAPI,
warnAboutDefaultPropsOnFunctionComponents,
enableScopeAPI,
- enableBlocksAPI,
} from 'shared/ReactFeatureFlags';
import invariant from 'shared/invariant';
import shallowEqual from 'shared/shallowEqual';
@@ -782,75 +779,6 @@ function updateFunctionComponent(
return workInProgress.child;
}
-function updateBlock(
- current: Fiber | null,
- workInProgress: Fiber,
- block: BlockComponent,
- nextProps: any,
- renderLanes: Lanes,
-) {
- // TODO: current can be non-null here even if the component
- // hasn't yet mounted. This happens after the first render suspends.
- // We'll need to figure out if this is fine or can cause issues.
-
- const render = block._render;
- const data = block._data;
-
- // The rest is a fork of updateFunctionComponent
- let nextChildren;
- prepareToReadContext(workInProgress, renderLanes);
- if (__DEV__) {
- ReactCurrentOwner.current = workInProgress;
- setIsRendering(true);
- nextChildren = renderWithHooks(
- current,
- workInProgress,
- render,
- nextProps,
- data,
- renderLanes,
- );
- if (
- debugRenderPhaseSideEffectsForStrictMode &&
- workInProgress.mode & StrictMode
- ) {
- disableLogs();
- try {
- nextChildren = renderWithHooks(
- current,
- workInProgress,
- render,
- nextProps,
- data,
- renderLanes,
- );
- } finally {
- reenableLogs();
- }
- }
- setIsRendering(false);
- } else {
- nextChildren = renderWithHooks(
- current,
- workInProgress,
- render,
- nextProps,
- data,
- renderLanes,
- );
- }
-
- if (current !== null && !didReceiveUpdate) {
- bailoutHooks(current, workInProgress, renderLanes);
- return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
- }
-
- // React DevTools reads this flag.
- workInProgress.flags |= PerformedWork;
- reconcileChildren(current, workInProgress, nextChildren, renderLanes);
- return workInProgress.child;
-}
-
function updateClassComponent(
current: Fiber | null,
workInProgress: Fiber,
@@ -1264,20 +1192,6 @@ function mountLazyComponent(
);
return child;
}
- case Block: {
- if (enableBlocksAPI) {
- // TODO: Resolve for Hot Reloading.
- child = updateBlock(
- null,
- workInProgress,
- Component,
- props,
- renderLanes,
- );
- return child;
- }
- break;
- }
}
let hint = '';
if (__DEV__) {
@@ -3470,14 +3384,6 @@ function beginWork(
}
break;
}
- case Block: {
- if (enableBlocksAPI) {
- const block = workInProgress.type;
- const props = workInProgress.pendingProps;
- return updateBlock(current, workInProgress, block, props, renderLanes);
- }
- break;
- }
case OffscreenComponent: {
return updateOffscreenComponent(current, workInProgress, renderLanes);
}
diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.new.js b/packages/react-reconciler/src/ReactFiberCommitWork.new.js
index 699b0ac45ae9b..a627cf4e17d08 100644
--- a/packages/react-reconciler/src/ReactFiberCommitWork.new.js
+++ b/packages/react-reconciler/src/ReactFiberCommitWork.new.js
@@ -55,7 +55,6 @@ import {
SuspenseListComponent,
FundamentalComponent,
ScopeComponent,
- Block,
OffscreenComponent,
LegacyHiddenComponent,
} from './ReactWorkTags';
@@ -540,8 +539,7 @@ function commitBeforeMutationEffectsOnFiber(finishedWork: Fiber) {
switch (finishedWork.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
break;
}
case ClassComponent: {
@@ -1061,8 +1059,7 @@ function recursivelyCommitLayoutEffects(
switch (tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
if (
enableProfilerTimer &&
enableProfilerCommitHooks &&
@@ -1277,8 +1274,7 @@ function commitLayoutEffectsOnFiber(
switch (tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
if (
enableProfilerTimer &&
enableProfilerCommitHooks &&
@@ -2131,8 +2127,7 @@ function commitUnmount(
case FunctionComponent:
case ForwardRef:
case MemoComponent:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
const updateQueue: FunctionComponentUpdateQueue | null = (current.updateQueue: any);
if (updateQueue !== null) {
const lastEffect = updateQueue.lastEffect;
@@ -2725,8 +2720,7 @@ function commitWork(current: Fiber | null, finishedWork: Fiber): void {
case FunctionComponent:
case ForwardRef:
case MemoComponent:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
// Layout effects are destroyed during the mutation phase so that all
// destroy functions for all fibers are called before any create functions.
// This prevents sibling component effects from interfering with each other,
@@ -2793,8 +2787,7 @@ function commitWork(current: Fiber | null, finishedWork: Fiber): void {
case FunctionComponent:
case ForwardRef:
case MemoComponent:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
// Layout effects are destroyed during the mutation phase so that all
// destroy functions for all fibers are called before any create functions.
// This prevents sibling component effects from interfering with each other,
@@ -3049,8 +3042,7 @@ function commitPassiveUnmountOnFiber(finishedWork: Fiber): void {
switch (finishedWork.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
if (
enableProfilerTimer &&
enableProfilerCommitHooks &&
@@ -3082,8 +3074,7 @@ function commitPassiveUnmountInsideDeletedTreeOnFiber(
switch (current.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
if (
enableProfilerTimer &&
enableProfilerCommitHooks &&
@@ -3115,8 +3106,7 @@ function commitPassiveMountOnFiber(
switch (finishedWork.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
if (
enableProfilerTimer &&
enableProfilerCommitHooks &&
@@ -3147,8 +3137,7 @@ function invokeLayoutEffectMountInDEV(fiber: Fiber): void {
switch (fiber.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
invokeGuardedCallback(
null,
commitHookEffectListMount,
@@ -3182,8 +3171,7 @@ function invokePassiveEffectMountInDEV(fiber: Fiber): void {
switch (fiber.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
invokeGuardedCallback(
null,
commitHookEffectListMount,
@@ -3208,8 +3196,7 @@ function invokeLayoutEffectUnmountInDEV(fiber: Fiber): void {
switch (fiber.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
invokeGuardedCallback(
null,
commitHookEffectListUnmount,
@@ -3242,8 +3229,7 @@ function invokePassiveEffectUnmountInDEV(fiber: Fiber): void {
switch (fiber.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
invokeGuardedCallback(
null,
commitHookEffectListUnmount,
diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.old.js b/packages/react-reconciler/src/ReactFiberCommitWork.old.js
index 84ff06fe7f998..1ec6ed7874812 100644
--- a/packages/react-reconciler/src/ReactFiberCommitWork.old.js
+++ b/packages/react-reconciler/src/ReactFiberCommitWork.old.js
@@ -52,7 +52,6 @@ import {
SuspenseListComponent,
FundamentalComponent,
ScopeComponent,
- Block,
OffscreenComponent,
LegacyHiddenComponent,
} from './ReactWorkTags';
@@ -245,8 +244,7 @@ function commitBeforeMutationLifeCycles(
switch (finishedWork.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
return;
}
case ClassComponent: {
@@ -484,8 +482,7 @@ function commitLifeCycles(
switch (finishedWork.tag) {
case FunctionComponent:
case ForwardRef:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
// At this point layout effects have already been destroyed (during mutation phase).
// This is done to prevent sibling component effects from interfering with each other,
// e.g. a destroy function in one component should never override a ref set
@@ -924,8 +921,7 @@ function commitUnmount(
case FunctionComponent:
case ForwardRef:
case MemoComponent:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
const updateQueue: FunctionComponentUpdateQueue | null = (current.updateQueue: any);
if (updateQueue !== null) {
const lastEffect = updateQueue.lastEffect;
@@ -1486,8 +1482,7 @@ function commitWork(current: Fiber | null, finishedWork: Fiber): void {
case FunctionComponent:
case ForwardRef:
case MemoComponent:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
// Layout effects are destroyed during the mutation phase so that all
// destroy functions for all fibers are called before any create functions.
// This prevents sibling component effects from interfering with each other,
@@ -1549,8 +1544,7 @@ function commitWork(current: Fiber | null, finishedWork: Fiber): void {
case FunctionComponent:
case ForwardRef:
case MemoComponent:
- case SimpleMemoComponent:
- case Block: {
+ case SimpleMemoComponent: {
// Layout effects are destroyed during the mutation phase so that all
// destroy functions for all fibers are called before any create functions.
// This prevents sibling component effects from interfering with each other,
diff --git a/packages/react-reconciler/src/ReactFiberCompleteWork.new.js b/packages/react-reconciler/src/ReactFiberCompleteWork.new.js
index e32b0d394f5b6..0a187f9c84b07 100644
--- a/packages/react-reconciler/src/ReactFiberCompleteWork.new.js
+++ b/packages/react-reconciler/src/ReactFiberCompleteWork.new.js
@@ -54,7 +54,6 @@ import {
IncompleteClassComponent,
FundamentalComponent,
ScopeComponent,
- Block,
OffscreenComponent,
LegacyHiddenComponent,
} from './ReactWorkTags';
@@ -140,7 +139,6 @@ import {
enableSuspenseServerRenderer,
enableFundamentalAPI,
enableScopeAPI,
- enableBlocksAPI,
enableProfilerTimer,
} from 'shared/ReactFeatureFlags';
import {
@@ -1505,12 +1503,6 @@ function completeWork(
}
break;
}
- case Block:
- if (enableBlocksAPI) {
- bubbleProperties(workInProgress);
- return null;
- }
- break;
case OffscreenComponent:
case LegacyHiddenComponent: {
popRenderLanes(workInProgress);
diff --git a/packages/react-reconciler/src/ReactFiberCompleteWork.old.js b/packages/react-reconciler/src/ReactFiberCompleteWork.old.js
index 618705accff86..21ffea1c92dd7 100644
--- a/packages/react-reconciler/src/ReactFiberCompleteWork.old.js
+++ b/packages/react-reconciler/src/ReactFiberCompleteWork.old.js
@@ -54,7 +54,6 @@ import {
IncompleteClassComponent,
FundamentalComponent,
ScopeComponent,
- Block,
OffscreenComponent,
LegacyHiddenComponent,
} from './ReactWorkTags';
@@ -120,7 +119,6 @@ import {
enableSuspenseServerRenderer,
enableFundamentalAPI,
enableScopeAPI,
- enableBlocksAPI,
enableProfilerTimer,
} from 'shared/ReactFeatureFlags';
import {
@@ -1256,11 +1254,6 @@ function completeWork(
}
break;
}
- case Block:
- if (enableBlocksAPI) {
- return null;
- }
- break;
case OffscreenComponent:
case LegacyHiddenComponent: {
popRenderLanes(workInProgress);
diff --git a/packages/react-reconciler/src/ReactFiberComponentStack.js b/packages/react-reconciler/src/ReactFiberComponentStack.js
index b539ee7950841..43ad9fd3b542b 100644
--- a/packages/react-reconciler/src/ReactFiberComponentStack.js
+++ b/packages/react-reconciler/src/ReactFiberComponentStack.js
@@ -18,7 +18,6 @@ import {
IndeterminateComponent,
ForwardRef,
SimpleMemoComponent,
- Block,
ClassComponent,
} from './ReactWorkTags';
import {
@@ -49,8 +48,6 @@ function describeFiber(fiber: Fiber): string {
return describeFunctionComponentFrame(fiber.type, source, owner);
case ForwardRef:
return describeFunctionComponentFrame(fiber.type.render, source, owner);
- case Block:
- return describeFunctionComponentFrame(fiber.type._render, source, owner);
case ClassComponent:
return describeClassComponentFrame(fiber.type, source, owner);
default:
diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.new.js b/packages/react-reconciler/src/ReactFiberWorkLoop.new.js
index ee2df3564cc02..d80988906706c 100644
--- a/packages/react-reconciler/src/ReactFiberWorkLoop.new.js
+++ b/packages/react-reconciler/src/ReactFiberWorkLoop.new.js
@@ -110,7 +110,6 @@ import {
ForwardRef,
MemoComponent,
SimpleMemoComponent,
- Block,
} from './ReactWorkTags';
import {LegacyRoot} from './ReactRootTags';
import {
@@ -2447,8 +2446,7 @@ function warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {
tag !== FunctionComponent &&
tag !== ForwardRef &&
tag !== MemoComponent &&
- tag !== SimpleMemoComponent &&
- tag !== Block
+ tag !== SimpleMemoComponent
) {
// Only warn for user-defined components, not internal ones like Suspense.
return;
@@ -2495,8 +2493,7 @@ function warnAboutUpdateOnUnmountedFiberInDEV(fiber) {
tag !== FunctionComponent &&
tag !== ForwardRef &&
tag !== MemoComponent &&
- tag !== SimpleMemoComponent &&
- tag !== Block
+ tag !== SimpleMemoComponent
) {
// Only warn for user-defined components, not internal ones like Suspense.
return;
diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.old.js b/packages/react-reconciler/src/ReactFiberWorkLoop.old.js
index cece268e3d017..24875508a9c3c 100644
--- a/packages/react-reconciler/src/ReactFiberWorkLoop.old.js
+++ b/packages/react-reconciler/src/ReactFiberWorkLoop.old.js
@@ -108,7 +108,6 @@ import {
ForwardRef,
MemoComponent,
SimpleMemoComponent,
- Block,
OffscreenComponent,
LegacyHiddenComponent,
ScopeComponent,
@@ -3006,8 +3005,7 @@ function warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {
tag !== FunctionComponent &&
tag !== ForwardRef &&
tag !== MemoComponent &&
- tag !== SimpleMemoComponent &&
- tag !== Block
+ tag !== SimpleMemoComponent
) {
// Only warn for user-defined components, not internal ones like Suspense.
return;
@@ -3054,8 +3052,7 @@ function warnAboutUpdateOnUnmountedFiberInDEV(fiber) {
tag !== FunctionComponent &&
tag !== ForwardRef &&
tag !== MemoComponent &&
- tag !== SimpleMemoComponent &&
- tag !== Block
+ tag !== SimpleMemoComponent
) {
// Only warn for user-defined components, not internal ones like Suspense.
return;
diff --git a/packages/react-reconciler/src/ReactWorkTags.js b/packages/react-reconciler/src/ReactWorkTags.js
index 44717fd372e53..84cd9ebd4ba55 100644
--- a/packages/react-reconciler/src/ReactWorkTags.js
+++ b/packages/react-reconciler/src/ReactWorkTags.js
@@ -31,8 +31,7 @@ export type WorkTag =
| 20
| 21
| 22
- | 23
- | 24;
+ | 23;
export const FunctionComponent = 0;
export const ClassComponent = 1;
@@ -56,6 +55,5 @@ export const DehydratedFragment = 18;
export const SuspenseListComponent = 19;
export const FundamentalComponent = 20;
export const ScopeComponent = 21;
-export const Block = 22;
-export const OffscreenComponent = 23;
-export const LegacyHiddenComponent = 24;
+export const OffscreenComponent = 22;
+export const LegacyHiddenComponent = 23;
diff --git a/packages/react-reconciler/src/__tests__/ReactBlocks-test.js b/packages/react-reconciler/src/__tests__/ReactBlocks-test.js
deleted file mode 100644
index 18971c18a0c4a..0000000000000
--- a/packages/react-reconciler/src/__tests__/ReactBlocks-test.js
+++ /dev/null
@@ -1,351 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @emails react-core
- * @jest-environment node
- */
-
-let React;
-let ReactNoop;
-let useState;
-let Suspense;
-let block;
-let readString;
-let resolvePromises;
-let Scheduler;
-
-describe('ReactBlocks', () => {
- beforeEach(() => {
- jest.resetModules();
-
- Scheduler = require('scheduler');
- React = require('react');
- ReactNoop = require('react-noop-renderer');
-
- block = React.unstable_block;
- useState = React.useState;
- Suspense = React.Suspense;
- const cache = new Map();
- let unresolved = [];
- readString = function(text) {
- let entry = cache.get(text);
- if (!entry) {
- entry = {
- promise: new Promise(resolve => {
- unresolved.push(() => {
- entry.resolved = true;
- resolve();
- });
- }),
- resolved: false,
- };
- cache.set(text, entry);
- }
- if (!entry.resolved) {
- throw entry.promise;
- }
- return text;
- };
-
- resolvePromises = () => {
- const res = unresolved;
- unresolved = [];
- res.forEach(r => r());
- };
- });
-
- // @gate experimental
- it('renders a simple component', () => {
- function User(props, data) {
- return {typeof data}
;
- }
-
- function App({Component}) {
- return (
-
-
-
- );
- }
-
- const loadUser = block(User);
-
- ReactNoop.act(() => {
- ReactNoop.render();
- });
-
- expect(ReactNoop).toMatchRenderedOutput(undefined
);
- });
-
- // @gate experimental
- it('prints the name of the render function in warnings', () => {
- function load(firstName) {
- return {
- name: firstName,
- };
- }
-
- function User(props, data) {
- const array = [{data.name}];
- return {array}
;
- }
-
- function App({Component}) {
- return (
-
-
-
- );
- }
-
- const loadUser = block(User, load);
-
- expect(() => {
- ReactNoop.act(() => {
- ReactNoop.render();
- });
- }).toErrorDev(
- 'Warning: Each child in a list should have a unique ' +
- '"key" prop.\n\nCheck the render method of `User`. See ' +
- 'https://reactjs.org/link/warning-keys for more information.\n' +
- ' in span (at **)\n' +
- ' in User (at **)\n' +
- ' in Suspense (at **)\n' +
- ' in App (at **)',
- );
- });
-
- // @gate experimental
- it('renders a component with a suspending load', async () => {
- function load(id) {
- return {
- id: id,
- name: readString('Sebastian'),
- };
- }
-
- function Render(props, data) {
- return (
-
- {props.title}: {data.name}
-
- );
- }
-
- const loadUser = block(Render, load);
-
- function App({User}) {
- return (
-
-
-
- );
- }
-
- await ReactNoop.act(async () => {
- ReactNoop.render();
- });
-
- expect(ReactNoop).toMatchRenderedOutput('Loading...');
-
- await ReactNoop.act(async () => {
- resolvePromises();
- });
-
- expect(ReactNoop).toMatchRenderedOutput(Name: Sebastian);
- });
-
- // @gate experimental
- it('does not support a lazy wrapper around a chunk', async () => {
- function load(id) {
- return {
- id: id,
- name: readString('Sebastian'),
- };
- }
-
- function Render(props, data) {
- return (
-
- {props.title}: {data.name}
-
- );
- }
-
- const loadUser = block(Render, load);
-
- function App({User}) {
- return (
-
-
-
- );
- }
-
- let resolveLazy;
- const LazyUser = React.lazy(
- () =>
- new Promise(resolve => {
- resolveLazy = function() {
- resolve({
- default: loadUser(123),
- });
- };
- }),
- );
-
- await ReactNoop.act(async () => {
- ReactNoop.render();
- });
-
- expect(ReactNoop).toMatchRenderedOutput('Loading...');
-
- // Resolve the component.
- await resolveLazy();
-
- expect(Scheduler).toFlushAndThrow(
- 'Element type is invalid. Received a promise that resolves to: [object Object]. ' +
- 'Lazy element type must resolve to a class or function.' +
- (__DEV__
- ? ' Did you wrap a component in React.lazy() more than once?'
- : ''),
- );
- });
-
- // @gate experimental
- it('can receive updated data for the same component', async () => {
- function load(firstName) {
- return {
- name: firstName,
- };
- }
-
- function Render(props, data) {
- const [initialName] = useState(data.name);
- return (
- <>
- Initial name: {initialName}
- Latest name: {data.name}
- >
- );
- }
-
- const loadUser = block(Render, load);
-
- function App({User}) {
- return (
-
-
-
- );
- }
-
- await ReactNoop.act(async () => {
- ReactNoop.render();
- });
-
- expect(ReactNoop).toMatchRenderedOutput(
- <>
- Initial name: Sebastian
- Latest name: Sebastian
- >,
- );
-
- await ReactNoop.act(async () => {
- ReactNoop.render();
- });
-
- expect(ReactNoop).toMatchRenderedOutput(
- <>
- Initial name: Sebastian
- Latest name: Dan
- >,
- );
- });
-
- // Regression test.
- // @gate experimental
- it('does not render stale data after ping', async () => {
- function Child() {
- return Name: {readString('Sebastian')};
- }
-
- const loadParent = block(
- function Parent(props, data) {
- return (
-
- {data.name ? : Empty}
-
- );
- },
- function load(name) {
- return {name};
- },
- );
-
- function App({Page}) {
- return ;
- }
-
- await ReactNoop.act(async () => {
- ReactNoop.render();
- });
- expect(ReactNoop).toMatchRenderedOutput(Empty);
-
- await ReactNoop.act(async () => {
- ReactNoop.render();
- });
- await ReactNoop.act(async () => {
- resolvePromises();
- });
- expect(ReactNoop).toMatchRenderedOutput(Name: Sebastian);
- });
-
- // Regression test.
- // @gate experimental
- it('does not render stale data after ping and setState', async () => {
- function Child() {
- return Name: {readString('Sebastian')};
- }
-
- let _setSuspend;
- const loadParent = block(
- function Parent(props, data) {
- const [suspend, setSuspend] = useState(true);
- _setSuspend = setSuspend;
- if (!suspend) {
- return {data.name};
- }
- return (
-
- {data.name ? : Empty}
-
- );
- },
- function load(name) {
- return {name};
- },
- );
-
- function App({Page}) {
- return ;
- }
-
- await ReactNoop.act(async () => {
- ReactNoop.render();
- });
- expect(ReactNoop).toMatchRenderedOutput(Empty);
-
- await ReactNoop.act(async () => {
- ReactNoop.render();
- });
- await ReactNoop.act(async () => {
- _setSuspend(false);
- resolvePromises();
- });
- expect(ReactNoop).toMatchRenderedOutput(Sebastian);
- });
-});
diff --git a/packages/react-server/src/ReactFlightServer.js b/packages/react-server/src/ReactFlightServer.js
index 97bee6c04c605..76690a192eca8 100644
--- a/packages/react-server/src/ReactFlightServer.js
+++ b/packages/react-server/src/ReactFlightServer.js
@@ -31,7 +31,6 @@ import {
} from './ReactFlightServerConfig';
import {
- REACT_BLOCK_TYPE,
REACT_ELEMENT_TYPE,
REACT_DEBUG_TRACING_MODE_TYPE,
REACT_FORWARD_REF_TYPE,
@@ -42,7 +41,6 @@ import {
REACT_OFFSCREEN_TYPE,
REACT_PROFILER_TYPE,
REACT_SCOPE_TYPE,
- REACT_SERVER_BLOCK_TYPE,
REACT_STRICT_MODE_TYPE,
REACT_SUSPENSE_TYPE,
REACT_SUSPENSE_LIST_TYPE,
@@ -138,8 +136,6 @@ function attemptResolveElement(element: React$Element): ReactModel {
} else if (typeof type === 'string') {
// This is a host element. E.g. HTML.
return [REACT_ELEMENT_TYPE, type, element.key, element.props];
- } else if (type[0] === REACT_SERVER_BLOCK_TYPE) {
- return [REACT_ELEMENT_TYPE, type, element.key, element.props];
} else if (
type === REACT_FRAGMENT_TYPE ||
type === REACT_STRICT_MODE_TYPE ||
@@ -386,62 +382,13 @@ export function resolveModelToJSON(
switch (value) {
case REACT_ELEMENT_TYPE:
return '$';
- case REACT_SERVER_BLOCK_TYPE:
- return '@';
case REACT_LAZY_TYPE:
- case REACT_BLOCK_TYPE:
invariant(
false,
- 'React Blocks (and Lazy Components) are expected to be replaced by a ' +
- 'compiler on the server. Try configuring your compiler set up and avoid ' +
- 'using React.lazy inside of Blocks.',
+ 'React Lazy Components are not yet supported on the server.',
);
}
- if (parent[0] === REACT_SERVER_BLOCK_TYPE) {
- // We're currently encoding part of a Block. Look up which key.
- switch (key) {
- case '1': {
- // Module reference
- // Encode as a normal value.
- break;
- }
- case '2': {
- // Load function
- const load: () => ReactModel = (value: any);
- try {
- // Attempt to resolve the data.
- return load();
- } catch (x) {
- if (
- typeof x === 'object' &&
- x !== null &&
- typeof x.then === 'function'
- ) {
- // Something suspended, we'll need to create a new segment and resolve it later.
- request.pendingChunks++;
- const newSegment = createSegment(request, load);
- const ping = newSegment.ping;
- x.then(ping, ping);
- return serializeByValueID(newSegment.id);
- } else {
- // This load failed, encode the error as a separate row and reference that.
- request.pendingChunks++;
- const errorId = request.nextChunkId++;
- emitErrorChunk(request, errorId, x);
- return serializeByValueID(errorId);
- }
- }
- }
- default: {
- invariant(
- false,
- 'A server block should never encode any other slots. This is a bug in React.',
- );
- }
- }
- }
-
// Resolve server components.
while (
typeof value === 'object' &&
diff --git a/packages/react-server/src/ReactFlightServerRuntime.js b/packages/react-server/src/ReactFlightServerRuntime.js
index be12e47baa857..af30148879fb8 100644
--- a/packages/react-server/src/ReactFlightServerRuntime.js
+++ b/packages/react-server/src/ReactFlightServerRuntime.js
@@ -6,47 +6,3 @@
*
* @flow
*/
-
-import type {BlockRenderFunction} from 'react/src/ReactBlock';
-
-import type {ModuleReference} from './ReactFlightServerConfig';
-
-import {REACT_SERVER_BLOCK_TYPE} from 'shared/ReactSymbols';
-
-export type ServerBlockComponent =
- | [
- Symbol | number,
- ModuleReference>,
- () => Data,
- ]
- | [Symbol | number, ModuleReference>];
-
-opaque type ServerBlock: React$AbstractComponent<
- Props,
- null,
-> = React$AbstractComponent;
-
-export function serverBlock(
- moduleReference: ModuleReference>,
- loadData: () => Data,
-): ServerBlock {
- const blockComponent: ServerBlockComponent = [
- REACT_SERVER_BLOCK_TYPE,
- moduleReference,
- loadData,
- ];
-
- // $FlowFixMe: Upstream BlockComponent to Flow as a valid Node.
- return blockComponent;
-}
-
-export function serverBlockNoData(
- moduleReference: ModuleReference>,
-): ServerBlock {
- const blockComponent: ServerBlockComponent = [
- REACT_SERVER_BLOCK_TYPE,
- moduleReference,
- ];
- // $FlowFixMe: Upstream BlockComponent to Flow as a valid Node.
- return blockComponent;
-}
diff --git a/packages/react-test-renderer/src/ReactTestRenderer.js b/packages/react-test-renderer/src/ReactTestRenderer.js
index 899f4c6542886..c4eea12e8a550 100644
--- a/packages/react-test-renderer/src/ReactTestRenderer.js
+++ b/packages/react-test-renderer/src/ReactTestRenderer.js
@@ -39,7 +39,6 @@ import {
Profiler,
MemoComponent,
SimpleMemoComponent,
- Block,
IncompleteClassComponent,
ScopeComponent,
} from 'react-reconciler/src/ReactWorkTags';
@@ -195,14 +194,6 @@ function toTree(node: ?Fiber) {
instance: null,
rendered: childrenToTree(node.child),
};
- case Block:
- return {
- nodeType: 'block',
- type: node.type,
- props: {...node.memoizedProps},
- instance: null,
- rendered: childrenToTree(node.child),
- };
case HostComponent: {
return {
nodeType: 'host',
@@ -240,7 +231,6 @@ const validWrapperTypes = new Set([
ForwardRef,
MemoComponent,
SimpleMemoComponent,
- Block,
// Normally skipped, but used when there's more than one root child.
HostRoot,
]);
diff --git a/packages/react-transport-dom-relay/src/__tests__/ReactFlightDOMRelay-test.internal.js b/packages/react-transport-dom-relay/src/__tests__/ReactFlightDOMRelay-test.internal.js
index a9dd37c2eddcb..035f5c1abd0b8 100644
--- a/packages/react-transport-dom-relay/src/__tests__/ReactFlightDOMRelay-test.internal.js
+++ b/packages/react-transport-dom-relay/src/__tests__/ReactFlightDOMRelay-test.internal.js
@@ -12,7 +12,6 @@ let React;
let ReactDOM;
let JSResourceReference;
let ReactDOMFlightRelayServer;
-let ReactDOMFlightRelayServerRuntime;
let ReactDOMFlightRelayClient;
describe('ReactFlightDOMRelay', () => {
@@ -23,7 +22,6 @@ describe('ReactFlightDOMRelay', () => {
React = require('react');
ReactDOM = require('react-dom');
ReactDOMFlightRelayServer = require('react-transport-dom-relay/server');
- ReactDOMFlightRelayServerRuntime = require('react-transport-dom-relay/server-runtime');
ReactDOMFlightRelayClient = require('react-transport-dom-relay');
JSResourceReference = require('JSResourceReference');
});
@@ -50,22 +48,6 @@ describe('ReactFlightDOMRelay', () => {
return model;
}
- function block(render, load) {
- const reference = new JSResourceReference(render);
- if (load === undefined) {
- return ReactDOMFlightRelayServerRuntime.serverBlock(reference);
- }
- return function(...args) {
- const curriedLoad = () => {
- return load(...args);
- };
- return ReactDOMFlightRelayServerRuntime.serverBlock(
- reference,
- curriedLoad,
- );
- };
- }
-
it('can render a server component', () => {
function Bar({text}) {
return text.toUpperCase();
@@ -134,38 +116,6 @@ describe('ReactFlightDOMRelay', () => {
expect(container.innerHTML).toEqual('Hello, Seb Smith');
});
- // @gate experimental
- it('can transfer a Block to the client and render there', () => {
- function load(firstName, lastName) {
- return {name: firstName + ' ' + lastName};
- }
- function User(props, data) {
- return (
-
- {props.greeting}, {data.name}
-
- );
- }
- const loadUser = block(User, load);
- const model = {
- User: loadUser('Seb', 'Smith'),
- };
-
- const transport = [];
- ReactDOMFlightRelayServer.render(model, transport);
-
- const modelClient = readThrough(transport);
-
- const container = document.createElement('div');
- const root = ReactDOM.createRoot(container);
- act(() => {
- const UserClient = modelClient.User;
- root.render();
- });
-
- expect(container.innerHTML).toEqual('Hello, Seb Smith');
- });
-
// @gate experimental
it('can reasonably handle different element types', () => {
const {
diff --git a/packages/react-transport-dom-webpack/src/__tests__/ReactFlightDOM-test.js b/packages/react-transport-dom-webpack/src/__tests__/ReactFlightDOM-test.js
index 8b690219ec6ea..04910ff98e615 100644
--- a/packages/react-transport-dom-webpack/src/__tests__/ReactFlightDOM-test.js
+++ b/packages/react-transport-dom-webpack/src/__tests__/ReactFlightDOM-test.js
@@ -29,7 +29,6 @@ let Stream;
let React;
let ReactDOM;
let ReactTransportDOMServer;
-let ReactTransportDOMServerRuntime;
let ReactTransportDOMClient;
describe('ReactFlightDOM', () => {
@@ -42,7 +41,6 @@ describe('ReactFlightDOM', () => {
React = require('react');
ReactDOM = require('react-dom');
ReactTransportDOMServer = require('react-transport-dom-webpack/server');
- ReactTransportDOMServerRuntime = require('react-transport-dom-webpack/server-runtime');
ReactTransportDOMClient = require('react-transport-dom-webpack');
});
@@ -78,25 +76,6 @@ describe('ReactFlightDOM', () => {
return {$$typeof: MODULE_TAG, name: 'path/' + idx};
}
- function block(render, load) {
- if (load === undefined) {
- return () => {
- return ReactTransportDOMServerRuntime.serverBlockNoData(
- moduleReference(render),
- );
- };
- }
- return function(...args) {
- const curriedLoad = () => {
- return load(...args);
- };
- return ReactTransportDOMServerRuntime.serverBlock(
- moduleReference(render),
- curriedLoad,
- );
- };
- }
-
async function waitForSuspense(fn) {
while (true) {
try {
@@ -273,220 +252,6 @@ describe('ReactFlightDOM', () => {
expect(container.innerHTML).toBe('@div
');
});
- // @gate experimental
- it('should progressively reveal Blocks', async () => {
- const {Suspense} = React;
-
- class ErrorBoundary extends React.Component {
- state = {hasError: false, error: null};
- static getDerivedStateFromError(error) {
- return {
- hasError: true,
- error,
- };
- }
- render() {
- if (this.state.hasError) {
- return this.props.fallback(this.state.error);
- }
- return this.props.children;
- }
- }
-
- // Model
- function Text({children}) {
- return children;
- }
- function makeDelayedTextBlock() {
- let error, _resolve, _reject;
- let promise = new Promise((resolve, reject) => {
- _resolve = () => {
- promise = null;
- resolve();
- };
- _reject = e => {
- error = e;
- promise = null;
- reject(e);
- };
- });
- function load() {
- if (promise) {
- throw promise;
- }
- if (error) {
- throw error;
- }
- return 'data';
- }
- function DelayedText({children}, data) {
- if (data !== 'data') {
- throw new Error('No data');
- }
- return {children};
- }
- const loadBlock = block(DelayedText, load);
- return [loadBlock(), _resolve, _reject];
- }
-
- function makeDelayedText() {
- let error, _resolve, _reject;
- let promise = new Promise((resolve, reject) => {
- _resolve = () => {
- promise = null;
- resolve();
- };
- _reject = e => {
- error = e;
- promise = null;
- reject(e);
- };
- });
- function DelayedText({children}, data) {
- if (promise) {
- throw promise;
- }
- if (error) {
- throw error;
- }
- return {children};
- }
- return [DelayedText, _resolve, _reject];
- }
-
- const [FriendsModel, resolveFriendsModel] = makeDelayedText();
- const [NameModel, resolveNameModel] = makeDelayedText();
- const [PostsModel, resolvePostsModel] = makeDelayedTextBlock();
- const [PhotosModel, resolvePhotosModel] = makeDelayedTextBlock();
- const [GamesModel, , rejectGamesModel] = makeDelayedTextBlock();
- function ProfileMore() {
- return {
- avatar: :avatar:,
- friends: :friends:,
- posts: :posts:,
- games: :games:,
- };
- }
- const profileModel = {
- photos: :photos:,
- name: :name:,
- more: ,
- };
-
- // View
- function ProfileDetails({response}) {
- const model = response.readRoot();
- return (
-
- {model.name}
- {model.more.avatar}
-
- );
- }
- function ProfileSidebar({response}) {
- const model = response.readRoot();
- return (
-
- {model.photos}
- {model.more.friends}
-
- );
- }
- function ProfilePosts({response}) {
- return {response.readRoot().more.posts}
;
- }
- function ProfileGames({response}) {
- return {response.readRoot().more.games}
;
- }
- function ProfilePage({response}) {
- return (
- <>
- (loading)
}>
-
- (loading sidebar)}>
-
-
- (loading posts)}>
-
-
- {e.message}
}>
- (loading games)}>
-
-
-
-
- >
- );
- }
-
- const {writable, readable} = getTestStream();
- ReactTransportDOMServer.pipeToNodeWritable(
- profileModel,
- writable,
- webpackMap,
- );
- const response = ReactTransportDOMClient.createFromReadableStream(readable);
-
- const container = document.createElement('div');
- const root = ReactDOM.unstable_createRoot(container);
- await act(async () => {
- root.render();
- });
- expect(container.innerHTML).toBe('(loading)
');
-
- // This isn't enough to show anything.
- await act(async () => {
- resolveFriendsModel();
- });
- expect(container.innerHTML).toBe('(loading)
');
-
- // We can now show the details. Sidebar and posts are still loading.
- await act(async () => {
- resolveNameModel();
- });
- // Advance time enough to trigger a nested fallback.
- jest.advanceTimersByTime(500);
- expect(container.innerHTML).toBe(
- ':name::avatar:
' +
- '(loading sidebar)
' +
- '(loading posts)
' +
- '(loading games)
',
- );
-
- // Let's *fail* loading games.
- await act(async () => {
- rejectGamesModel(new Error('Game over'));
- });
- expect(container.innerHTML).toBe(
- ':name::avatar:
' +
- '(loading sidebar)
' +
- '(loading posts)
' +
- 'Game over
', // TODO: should not have message in prod.
- );
-
- // We can now show the sidebar.
- await act(async () => {
- resolvePhotosModel();
- });
- expect(container.innerHTML).toBe(
- ':name::avatar:
' +
- ':photos::friends:
' +
- '(loading posts)
' +
- 'Game over
', // TODO: should not have message in prod.
- );
-
- // Show everything.
- await act(async () => {
- resolvePostsModel();
- });
- expect(container.innerHTML).toBe(
- ':name::avatar:
' +
- ':photos::friends:
' +
- ':posts:
' +
- 'Game over
', // TODO: should not have message in prod.
- );
- });
-
// @gate experimental
it('should progressively reveal server components', async () => {
const {Suspense} = React;
diff --git a/packages/react/index.classic.fb.js b/packages/react/index.classic.fb.js
index 5f79d3de1fef3..db5d2b2a22331 100644
--- a/packages/react/index.classic.fb.js
+++ b/packages/react/index.classic.fb.js
@@ -50,9 +50,6 @@ export {
startTransition as unstable_startTransition,
SuspenseList,
SuspenseList as unstable_SuspenseList,
- // enableBlocksAPI
- block,
- block as unstable_block,
// enableScopeAPI
unstable_Scope,
unstable_useOpaqueIdentifier,
diff --git a/packages/react/index.experimental.js b/packages/react/index.experimental.js
index 0b5e7efd13505..3b2b47f1ee7cf 100644
--- a/packages/react/index.experimental.js
+++ b/packages/react/index.experimental.js
@@ -44,8 +44,6 @@ export {
useDeferredValue as unstable_useDeferredValue,
startTransition as unstable_startTransition,
SuspenseList as unstable_SuspenseList,
- // enableBlocksAPI
- block as unstable_block,
unstable_useOpaqueIdentifier,
// enableDebugTracing
unstable_DebugTracingMode,
diff --git a/packages/react/index.js b/packages/react/index.js
index 9fd5ccfbf37fb..5a170667c0826 100644
--- a/packages/react/index.js
+++ b/packages/react/index.js
@@ -78,8 +78,6 @@ export {
useDeferredValue as unstable_useDeferredValue,
SuspenseList,
SuspenseList as unstable_SuspenseList,
- block,
- block as unstable_block,
unstable_LegacyHidden,
unstable_createFundamental,
unstable_Scope,
diff --git a/packages/react/index.modern.fb.js b/packages/react/index.modern.fb.js
index a5b509460d896..8217fa158d12c 100644
--- a/packages/react/index.modern.fb.js
+++ b/packages/react/index.modern.fb.js
@@ -49,9 +49,6 @@ export {
startTransition as unstable_startTransition,
SuspenseList,
SuspenseList as unstable_SuspenseList,
- // enableBlocksAPI
- block,
- block as unstable_block,
// enableScopeAPI
unstable_Scope,
unstable_useOpaqueIdentifier,
diff --git a/packages/react/src/React.js b/packages/react/src/React.js
index d5367da328bb5..c5e61fb55c67b 100644
--- a/packages/react/src/React.js
+++ b/packages/react/src/React.js
@@ -32,7 +32,6 @@ import {createContext} from './ReactContext';
import {lazy} from './ReactLazy';
import {forwardRef} from './ReactForwardRef';
import {memo} from './ReactMemo';
-import {block} from './ReactBlock';
import {
useCallback,
useContext,
@@ -111,8 +110,6 @@ export {
useDeferredValue,
REACT_SUSPENSE_LIST_TYPE as SuspenseList,
REACT_LEGACY_HIDDEN_TYPE as unstable_LegacyHidden,
- // enableBlocksAPI
- block,
// enableFundamentalAPI
createFundamental as unstable_createFundamental,
// enableScopeAPI
diff --git a/packages/react/src/ReactBlock.js b/packages/react/src/ReactBlock.js
deleted file mode 100644
index de5c3ac7ec7ae..0000000000000
--- a/packages/react/src/ReactBlock.js
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @flow
- */
-
-import type {LazyComponent} from './ReactLazy';
-
-import {
- REACT_LAZY_TYPE,
- REACT_BLOCK_TYPE,
- REACT_MEMO_TYPE,
- REACT_FORWARD_REF_TYPE,
-} from 'shared/ReactSymbols';
-
-type BlockLoadFunction, Data> = (...args: Args) => Data;
-export type BlockRenderFunction = (
- props: Props,
- data: Data,
-) => React$Node;
-
-type Payload, Data> = {
- load: BlockLoadFunction,
- args: Args,
- render: BlockRenderFunction,
-};
-
-export type BlockComponent = {
- $$typeof: Symbol | number,
- _data: Data,
- _render: BlockRenderFunction,
-};
-
-opaque type Block: React$AbstractComponent<
- Props,
- null,
-> = React$AbstractComponent;
-
-function lazyInitializer, Data>(
- payload: Payload,
-): BlockComponent {
- return {
- $$typeof: REACT_BLOCK_TYPE,
- _data: payload.load.apply(null, payload.args),
- _render: payload.render,
- };
-}
-
-export function block, Props, Data>(
- render: BlockRenderFunction,
- load?: BlockLoadFunction,
-): (...args: Args) => Block {
- if (__DEV__) {
- if (load !== undefined && typeof load !== 'function') {
- console.error(
- 'Blocks require a load function, if provided, but was given %s.',
- load === null ? 'null' : typeof load,
- );
- }
- if (render != null && render.$$typeof === REACT_MEMO_TYPE) {
- console.error(
- 'Blocks require a render function but received a `memo` ' +
- 'component. Use `memo` on an inner component instead.',
- );
- } else if (render != null && render.$$typeof === REACT_FORWARD_REF_TYPE) {
- console.error(
- 'Blocks require a render function but received a `forwardRef` ' +
- 'component. Use `forwardRef` on an inner component instead.',
- );
- } else if (typeof render !== 'function') {
- console.error(
- 'Blocks require a render function but was given %s.',
- render === null ? 'null' : typeof render,
- );
- } else if (render.length !== 0 && render.length !== 2) {
- // Warn if it's not accepting two args.
- // Do not warn for 0 arguments because it could be due to usage of the 'arguments' object.
- console.error(
- 'Block render functions accept exactly two parameters: props and data. %s',
- render.length === 1
- ? 'Did you forget to use the data parameter?'
- : 'Any additional parameter will be undefined.',
- );
- }
-
- if (
- render != null &&
- (render.defaultProps != null || render.propTypes != null)
- ) {
- console.error(
- 'Block render functions do not support propTypes or defaultProps. ' +
- 'Did you accidentally pass a React component?',
- );
- }
- }
-
- if (load === undefined) {
- return function(): Block {
- const blockComponent: BlockComponent = {
- $$typeof: REACT_BLOCK_TYPE,
- _data: undefined,
- // $FlowFixMe: Data must be void in this scenario.
- _render: render,
- };
-
- // $FlowFixMe: Upstream BlockComponent to Flow as a valid Node.
- return blockComponent;
- };
- }
-
- // Trick to let Flow refine this.
- const loadFn = load;
-
- return function(): Block {
- const args: Args = arguments;
-
- const payload: Payload = {
- load: loadFn,
- args: args,
- render: render,
- };
-
- const lazyType: LazyComponent<
- BlockComponent,
- Payload,
- > = {
- $$typeof: REACT_LAZY_TYPE,
- _payload: payload,
- _init: lazyInitializer,
- };
-
- // $FlowFixMe: Upstream BlockComponent to Flow as a valid Node.
- return lazyType;
- };
-}
diff --git a/packages/shared/ReactComponentStackFrame.js b/packages/shared/ReactComponentStackFrame.js
index efb58642f874a..e330e08d6751a 100644
--- a/packages/shared/ReactComponentStackFrame.js
+++ b/packages/shared/ReactComponentStackFrame.js
@@ -17,7 +17,6 @@ import {
REACT_SUSPENSE_LIST_TYPE,
REACT_FORWARD_REF_TYPE,
REACT_MEMO_TYPE,
- REACT_BLOCK_TYPE,
REACT_LAZY_TYPE,
} from 'shared/ReactSymbols';
@@ -301,8 +300,6 @@ export function describeUnknownElementTypeFrameInDEV(
case REACT_MEMO_TYPE:
// Memo may contain any component type so we recursively resolve it.
return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
- case REACT_BLOCK_TYPE:
- return describeFunctionComponentFrame(type._render, source, ownerFn);
case REACT_LAZY_TYPE: {
const lazyComponent: LazyComponent = (type: any);
const payload = lazyComponent._payload;
diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js
index ba92ea1715399..2bb5e7a5dc3f8 100644
--- a/packages/shared/ReactFeatureFlags.js
+++ b/packages/shared/ReactFeatureFlags.js
@@ -44,7 +44,6 @@ export const enableSuspenseServerRenderer = __EXPERIMENTAL__;
export const enableSelectiveHydration = __EXPERIMENTAL__;
// Flight experiments
-export const enableBlocksAPI = __EXPERIMENTAL__;
export const enableLazyElements = __EXPERIMENTAL__;
// Only used in www builds.
diff --git a/packages/shared/ReactSymbols.js b/packages/shared/ReactSymbols.js
index 49e4eba689efc..1870c8c009482 100644
--- a/packages/shared/ReactSymbols.js
+++ b/packages/shared/ReactSymbols.js
@@ -25,8 +25,6 @@ export let REACT_SUSPENSE_TYPE = 0xead1;
export let REACT_SUSPENSE_LIST_TYPE = 0xead8;
export let REACT_MEMO_TYPE = 0xead3;
export let REACT_LAZY_TYPE = 0xead4;
-export let REACT_BLOCK_TYPE = 0xead9;
-export let REACT_SERVER_BLOCK_TYPE = 0xeada;
export let REACT_FUNDAMENTAL_TYPE = 0xead5;
export let REACT_SCOPE_TYPE = 0xead7;
export let REACT_OPAQUE_ID_TYPE = 0xeae0;
@@ -48,8 +46,6 @@ if (typeof Symbol === 'function' && Symbol.for) {
REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');
REACT_MEMO_TYPE = symbolFor('react.memo');
REACT_LAZY_TYPE = symbolFor('react.lazy');
- REACT_BLOCK_TYPE = symbolFor('react.block');
- REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');
REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');
REACT_SCOPE_TYPE = symbolFor('react.scope');
REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');
diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb.js b/packages/shared/forks/ReactFeatureFlags.native-fb.js
index 2009366d12f1a..40bee41d566a2 100644
--- a/packages/shared/forks/ReactFeatureFlags.native-fb.js
+++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js
@@ -18,7 +18,6 @@ export const enableProfilerCommitHooks = false;
export const enableSchedulerTracing = __PROFILE__;
export const enableSuspenseServerRenderer = false;
export const enableSelectiveHydration = false;
-export const enableBlocksAPI = false;
export const enableLazyElements = false;
export const enableSchedulerDebugging = false;
export const debugRenderPhaseSideEffectsForStrictMode = true;
diff --git a/packages/shared/forks/ReactFeatureFlags.native-oss.js b/packages/shared/forks/ReactFeatureFlags.native-oss.js
index aa53af7e58c89..0665b4b5d71b9 100644
--- a/packages/shared/forks/ReactFeatureFlags.native-oss.js
+++ b/packages/shared/forks/ReactFeatureFlags.native-oss.js
@@ -20,7 +20,6 @@ export const enableProfilerCommitHooks = false;
export const enableSchedulerTracing = __PROFILE__;
export const enableSuspenseServerRenderer = false;
export const enableSelectiveHydration = false;
-export const enableBlocksAPI = false;
export const enableLazyElements = false;
export const disableJavaScriptURLs = false;
export const disableInputAttributeSyncing = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.js
index eee1cb988618f..2102c905be9f4 100644
--- a/packages/shared/forks/ReactFeatureFlags.test-renderer.js
+++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.js
@@ -20,7 +20,6 @@ export const enableProfilerCommitHooks = false;
export const enableSchedulerTracing = __PROFILE__;
export const enableSuspenseServerRenderer = false;
export const enableSelectiveHydration = false;
-export const enableBlocksAPI = false;
export const enableLazyElements = false;
export const disableJavaScriptURLs = false;
export const disableInputAttributeSyncing = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.native.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.native.js
index f2b19e6dc26bb..f2dc6d7f0ad05 100644
--- a/packages/shared/forks/ReactFeatureFlags.test-renderer.native.js
+++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.native.js
@@ -20,7 +20,6 @@ export const enableProfilerCommitHooks = false;
export const enableSchedulerTracing = __PROFILE__;
export const enableSuspenseServerRenderer = false;
export const enableSelectiveHydration = false;
-export const enableBlocksAPI = false;
export const enableLazyElements = false;
export const disableJavaScriptURLs = false;
export const disableInputAttributeSyncing = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
index 11989ccafdc69..7c6588150ef95 100644
--- a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
+++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
@@ -20,7 +20,6 @@ export const enableProfilerCommitHooks = false;
export const enableSchedulerTracing = __PROFILE__;
export const enableSuspenseServerRenderer = false;
export const enableSelectiveHydration = false;
-export const enableBlocksAPI = false;
export const enableLazyElements = false;
export const enableSchedulerDebugging = false;
export const disableJavaScriptURLs = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.testing.js b/packages/shared/forks/ReactFeatureFlags.testing.js
index 7bb6c2bd8b948..36cf66d18e4be 100644
--- a/packages/shared/forks/ReactFeatureFlags.testing.js
+++ b/packages/shared/forks/ReactFeatureFlags.testing.js
@@ -20,7 +20,6 @@ export const enableProfilerCommitHooks = false;
export const enableSchedulerTracing = __PROFILE__;
export const enableSuspenseServerRenderer = false;
export const enableSelectiveHydration = false;
-export const enableBlocksAPI = false;
export const enableLazyElements = false;
export const disableJavaScriptURLs = false;
export const disableInputAttributeSyncing = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.testing.www.js b/packages/shared/forks/ReactFeatureFlags.testing.www.js
index 23da5613036e2..fd6eba5a52087 100644
--- a/packages/shared/forks/ReactFeatureFlags.testing.www.js
+++ b/packages/shared/forks/ReactFeatureFlags.testing.www.js
@@ -20,7 +20,6 @@ export const enableProfilerCommitHooks = false;
export const enableSchedulerTracing = false;
export const enableSuspenseServerRenderer = true;
export const enableSelectiveHydration = true;
-export const enableBlocksAPI = true;
export const enableLazyElements = false;
export const disableJavaScriptURLs = true;
export const disableInputAttributeSyncing = false;
diff --git a/packages/shared/forks/ReactFeatureFlags.www.js b/packages/shared/forks/ReactFeatureFlags.www.js
index fec7e2beaa870..c12be6366806f 100644
--- a/packages/shared/forks/ReactFeatureFlags.www.js
+++ b/packages/shared/forks/ReactFeatureFlags.www.js
@@ -54,7 +54,6 @@ export const warnAboutDefaultPropsOnFunctionComponents = false;
export const enableSuspenseServerRenderer = true;
export const enableSelectiveHydration = true;
-export const enableBlocksAPI = true;
export const enableLazyElements = true;
export const disableJavaScriptURLs = true;
diff --git a/packages/shared/getComponentName.js b/packages/shared/getComponentName.js
index e7b7e64275866..ae74676ed3616 100644
--- a/packages/shared/getComponentName.js
+++ b/packages/shared/getComponentName.js
@@ -21,7 +21,6 @@ import {
REACT_SUSPENSE_TYPE,
REACT_SUSPENSE_LIST_TYPE,
REACT_LAZY_TYPE,
- REACT_BLOCK_TYPE,
} from 'shared/ReactSymbols';
import type {ReactContext, ReactProviderType} from 'shared/ReactTypes';
@@ -86,8 +85,6 @@ function getComponentName(type: mixed): string | null {
return getWrappedName(type, type.render, 'ForwardRef');
case REACT_MEMO_TYPE:
return getComponentName(type.type);
- case REACT_BLOCK_TYPE:
- return getComponentName(type._render);
case REACT_LAZY_TYPE: {
const lazyComponent: LazyComponent = (type: any);
const payload = lazyComponent._payload;
diff --git a/packages/shared/isValidElementType.js b/packages/shared/isValidElementType.js
index 57e3d249b998c..35eeae2a308ce 100644
--- a/packages/shared/isValidElementType.js
+++ b/packages/shared/isValidElementType.js
@@ -21,8 +21,6 @@ import {
REACT_LAZY_TYPE,
REACT_FUNDAMENTAL_TYPE,
REACT_SCOPE_TYPE,
- REACT_BLOCK_TYPE,
- REACT_SERVER_BLOCK_TYPE,
REACT_LEGACY_HIDDEN_TYPE,
} from 'shared/ReactSymbols';
import {enableScopeAPI} from './ReactFeatureFlags';
@@ -64,9 +62,7 @@ export default function isValidElementType(type: mixed) {
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_MODULE_REFERENCE ||
- type.getModuleId !== undefined ||
- type.$$typeof === REACT_BLOCK_TYPE ||
- type[(0: any)] === REACT_SERVER_BLOCK_TYPE
+ type.getModuleId !== undefined
) {
return true;
}
diff --git a/scripts/error-codes/codes.json b/scripts/error-codes/codes.json
index 6eb8441d1fff5..a86c8bc32812c 100644
--- a/scripts/error-codes/codes.json
+++ b/scripts/error-codes/codes.json
@@ -341,7 +341,7 @@
"349": "Expected a work-in-progress root. This is a bug in React. Please file an issue.",
"350": "Cannot read from mutable source during the current render without tearing. This is a bug in React. Please file an issue.",
"351": "Unsupported server component type: %s",
- "352": "React Blocks (and Lazy Components) are expected to be replaced by a compiler on the server. Try configuring your compiler set up and avoid using React.lazy inside of Blocks.",
+ "352": "React Lazy Components are not yet supported on the server.",
"353": "A server block should never encode any other slots. This is a bug in React.",
"354": "getInspectorDataForViewAtPoint() is not available in production.",
"355": "The object passed back from useOpaqueIdentifier is meant to be passed through to attributes only. Do not read the value directly.",
diff --git a/scripts/jest/TestFlags.js b/scripts/jest/TestFlags.js
index 75f1663ae4bf3..790d5fbcc1aea 100644
--- a/scripts/jest/TestFlags.js
+++ b/scripts/jest/TestFlags.js
@@ -4,7 +4,7 @@
// certain conditions. They're like GKs.
//
// Examples:
-// // @gate enableBlocksAPI
+// // @gate enableSomeAPI
// test('uses an unstable API', () => {/*...*/})
//
// // @gate __DEV__
@@ -18,12 +18,12 @@
//
// You can also combine flags using multiple gates:
//
-// // @gate enableBlocksAPI
+// // @gate enableSomeAPI
// // @gate __DEV__
// test('both conditions must pass', () => {/*...*/})
//
// Or using logical operators
-// // @gate enableBlocksAPI && __DEV__
+// // @gate enableSomeAPI && __DEV__
// test('both conditions must pass', () => {/*...*/})
//
// Negation also works:
From 11c8e8f6574dc50bef9615183993d75558f37a29 Mon Sep 17 00:00:00 2001
From: Sebastian Markbage
Date: Fri, 30 Oct 2020 20:33:38 -0400
Subject: [PATCH 2/3] Remove Flight Server Runtime
There's no need for this now that the JSResource is part of the bundler
protocol. Might need something for Webpack plugin specifically later.
---
.../flight-server-runtime.js | 10 --------
.../npm/flight-server-runtime.js | 3 ---
packages/react-noop-renderer/package.json | 1 -
.../react-server/flight-server-runtime.js | 10 --------
.../react-server/npm/flight-server-runtime.js | 7 ------
packages/react-server/package.json | 1 -
.../src/ReactFlightServerRuntime.js | 8 ------
.../server-runtime.js | 10 --------
.../npm/server-runtime.js | 7 ------
.../react-transport-dom-webpack/package.json | 1 -
.../server-runtime.js | 10 --------
scripts/rollup/bundles.js | 25 -------------------
scripts/shared/inlinedHostConfigs.js | 7 ------
13 files changed, 100 deletions(-)
delete mode 100644 packages/react-noop-renderer/flight-server-runtime.js
delete mode 100644 packages/react-noop-renderer/npm/flight-server-runtime.js
delete mode 100644 packages/react-server/flight-server-runtime.js
delete mode 100644 packages/react-server/npm/flight-server-runtime.js
delete mode 100644 packages/react-server/src/ReactFlightServerRuntime.js
delete mode 100644 packages/react-transport-dom-relay/server-runtime.js
delete mode 100644 packages/react-transport-dom-webpack/npm/server-runtime.js
delete mode 100644 packages/react-transport-dom-webpack/server-runtime.js
diff --git a/packages/react-noop-renderer/flight-server-runtime.js b/packages/react-noop-renderer/flight-server-runtime.js
deleted file mode 100644
index 3d6aec59668b2..0000000000000
--- a/packages/react-noop-renderer/flight-server-runtime.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @flow
- */
-
-export * from 'react-server/flight-server-runtime';
diff --git a/packages/react-noop-renderer/npm/flight-server-runtime.js b/packages/react-noop-renderer/npm/flight-server-runtime.js
deleted file mode 100644
index b040591111987..0000000000000
--- a/packages/react-noop-renderer/npm/flight-server-runtime.js
+++ /dev/null
@@ -1,3 +0,0 @@
-'use strict';
-
-module.exports = require('react-server/flight-server-runtime');
diff --git a/packages/react-noop-renderer/package.json b/packages/react-noop-renderer/package.json
index 1b4cdab557acd..020a0e87f7263 100644
--- a/packages/react-noop-renderer/package.json
+++ b/packages/react-noop-renderer/package.json
@@ -29,7 +29,6 @@
"flight-client.js",
"flight-modules.js",
"flight-server.js",
- "flight-server-runtime.js",
"cjs/"
]
}
diff --git a/packages/react-server/flight-server-runtime.js b/packages/react-server/flight-server-runtime.js
deleted file mode 100644
index 34f1dcd8f0292..0000000000000
--- a/packages/react-server/flight-server-runtime.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @flow
- */
-
-export * from './src/ReactFlightServerRuntime';
diff --git a/packages/react-server/npm/flight-server-runtime.js b/packages/react-server/npm/flight-server-runtime.js
deleted file mode 100644
index 12a1d81249270..0000000000000
--- a/packages/react-server/npm/flight-server-runtime.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-
-if (process.env.NODE_ENV === 'production') {
- module.exports = require('./cjs/react-server-flight-server-runtime.production.min.js');
-} else {
- module.exports = require('./cjs/react-server-flight-server-runtime.development.js');
-}
diff --git a/packages/react-server/package.json b/packages/react-server/package.json
index 7e6129e61198c..3e9252d2615d7 100644
--- a/packages/react-server/package.json
+++ b/packages/react-server/package.json
@@ -14,7 +14,6 @@
"README.md",
"index.js",
"flight.js",
- "flight-server-runtime.js",
"cjs/"
],
"main": "index.js",
diff --git a/packages/react-server/src/ReactFlightServerRuntime.js b/packages/react-server/src/ReactFlightServerRuntime.js
deleted file mode 100644
index af30148879fb8..0000000000000
--- a/packages/react-server/src/ReactFlightServerRuntime.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @flow
- */
diff --git a/packages/react-transport-dom-relay/server-runtime.js b/packages/react-transport-dom-relay/server-runtime.js
deleted file mode 100644
index f57e18f99018c..0000000000000
--- a/packages/react-transport-dom-relay/server-runtime.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @flow
- */
-
-export * from 'react-server/src/ReactFlightServerRuntime';
diff --git a/packages/react-transport-dom-webpack/npm/server-runtime.js b/packages/react-transport-dom-webpack/npm/server-runtime.js
deleted file mode 100644
index 2f24534ec01cd..0000000000000
--- a/packages/react-transport-dom-webpack/npm/server-runtime.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-
-if (process.env.NODE_ENV === 'production') {
- module.exports = require('./cjs/react-transport-dom-webpack-server-runtime.production.min.js');
-} else {
- module.exports = require('./cjs/react-transport-dom-webpack-server-runtime.development.js');
-}
diff --git a/packages/react-transport-dom-webpack/package.json b/packages/react-transport-dom-webpack/package.json
index 5af19cb1d034c..b362d0847afa4 100644
--- a/packages/react-transport-dom-webpack/package.json
+++ b/packages/react-transport-dom-webpack/package.json
@@ -17,7 +17,6 @@
"server.js",
"server.browser.js",
"server.node.js",
- "server-runtime.js",
"cjs/",
"umd/"
],
diff --git a/packages/react-transport-dom-webpack/server-runtime.js b/packages/react-transport-dom-webpack/server-runtime.js
deleted file mode 100644
index f57e18f99018c..0000000000000
--- a/packages/react-transport-dom-webpack/server-runtime.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *
- * @flow
- */
-
-export * from 'react-server/src/ReactFlightServerRuntime';
diff --git a/scripts/rollup/bundles.js b/scripts/rollup/bundles.js
index d4e8b06a2322d..45fe488b7ced6 100644
--- a/scripts/rollup/bundles.js
+++ b/scripts/rollup/bundles.js
@@ -265,13 +265,6 @@ const bundles = [
global: 'ReactTransportDOMServer',
externals: ['react', 'react-dom/server'],
},
- {
- bundleTypes: [NODE_DEV, NODE_PROD],
- moduleType: RENDERER,
- entry: 'react-transport-dom-webpack/server-runtime',
- global: 'ReactTransportDOMServerRuntime',
- externals: ['react'],
- },
/******* React Transport DOM Client Webpack *******/
{
@@ -304,17 +297,6 @@ const bundles = [
'JSResourceReference',
],
},
- {
- bundleTypes: [FB_WWW_DEV, FB_WWW_PROD],
- moduleType: RENDERER,
- entry: 'react-transport-dom-relay/server-runtime',
- global: 'ReactFlightDOMRelayServerRuntime',
- externals: [
- 'react',
- 'ReactFlightDOMRelayServerIntegration',
- 'JSResourceReference',
- ],
- },
/******* React DOM Flight Client Relay *******/
{
@@ -521,13 +503,6 @@ const bundles = [
global: 'ReactFlightServer',
externals: ['react'],
},
- {
- bundleTypes: [NODE_DEV, NODE_PROD],
- moduleType: RENDERER,
- entry: 'react-server/flight-server-runtime',
- global: 'ReactFlightServerRuntime',
- externals: ['react'],
- },
/******* React Flight Client *******/
{
diff --git a/scripts/shared/inlinedHostConfigs.js b/scripts/shared/inlinedHostConfigs.js
index 8bb32ed0bcef6..e513770060009 100644
--- a/scripts/shared/inlinedHostConfigs.js
+++ b/scripts/shared/inlinedHostConfigs.js
@@ -14,7 +14,6 @@ module.exports = [
'react-dom/testing',
'react-dom/unstable-fizz.node',
'react-transport-dom-webpack/server.node',
- 'react-transport-dom-webpack/server-runtime',
'react-transport-dom-webpack',
],
paths: [
@@ -25,7 +24,6 @@ module.exports = [
'react-transport-dom-webpack',
'react-transport-dom-webpack/server',
'react-transport-dom-webpack/server.node',
- 'react-transport-dom-webpack/server-runtime',
'react-transport-dom-webpack/src/ReactFlightDOMServerNode.js', // react-transport-dom-webpack/server.browser
'react-client/src/ReactFlightClientStream.js', // We can only type check this in streaming configurations.
'react-interactions',
@@ -40,7 +38,6 @@ module.exports = [
'react-dom/testing',
'react-dom/unstable-fizz.browser',
'react-transport-dom-webpack/server.browser',
- 'react-transport-dom-webpack/server-runtime',
'react-transport-dom-webpack',
],
paths: [
@@ -50,7 +47,6 @@ module.exports = [
'react-dom/src/server/ReactDOMFizzServerBrowser.js', // react-dom/unstable-fizz.browser
'react-transport-dom-webpack',
'react-transport-dom-webpack/server.browser',
- 'react-transport-dom-webpack/server-runtime',
'react-transport-dom-webpack/src/ReactFlightDOMServerBrowser.js', // react-transport-dom-webpack/server.browser
'react-client/src/ReactFlightClientStream.js', // We can only type check this in streaming configurations.
],
@@ -90,7 +86,6 @@ module.exports = [
entryPoints: [
'react-transport-dom-relay',
'react-transport-dom-relay/server',
- 'react-transport-dom-relay/server-runtime',
],
paths: ['react-dom', 'react-transport-dom-relay'],
isFlowTyped: true,
@@ -103,12 +98,10 @@ module.exports = [
'react-client/flight',
'react-server',
'react-server/flight',
- 'react-server/flight-server-runtime',
],
paths: [
'react-client/flight',
'react-server/flight',
- 'react-server/flight-server-runtime',
'react-client/src/ReactFlightClientStream.js', // We can only type check this in streaming configurations.
],
isFlowTyped: true,
From 9ff6225e402cedcc49fa8cd57d42b219dc55b359 Mon Sep 17 00:00:00 2001
From: Sebastian Markbage
Date: Sat, 31 Oct 2020 01:39:55 -0400
Subject: [PATCH 3/3] Devtools
---
.../src/backend/DevToolsComponentStackFrame.js | 10 ----------
.../src/backend/DevToolsFiberComponentStack.js | 8 --------
.../react-devtools-shared/src/backend/ReactSymbols.js | 6 ------
packages/react-devtools-shared/src/backend/renderer.js | 6 +-----
packages/react-devtools-shared/src/backend/types.js | 1 -
5 files changed, 1 insertion(+), 30 deletions(-)
diff --git a/packages/react-devtools-shared/src/backend/DevToolsComponentStackFrame.js b/packages/react-devtools-shared/src/backend/DevToolsComponentStackFrame.js
index 581fdfa40a1b8..f673dbd7b975f 100644
--- a/packages/react-devtools-shared/src/backend/DevToolsComponentStackFrame.js
+++ b/packages/react-devtools-shared/src/backend/DevToolsComponentStackFrame.js
@@ -17,8 +17,6 @@ import type {LazyComponent} from 'react/src/ReactLazy';
import type {CurrentDispatcherRef} from './types';
import {
- BLOCK_NUMBER,
- BLOCK_SYMBOL_STRING,
FORWARD_REF_NUMBER,
FORWARD_REF_SYMBOL_STRING,
LAZY_NUMBER,
@@ -276,14 +274,6 @@ export function describeUnknownElementTypeFrameInDEV(
ownerFn,
currentDispatcherRef,
);
- case BLOCK_NUMBER:
- case BLOCK_SYMBOL_STRING:
- return describeFunctionComponentFrame(
- type._render,
- source,
- ownerFn,
- currentDispatcherRef,
- );
case LAZY_NUMBER:
case LAZY_SYMBOL_STRING: {
const lazyComponent: LazyComponent = (type: any);
diff --git a/packages/react-devtools-shared/src/backend/DevToolsFiberComponentStack.js b/packages/react-devtools-shared/src/backend/DevToolsFiberComponentStack.js
index ecb2ac6d3be58..b1f5948ab6470 100644
--- a/packages/react-devtools-shared/src/backend/DevToolsFiberComponentStack.js
+++ b/packages/react-devtools-shared/src/backend/DevToolsFiberComponentStack.js
@@ -35,7 +35,6 @@ function describeFiber(
IndeterminateComponent,
SimpleMemoComponent,
ForwardRef,
- Block,
ClassComponent,
} = workTagMap;
@@ -70,13 +69,6 @@ function describeFiber(
owner,
currentDispatcherRef,
);
- case Block:
- return describeFunctionComponentFrame(
- workInProgress.type._render,
- source,
- owner,
- currentDispatcherRef,
- );
case ClassComponent:
return describeClassComponentFrame(
workInProgress.type,
diff --git a/packages/react-devtools-shared/src/backend/ReactSymbols.js b/packages/react-devtools-shared/src/backend/ReactSymbols.js
index 70629f3bffa00..88e2ec29416d4 100644
--- a/packages/react-devtools-shared/src/backend/ReactSymbols.js
+++ b/packages/react-devtools-shared/src/backend/ReactSymbols.js
@@ -13,9 +13,6 @@
// 2. DevTools must support both Symbol and numeric forms of each symbol;
// Since e.g. standalone DevTools runs in a separate process, it can't rely on its own ES capabilities.
-export const BLOCK_NUMBER = 0xead9;
-export const BLOCK_SYMBOL_STRING = 'Symbol(react.block)';
-
export const CONCURRENT_MODE_NUMBER = 0xeacf;
export const CONCURRENT_MODE_SYMBOL_STRING = 'Symbol(react.concurrent_mode)';
@@ -61,9 +58,6 @@ export const PROVIDER_SYMBOL_STRING = 'Symbol(react.provider)';
export const SCOPE_NUMBER = 0xead7;
export const SCOPE_SYMBOL_STRING = 'Symbol(react.scope)';
-export const SERVER_BLOCK_NUMBER = 0xeada;
-export const SERVER_BLOCK_SYMBOL_STRING = 'Symbol(react.server.block)';
-
export const STRICT_MODE_NUMBER = 0xeacc;
export const STRICT_MODE_SYMBOL_STRING = 'Symbol(react.strict_mode)';
diff --git a/packages/react-devtools-shared/src/backend/renderer.js b/packages/react-devtools-shared/src/backend/renderer.js
index 208615bcccbb5..1245c254c5575 100644
--- a/packages/react-devtools-shared/src/backend/renderer.js
+++ b/packages/react-devtools-shared/src/backend/renderer.js
@@ -169,7 +169,6 @@ export function getInternalReactConstants(
if (gte(version, '17.0.0-alpha')) {
// TODO (Offscreen) Update the version number above to reflect the first Offscreen alpha/beta release.
ReactTypeOfWork = {
- Block: 22,
ClassComponent: 1,
ContextConsumer: 9,
ContextProvider: 10,
@@ -188,7 +187,7 @@ export function getInternalReactConstants(
LazyComponent: 16,
MemoComponent: 14,
Mode: 8,
- OffscreenComponent: 23, // Experimental
+ OffscreenComponent: 22, // Experimental
Profiler: 12,
SimpleMemoComponent: 15,
SuspenseComponent: 13,
@@ -197,7 +196,6 @@ export function getInternalReactConstants(
};
} else if (gte(version, '16.6.0-beta.0')) {
ReactTypeOfWork = {
- Block: 22,
ClassComponent: 1,
ContextConsumer: 9,
ContextProvider: 10,
@@ -225,7 +223,6 @@ export function getInternalReactConstants(
};
} else if (gte(version, '16.4.3-alpha')) {
ReactTypeOfWork = {
- Block: -1, // Doesn't exist yet
ClassComponent: 2,
ContextConsumer: 11,
ContextProvider: 12,
@@ -253,7 +250,6 @@ export function getInternalReactConstants(
};
} else {
ReactTypeOfWork = {
- Block: -1, // Doesn't exist yet
ClassComponent: 2,
ContextConsumer: 12,
ContextProvider: 13,
diff --git a/packages/react-devtools-shared/src/backend/types.js b/packages/react-devtools-shared/src/backend/types.js
index d4a01d7081e1b..4ec480acedad7 100644
--- a/packages/react-devtools-shared/src/backend/types.js
+++ b/packages/react-devtools-shared/src/backend/types.js
@@ -26,7 +26,6 @@ export type WorkFlags = number;
export type ExpirationTime = number;
export type WorkTagMap = {|
- Block: WorkTag,
ClassComponent: WorkTag,
ContextConsumer: WorkTag,
ContextProvider: WorkTag,