npm / react-dom / 19.1.10

react-dom 19.1.10

Source
https://github.com/react/react
Tag scanned
v19.1.10
Directory
packages/react-dom (only this part of the repository was scanned)
Compared with
v19.1.9 (0 signals introduced since)
Files
217 scanned, 0 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 8 info
Scan time
5.9 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:949: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 test in React's DOM form suite evaluates the body of a javascript: action URL with Function() to simulate its behaviour.
    Reasoning

    The Function() call runs the remainder of a javascript: URL string, which is how a test simulates form actions given javascript: URLs. The eslint-disable comment for no-new-func shows the developers intended this use. It sits in a test file, the input comes from test fixtures rather than untrusted runtime data, and nothing in the snippet suggests a dropper or exfiltration. It is still dynamic execution, so the verdict is not certain.

  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
          require(scriptSrc);
        } catch (x) {
          const event = new window.ErrorEvent('error', {error: x});
    likely benign LLM, confidence 0.85 A Fizz test utility requires a script from a source path inside a try/catch, apparently to load test code dynamically.
    Reasoning

    This is a React test utility that calls require on a script source inside a try block, with a $FlowFixMe comment, so it is a deliberate test harness pattern. The script path comes from the test setup, not from external input, and the catch path only dispatches an error event. The snippet does not show where scriptSrc comes from, but nothing here looks like a supply-chain payload.

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.1.10
disclude scan --severity info --diff v19.1.9 packages/react-dom