diff --git a/packages/react-client/src/forks/ReactFlightClientConfig.dom-fb-experimental.js b/packages/react-client/src/forks/ReactFlightClientConfig.dom-fb-experimental.js deleted file mode 100644 index 7f43b0c2a3cd0..0000000000000 --- a/packages/react-client/src/forks/ReactFlightClientConfig.dom-fb-experimental.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and 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-client/src/ReactFlightClientStreamConfigWeb'; -export * from 'react-client/src/ReactFlightClientConsoleConfigPlain'; -export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM'; -export * from 'react-server-dom-fb/src/ReactFlightClientConfigFBBundler'; - -export const usedWithSSR = false; diff --git a/packages/react-server-dom-fb/src/ReactFlightClientConfigFBBundler.js b/packages/react-server-dom-fb/src/ReactFlightClientConfigFBBundler.js deleted file mode 100644 index 443f513dc6a37..0000000000000 --- a/packages/react-server-dom-fb/src/ReactFlightClientConfigFBBundler.js +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and 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 { - Thenable, - FulfilledThenable, - RejectedThenable, -} from 'shared/ReactTypes'; - -export type ModuleLoading = mixed; - -type ResolveClientReferenceFn = - ClientReferenceMetadata => ClientReference; - -export type SSRModuleMap = { - resolveClientReference?: ResolveClientReferenceFn, -}; -export type ServerManifest = string; -export type { - ClientManifest, - ServerReferenceId, - ClientReferenceMetadata, -} from './ReactFlightReferencesFB'; - -import type { - ServerReferenceId, - ClientReferenceMetadata, -} from './ReactFlightReferencesFB'; - -export type ClientReference = { - getModuleId: () => string, - load: () => Thenable, -}; - -export function prepareDestinationForModule( - moduleLoading: ModuleLoading, - nonce: ?string, - metadata: ClientReferenceMetadata, -) { - return; -} - -export function resolveClientReference( - moduleMap: SSRModuleMap, - metadata: ClientReferenceMetadata, -): ClientReference { - if (typeof moduleMap.resolveClientReference === 'function') { - return moduleMap.resolveClientReference(metadata); - } else { - throw new Error( - 'Expected `resolveClientReference` to be defined on the moduleMap.', - ); - } -} - -export function resolveServerReference( - config: ServerManifest, - id: ServerReferenceId, -): ClientReference { - throw new Error('Not implemented'); -} - -const asyncModuleCache: Map> = new Map(); - -export function preloadModule( - clientReference: ClientReference, -): null | Thenable { - const existingPromise = asyncModuleCache.get(clientReference.getModuleId()); - if (existingPromise) { - if (existingPromise.status === 'fulfilled') { - return null; - } - return existingPromise; - } else { - const modulePromise: Thenable = clientReference.load(); - modulePromise.then( - value => { - const fulfilledThenable: FulfilledThenable = - (modulePromise: any); - fulfilledThenable.status = 'fulfilled'; - fulfilledThenable.value = value; - }, - reason => { - const rejectedThenable: RejectedThenable = (modulePromise: any); - rejectedThenable.status = 'rejected'; - rejectedThenable.reason = reason; - }, - ); - asyncModuleCache.set(clientReference.getModuleId(), modulePromise); - return modulePromise; - } -} - -export function requireModule(clientReference: ClientReference): T { - let module; - // We assume that preloadModule has been called before, which - // should have added something to the module cache. - const promise: any = asyncModuleCache.get(clientReference.getModuleId()); - if (promise.status === 'fulfilled') { - module = promise.value; - } else { - throw promise.reason; - } - // We are currently only support default exports for client components - return module; -} diff --git a/packages/react-server-dom-fb/src/ReactFlightDOMClientFB.js b/packages/react-server-dom-fb/src/ReactFlightDOMClientFB.js deleted file mode 100644 index de3b84094a2f2..0000000000000 --- a/packages/react-server-dom-fb/src/ReactFlightDOMClientFB.js +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and 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 {enableBinaryFlight} from 'shared/ReactFeatureFlags'; -import type {Thenable} from 'shared/ReactTypes'; -import type {Response as FlightResponse} from 'react-client/src/ReactFlightClient'; - -import { - createResponse, - getRoot, - reportGlobalError, - processBinaryChunk, - close, -} from 'react-client/src/ReactFlightClient'; - -import type {SSRModuleMap} from './ReactFlightClientConfigFBBundler'; - -type Options = { - moduleMap: SSRModuleMap, -}; - -function createResponseFromOptions(options: void | Options) { - const moduleMap = options && options.moduleMap; - if (moduleMap == null) { - throw new Error('Expected `moduleMap` to be defined.'); - } - - return createResponse(moduleMap, null, undefined, undefined); -} - -function processChunk(response: FlightResponse, chunk: string | Uint8Array) { - if (enableBinaryFlight) { - if (typeof chunk === 'string') { - throw new Error( - '`enableBinaryFlight` flag is enabled, expected a Uint8Array as input, got string.', - ); - } - } - const buffer = typeof chunk !== 'string' ? chunk : encodeString(chunk); - - processBinaryChunk(response, buffer); -} - -function encodeString(string: string) { - const textEncoder = new TextEncoder(); - return textEncoder.encode(string); -} - -function startReadingFromStream( - response: FlightResponse, - stream: ReadableStream, -): void { - const reader = stream.getReader(); - function progress({ - done, - value, - }: { - done: boolean, - value: ?any, - ... - }): void | Promise { - if (done) { - close(response); - return; - } - const buffer: Uint8Array = (value: any); - processChunk(response, buffer); - return reader.read().then(progress).catch(error); - } - function error(e: any) { - reportGlobalError(response, e); - } - reader.read().then(progress).catch(error); -} - -function createFromReadableStream( - stream: ReadableStream, - options?: Options, -): Thenable { - const response: FlightResponse = createResponseFromOptions(options); - startReadingFromStream(response, stream); - return getRoot(response); -} - -export {createFromReadableStream}; diff --git a/packages/react-server-dom-fb/src/ReactFlightDOMServerFB.js b/packages/react-server-dom-fb/src/ReactFlightDOMServerFB.js deleted file mode 100644 index 5fc7f11e7cb88..0000000000000 --- a/packages/react-server-dom-fb/src/ReactFlightDOMServerFB.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and 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 {ReactClientValue} from 'react-server/src/ReactFlightServer'; -import type { - Destination, - Chunk, - PrecomputedChunk, -} from 'react-server/src/ReactServerStreamConfig'; - -import {setCheckIsClientReference} from './ReactFlightReferencesFB'; - -import { - createRequest, - startWork, - startFlowing, -} from 'react-server/src/ReactFlightServer'; - -import {setByteLengthOfChunkImplementation} from 'react-server/src/ReactServerStreamConfig'; - -export { - registerClientReference, - registerServerReference, - getRequestedClientReferencesKeys, - clearRequestedClientReferencesKeysSet, - setCheckIsClientReference, -} from './ReactFlightReferencesFB'; - -type Options = { - onError?: (error: mixed) => void, -}; - -function renderToDestination( - destination: Destination, - model: ReactClientValue, - options?: Options, -): void { - if (!configured) { - throw new Error( - 'Please make sure to call `setConfig(...)` before calling `renderToDestination`.', - ); - } - const request = createRequest( - model, - null, - options ? options.onError : undefined, - undefined, - undefined, - ); - startWork(request); - startFlowing(request, destination); -} - -type Config = { - byteLength: (chunk: Chunk | PrecomputedChunk) => number, - isClientReference: (reference: mixed) => boolean, -}; - -let configured = false; - -function setConfig(config: Config): void { - setByteLengthOfChunkImplementation(config.byteLength); - setCheckIsClientReference(config.isClientReference); - configured = true; -} - -export {renderToDestination, setConfig}; diff --git a/packages/react-server-dom-fb/src/ReactFlightReferencesFB.js b/packages/react-server-dom-fb/src/ReactFlightReferencesFB.js deleted file mode 100644 index 561ec56c79eb5..0000000000000 --- a/packages/react-server-dom-fb/src/ReactFlightReferencesFB.js +++ /dev/null @@ -1,90 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and 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 type ClientManifest = null; - -// eslint-disable-next-line no-unused-vars -export type ServerReference = string; - -// eslint-disable-next-line no-unused-vars -export type ClientReference = { - getModuleId(): ClientReferenceKey, -}; - -const requestedClientReferencesKeys = new Set(); - -export type ClientReferenceKey = string; -export type ClientReferenceMetadata = { - moduleId: ClientReferenceKey, - exportName: string, -}; - -export type ServerReferenceId = string; - -let checkIsClientReference: (clientReference: mixed) => boolean; - -export function setCheckIsClientReference( - impl: (clientReference: mixed) => boolean, -): void { - checkIsClientReference = impl; -} - -export function registerClientReference( - clientReference: ClientReference, -): void {} - -export function isClientReference(reference: mixed): boolean { - if (checkIsClientReference == null) { - throw new Error('Expected implementation for checkIsClientReference.'); - } - return checkIsClientReference(reference); -} - -export function getClientReferenceKey( - clientReference: ClientReference, -): ClientReferenceKey { - const moduleId = clientReference.getModuleId(); - requestedClientReferencesKeys.add(moduleId); - - return clientReference.getModuleId(); -} - -export function resolveClientReferenceMetadata( - config: ClientManifest, - clientReference: ClientReference, -): ClientReferenceMetadata { - return {moduleId: clientReference.getModuleId(), exportName: 'default'}; -} - -export function registerServerReference( - serverReference: ServerReference, - id: string, - exportName: null | string, -): ServerReference { - throw new Error('registerServerReference: Not Implemented.'); -} - -export function isServerReference(reference: T): boolean { - throw new Error('isServerReference: Not Implemented.'); -} - -export function getServerReferenceId( - config: ClientManifest, - serverReference: ServerReference, -): ServerReferenceId { - throw new Error('getServerReferenceId: Not Implemented.'); -} - -export function getRequestedClientReferencesKeys(): $ReadOnlyArray { - return Array.from(requestedClientReferencesKeys); -} - -export function clearRequestedClientReferencesKeysSet(): void { - requestedClientReferencesKeys.clear(); -} diff --git a/packages/react-server-dom-fb/src/ReactFlightServerConfigFBBundler.js b/packages/react-server-dom-fb/src/ReactFlightServerConfigFBBundler.js deleted file mode 100644 index 0d9f2448c4393..0000000000000 --- a/packages/react-server-dom-fb/src/ReactFlightServerConfigFBBundler.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and 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 {ReactClientValue} from 'react-server/src/ReactFlightServer'; - -import type {ClientManifest, ServerReference} from './ReactFlightReferencesFB'; - -export type { - ClientManifest, - ClientReference, - ClientReferenceKey, - ClientReferenceMetadata, - ServerReference, - ServerReferenceId, -} from './ReactFlightReferencesFB'; - -export { - getClientReferenceKey, - isClientReference, - resolveClientReferenceMetadata, - isServerReference, - getServerReferenceId, -} from './ReactFlightReferencesFB'; - -export function getServerReferenceBoundArguments( - config: ClientManifest, - serverReference: ServerReference, -): null | Array { - throw new Error('getServerReferenceBoundArguments: Not Implemented.'); -} diff --git a/packages/react-server-dom-fb/src/__tests__/ReactFlightDOMServerFB-test.internal.js b/packages/react-server-dom-fb/src/__tests__/ReactFlightDOMServerFB-test.internal.js deleted file mode 100644 index 57730807c5c1c..0000000000000 --- a/packages/react-server-dom-fb/src/__tests__/ReactFlightDOMServerFB-test.internal.js +++ /dev/null @@ -1,371 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and 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 - */ - -'use strict'; - -// Polyfills for test environment -global.ReadableStream = - require('web-streams-polyfill/ponyfill/es6').ReadableStream; -global.TextEncoder = require('util').TextEncoder; -global.TextDecoder = require('util').TextDecoder; - -// Don't wait before processing work on the server. -// TODO: we can replace this with FlightServer.act(). -global.setImmediate = cb => cb(); - -let act; -let use; -let clientExports; -let moduleMap; -let React; -let ReactDOMClient; -let ReactServerDOMServer; -let ReactServerDOMClient; -let Suspense; - -class Destination { - #buffer = ''; - #controller = null; - constructor() { - const self = this; - this.stream = new ReadableStream({ - start(controller) { - self.#controller = controller; - }, - }); - } - write(chunk) { - this.#buffer += chunk; - } - beginWriting() {} - completeWriting() {} - flushBuffered() { - if (!this.#controller) { - throw new Error('Expected a controller.'); - } - this.#controller.enqueue(this.#buffer); - this.#buffer = ''; - } - close() {} - onError() {} -} - -class ClientReferenceImpl { - constructor(moduleId) { - this.moduleId = moduleId; - } - - getModuleId() { - return this.moduleId; - } -} - -describe('ReactFlightDOM for FB', () => { - beforeEach(() => { - // For this first reset we are going to load the dom-node version of react-server-dom-turbopack/server - // This can be thought of as essentially being the React Server Components scope with react-server - // condition - jest.resetModules(); - - jest.mock('react', () => require('react/src/ReactServerFB')); - - jest.mock('shared/ReactFeatureFlags', () => { - jest.mock( - 'ReactFeatureFlags', - () => jest.requireActual('shared/forks/ReactFeatureFlags.www-dynamic'), - {virtual: true}, - ); - return jest.requireActual('shared/forks/ReactFeatureFlags.www'); - }); - - clientExports = value => { - return new ClientReferenceImpl(value.name); - }; - - moduleMap = { - resolveClientReference(metadata) { - throw new Error('Do not expect to load client components.'); - }, - }; - - ReactServerDOMServer = require('../ReactFlightDOMServerFB'); - ReactServerDOMServer.setConfig({ - byteLength: str => Buffer.byteLength(str), - isClientReference: reference => reference instanceof ClientReferenceImpl, - }); - - // This reset is to load modules for the SSR/Browser scope. - jest.resetModules(); - __unmockReact(); - act = require('internal-test-utils').act; - React = require('react'); - use = React.use; - Suspense = React.Suspense; - ReactDOMClient = require('react-dom/client'); - ReactServerDOMClient = require('../ReactFlightDOMClientFB'); - }); - - it('should resolve HTML with renderToDestination', async () => { - function Text({children}) { - return {children}; - } - function HTML() { - return ( -
- hello - world -
- ); - } - - function App() { - const model = { - html: , - }; - return model; - } - const destination = new Destination(); - ReactServerDOMServer.renderToDestination(destination, ); - const response = ReactServerDOMClient.createFromReadableStream( - destination.stream, - { - moduleMap, - }, - ); - const model = await response; - expect(model).toEqual({ - html: ( -
- hello - world -
- ), - }); - }); - - it('should resolve the root', async () => { - // Model - function Text({children}) { - return {children}; - } - function HTML() { - return ( -
- hello - world -
- ); - } - function RootModel() { - return { - html: , - }; - } - - // View - function Message({response}) { - return
{use(response).html}
; - } - function App({response}) { - return ( - Loading...}> - - - ); - } - - const destination = new Destination(); - ReactServerDOMServer.renderToDestination(destination, ); - const response = ReactServerDOMClient.createFromReadableStream( - destination.stream, - { - moduleMap, - }, - ); - - const container = document.createElement('div'); - const root = ReactDOMClient.createRoot(container); - await act(() => { - root.render(); - }); - expect(container.innerHTML).toBe( - '
helloworld
', - ); - }); - - it('should not get confused by $', async () => { - // Model - function RootModel() { - return {text: '$1'}; - } - - // View - function Message({response}) { - return

{use(response).text}

; - } - function App({response}) { - return ( - Loading...}> - - - ); - } - const destination = new Destination(); - ReactServerDOMServer.renderToDestination(destination, ); - const response = ReactServerDOMClient.createFromReadableStream( - destination.stream, - { - moduleMap, - }, - ); - - const container = document.createElement('div'); - const root = ReactDOMClient.createRoot(container); - await act(() => { - root.render(); - }); - expect(container.innerHTML).toBe('

$1

'); - }); - - it('should not get confused by @', async () => { - // Model - function RootModel() { - return {text: '@div'}; - } - - // View - function Message({response}) { - return

{use(response).text}

; - } - function App({response}) { - return ( - Loading...}> - - - ); - } - const destination = new Destination(); - ReactServerDOMServer.renderToDestination(destination, ); - const response = ReactServerDOMClient.createFromReadableStream( - destination.stream, - { - moduleMap, - }, - ); - - const container = document.createElement('div'); - const root = ReactDOMClient.createRoot(container); - await act(() => { - root.render(); - }); - expect(container.innerHTML).toBe('

@div

'); - }); - - it('should be able to render a client component', async () => { - const Component = function ({greeting}) { - return greeting + ' World'; - }; - - function Print({response}) { - return

{use(response)}

; - } - - function App({response}) { - return ( - Loading...}> - - - ); - } - - const ClientComponent = clientExports(Component); - - const destination = new Destination(); - ReactServerDOMServer.renderToDestination( - destination, - , - moduleMap, - ); - const response = ReactServerDOMClient.createFromReadableStream( - destination.stream, - { - moduleMap: { - resolveClientReference(metadata) { - return { - getModuleId() { - return metadata.moduleId; - }, - load() { - return Promise.resolve(Component); - }, - }; - }, - }, - }, - ); - - const container = document.createElement('div'); - const root = ReactDOMClient.createRoot(container); - await act(() => { - root.render(); - }); - expect(container.innerHTML).toBe('

Hello World

'); - }); - - it('should render long strings', async () => { - // Model - const longString = 'Lorem Ipsum ❤️ '.repeat(100); - - function RootModel() { - return {text: longString}; - } - - // View - function Message({response}) { - return

{use(response).text}

; - } - function App({response}) { - return ( - Loading...}> - - - ); - } - const destination = new Destination(); - ReactServerDOMServer.renderToDestination(destination, ); - const response = ReactServerDOMClient.createFromReadableStream( - destination.stream, - { - moduleMap, - }, - ); - - const container = document.createElement('div'); - const root = ReactDOMClient.createRoot(container); - await act(() => { - root.render(); - }); - expect(container.innerHTML).toBe('

' + longString + '

'); - }); - - // TODO: `registerClientComponent` need to be able to support this - it.skip('throws when accessing a member below the client exports', () => { - const ClientModule = clientExports({ - Component: {deep: 'thing'}, - }); - function dotting() { - return ClientModule.Component.deep; - } - expect(dotting).toThrowError( - 'Cannot access Component.deep on the server. ' + - 'You cannot dot into a client module from a server component. ' + - 'You can only pass the imported name through.', - ); - }); -}); diff --git a/packages/react-server/src/forks/ReactFlightServerConfig.dom-fb-experimental.js b/packages/react-server/src/forks/ReactFlightServerConfig.dom-fb-experimental.js deleted file mode 100644 index b26b825ea8158..0000000000000 --- a/packages/react-server/src/forks/ReactFlightServerConfig.dom-fb-experimental.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and 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 {Request} from 'react-server/src/ReactFlightServer'; - -export * from 'react-server-dom-fb/src/ReactFlightServerConfigFBBundler'; -export * from 'react-dom-bindings/src/server/ReactFlightServerConfigDOM'; - -export const supportsRequestStorage = false; -export const requestStorage: AsyncLocalStorage = (null: any); - -export * from '../ReactFlightServerConfigDebugNoop'; diff --git a/packages/react/src/ReactServerFB.js b/packages/react/src/ReactServerFB.js deleted file mode 100644 index 1060040c145a6..0000000000000 --- a/packages/react/src/ReactServerFB.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and 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 './ReactServer'; -export {jsx, jsxs, jsxDEV} from './jsx/ReactJSX'; diff --git a/scripts/rollup/bundles.js b/scripts/rollup/bundles.js index 6e7ed4092de44..2dfa11f5d9bda 100644 --- a/scripts/rollup/bundles.js +++ b/scripts/rollup/bundles.js @@ -96,18 +96,6 @@ const bundles = [ externals: [], }, - /******* Isomorphic Shared Subset for FB *******/ - { - bundleTypes: __EXPERIMENTAL__ ? [FB_WWW_DEV, FB_WWW_PROD] : [], - moduleType: ISOMORPHIC, - entry: 'react/src/ReactServerFB.js', - condition: 'react-server', - global: 'ReactServer', - minifyWithProdErrorCodes: true, - wrapWithModuleBoundaries: false, - externals: [], - }, - /******* React JSX Runtime *******/ { bundleTypes: [ @@ -596,29 +584,6 @@ const bundles = [ externals: ['acorn'], }, - /******* React Server DOM FB Server *******/ - { - bundleTypes: __EXPERIMENTAL__ ? [FB_WWW_DEV, FB_WWW_PROD] : [], - moduleType: RENDERER, - entry: 'react-server-dom-fb/src/ReactFlightDOMServerFB.js', - condition: 'react-server', - global: 'ReactFlightDOMServer', - minifyWithProdErrorCodes: false, - wrapWithModuleBoundaries: false, - externals: ['react', 'react-dom'], - }, - - /******* React Server DOM FB Client *******/ - { - bundleTypes: __EXPERIMENTAL__ ? [FB_WWW_DEV, FB_WWW_PROD] : [], - moduleType: RENDERER, - entry: 'react-server-dom-fb/src/ReactFlightDOMClientFB.js', - global: 'ReactFlightDOMClient', - minifyWithProdErrorCodes: false, - wrapWithModuleBoundaries: false, - externals: ['react', 'react-dom'], - }, - /******* React Suspense Test Utils *******/ { bundleTypes: [NODE_ES2015], diff --git a/scripts/rollup/forks.js b/scripts/rollup/forks.js index 98449cf8f84b0..35b9a5421cf86 100644 --- a/scripts/rollup/forks.js +++ b/scripts/rollup/forks.js @@ -62,10 +62,7 @@ const forks = Object.freeze({ if (entry === 'react') { return './packages/react/src/ReactSharedInternalsClient.js'; } - if ( - entry === 'react/src/ReactServer.js' || - entry === 'react/src/ReactServerFB.js' - ) { + if (entry === 'react/src/ReactServer.js') { return './packages/react/src/ReactSharedInternalsServer.js'; } if (bundle.condition === 'react-server') { diff --git a/scripts/shared/inlinedHostConfigs.js b/scripts/shared/inlinedHostConfigs.js index 63ec4db4dbe39..8995d4a79a6da 100644 --- a/scripts/shared/inlinedHostConfigs.js +++ b/scripts/shared/inlinedHostConfigs.js @@ -405,34 +405,13 @@ module.exports = [ 'react-dom', 'react-dom/src/ReactDOMServer.js', 'react-dom-bindings', - 'react-server-dom-fb/src/ReactDOMServerFB.js', + 'react-server-dom-fb', 'shared/ReactDOMSharedInternals', ], isFlowTyped: true, isServerSupported: true, isFlightSupported: false, }, - { - shortName: 'dom-fb-experimental', - entryPoints: [ - 'react-server-dom-fb/src/ReactFlightDOMClientFB.js', - 'react-server-dom-fb/src/ReactFlightDOMServerFB.js', - ], - paths: [ - 'react-dom', - 'react-dom-bindings', - 'react-server-dom-fb/src/ReactFlightClientConfigFBBundler.js', - 'react-server-dom-fb/src/ReactFlightClientConfigFBBundler.js', - 'react-server-dom-fb/src/ReactFlightReferencesFB.js', - 'react-server-dom-fb/src/ReactFlightServerConfigFBBundler.js', - 'react-server-dom-fb/src/ReactFlightDOMClientFB.js', - 'react-server-dom-fb/src/ReactFlightDOMServerFB.js', - 'shared/ReactDOMSharedInternals', - ], - isFlowTyped: true, - isServerSupported: true, - isFlightSupported: true, - }, { shortName: 'native', entryPoints: ['react-native-renderer'],