Home / File/ ReactDOMLegacyServerImpl.js — react Source File

ReactDOMLegacyServerImpl.js — react Source File

Architecture documentation for ReactDOMLegacyServerImpl.js, a javascript file in the react codebase. 4 imports, 2 dependents.

File javascript BabelCompiler Validation 4 imports 2 dependents 2 functions

Entity Profile

Dependency Diagram

graph LR
  02c4299e_b30e_07d4_d500_7acc5ea7cd1c["ReactDOMLegacyServerImpl.js"]
  0b5d77d6_fa00_515b_1198_0f2d2642dc21["ReactVersion"]
  02c4299e_b30e_07d4_d500_7acc5ea7cd1c --> 0b5d77d6_fa00_515b_1198_0f2d2642dc21
  d8f20c67_f5fa_0f0a_c967_c41fd9ffce07["ReactTypes"]
  02c4299e_b30e_07d4_d500_7acc5ea7cd1c --> d8f20c67_f5fa_0f0a_c967_c41fd9ffce07
  ca40cfc0_4531_f3fa_7600_53b0400a208c["ReactFizzServer"]
  02c4299e_b30e_07d4_d500_7acc5ea7cd1c --> ca40cfc0_4531_f3fa_7600_53b0400a208c
  ba90bd45_7974_31d5_8e09_581606125efd["ReactFizzConfigDOMLegacy"]
  02c4299e_b30e_07d4_d500_7acc5ea7cd1c --> ba90bd45_7974_31d5_8e09_581606125efd
  f5aafa09_0e63_9796_965e_6285dfb6de98["ReactDOMLegacyServerBrowser.js"]
  f5aafa09_0e63_9796_965e_6285dfb6de98 --> 02c4299e_b30e_07d4_d500_7acc5ea7cd1c
  cf283598_cf8c_61b8_d12c_557b4049fd9c["ReactDOMLegacyServerNode.js"]
  cf283598_cf8c_61b8_d12c_557b4049fd9c --> 02c4299e_b30e_07d4_d500_7acc5ea7cd1c
  style 02c4299e_b30e_07d4_d500_7acc5ea7cd1c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/**
 * 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 ReactVersion from 'shared/ReactVersion';

import type {ReactNodeList} from 'shared/ReactTypes';

import {
  createRequest,
  startWork,
  startFlowing,
  abort,
} from 'react-server/src/ReactFizzServer';

import {
  createResumableState,
  createRenderState,
  createRootFormatContext,
} from 'react-dom-bindings/src/server/ReactFizzConfigDOMLegacy';

type ServerOptions = {
  identifierPrefix?: string,
};

function onError() {
  // Non-fatal errors are ignored.
}

function renderToStringImpl(
  children: ReactNodeList,
  options: void | ServerOptions,
  generateStaticMarkup: boolean,
  abortReason: string,
): string {
  let didFatal = false;
  let fatalError = null;
  let result = '';
  const destination = {
    // $FlowFixMe[missing-local-annot]
    push(chunk) {
      if (chunk !== null) {
        result += chunk;
      }
      return true;
    },
    // $FlowFixMe[missing-local-annot]
    destroy(error) {
      didFatal = true;
      fatalError = error;
    },
  };

  let readyToStream = false;
  function onShellReady() {
    readyToStream = true;
  }
  const resumableState = createResumableState(
    options ? options.identifierPrefix : undefined,
    undefined,
  );
  const request = createRequest(
    children,
    resumableState,
    createRenderState(resumableState, generateStaticMarkup),
    createRootFormatContext(),
    Infinity,
    onError,
    undefined,
    onShellReady,
    undefined,
    undefined,
    undefined,
  );
  startWork(request);
  // If anything suspended and is still pending, we'll abort it before writing.
  // That way we write only client-rendered boundaries from the start.
  abort(request, abortReason);
  startFlowing(request, destination);
  if (didFatal && fatalError !== abortReason) {
    throw fatalError;
  }

  if (!readyToStream) {
    // Note: This error message is the one we use on the client. It doesn't
    // really make sense here. But this is the legacy server renderer, anyway.
    // We're going to delete it soon.
    throw new Error(
      'A component suspended while responding to synchronous input. This ' +
        'will cause the UI to be replaced with a loading indicator. To fix, ' +
        'updates that suspend should be wrapped with startTransition.',
    );
  }

  return result;
}

export {renderToStringImpl, ReactVersion as version};

Domain

Subdomains

Dependencies

  • ReactFizzConfigDOMLegacy
  • ReactFizzServer
  • ReactTypes
  • ReactVersion

Frequently Asked Questions

What does ReactDOMLegacyServerImpl.js do?
ReactDOMLegacyServerImpl.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Validation subdomain.
What functions are defined in ReactDOMLegacyServerImpl.js?
ReactDOMLegacyServerImpl.js defines 2 function(s): onError, renderToStringImpl.
What does ReactDOMLegacyServerImpl.js depend on?
ReactDOMLegacyServerImpl.js imports 4 module(s): ReactFizzConfigDOMLegacy, ReactFizzServer, ReactTypes, ReactVersion.
What files import ReactDOMLegacyServerImpl.js?
ReactDOMLegacyServerImpl.js is imported by 2 file(s): ReactDOMLegacyServerBrowser.js, ReactDOMLegacyServerNode.js.
Where is ReactDOMLegacyServerImpl.js in the architecture?
ReactDOMLegacyServerImpl.js is located at packages/react-dom/src/server/ReactDOMLegacyServerImpl.js (domain: BabelCompiler, subdomain: Validation, directory: packages/react-dom/src/server).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free