npm / react-dom / 19.3.1

react-dom 19.3.1

Source
https://github.com/react/react
Tag scanned
v19.3.1
Directory
packages/react-dom (only this part of the repository was scanned)
Compared with
v19.3.0 (0 signals introduced since)
Files
226 scanned, 0 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 8 info
Scan time
6.1 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 2 of 2 warn and critical signals; 2 demoted to info.
Disclude version
4.0.0
Scanned (UTC)
2026-10-15 01:07

Signals

Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.

  1. info critical → info by review dynamic-execution packages/react-dom/src/__tests__/ReactDOMForm-test.js:963:20

    `Function(...)` called with a non-literal body (ast pass, confidence 0.75)

              // eslint-disable-next-line no-new-func
              result = Function(action.slice(11))();
            }
          } catch (x) {
    likely benign LLM, confidence 0.85 A React test helper runs Function() on the body of a javascript: action string to check form action handling.
    Reasoning

    The snippet sits in a React DOM form test. It evaluates `action.slice(11)`, which looks like the body of a `javascript:` URL, inside a try/catch, and the preceding line is an explicit eslint-disable for no-new-func. This is a test exercising how React handles javascript: form actions, not an attacker payload. The dynamic execution is real, but its scope is a test fixture and it is clearly annotated as deliberate.

  2. surrogate pair \uD83D\uDE0A (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

            'keypress',
            {which: keyCode('X'), char: '\uD83D\uDE0A'},
          ],
        },
  3. surrogate pair \uD83D\uDE0A (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

          eventSimulator: simulateEvent,
          eventSimulatorArgs: ['textInput', {data: '\uD83D\uDE0A'}],
        },
        {
  4. surrogate pair \uD83D\uDE0A (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

                expect(beforeInputEvent.type).toBe('beforeinput');
                expect(beforeInputEvent.data).toBe('\uD83D\uDE0A');
              },
            },
  5. surrogate pair \uD83D\uDE0A (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

                expect(beforeInputEvent.type).toBe('beforeinput');
                expect(beforeInputEvent.data).toBe('\uD83D\uDE0A');
              },
            },
  6. surrogate pair \uD83D\uDE0A (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

                expect(beforeInputEvent.type).toBe('beforeinput');
                expect(beforeInputEvent.data).toBe('\uD83D\uDE0A');
              },
            },
  7. surrogate pair \uD83D\uDE0A (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

                expect(beforeInputEvent.type).toBe('beforeinput');
                expect(beforeInputEvent.data).toBe('\uD83D\uDE0A');
              },
            },
  8. info warn → info by review dynamic-import packages/react-dom/src/test-utils/FizzTestUtils.js:99:7

    `require` called with a non-literal specifier (ast pass, confidence 0.60)

          // $FlowFixMe[unsupported-syntax]
          require(scriptSrc);
        } catch (x) {
          const event = new window.ErrorEvent('error', {error: x});
    likely benign LLM, confidence 0.85 A test-utils helper requires a dynamically supplied script path, likely a renderer-generated bundle, inside a try/catch.
    Reasoning

    This is a React test utility that calls require on a script source produced by the Fizz server renderer, wrapped in a try/catch and preceded by a Flow suppression comment. The non-literal specifier is an ordinary test-harness pattern for loading generated bundles. Nothing in the snippet suggests obfuscation or remote fetching of untrusted code, and the file is test infrastructure.

Reproduce This Scan

Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.

cargo install disclude --version 4.0.0
git clone https://github.com/react/react react && cd react
git checkout v19.3.1
disclude scan --severity info --diff v19.3.0 packages/react-dom