npm / react-dom / 19.3.0-canary-99c106c4-20261014

react-dom 19.3.0-canary-99c106c4-20261014

Source
https://github.com/react/react
Commit scanned
99c106c43439 (recorded by npm)
Directory
packages/react-dom (only this part of the repository was scanned)
Compared with
98ce535fdb6f (0 signals introduced since)
Files
227 scanned, 0 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 8 info
Scan time
5.7 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:08

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.80 Test code that evaluates the body of a javascript: URL form action via Function() to simulate browser behavior.
    Reasoning

    The Function(...) call runs the body of a javascript: URL form action inside a React DOM test. The eslint-disable comment for no-new-func shows the call is deliberate. The code sits in a try block and is used to simulate browser behavior in a test file, which is a legitimate pattern. The snippet alone does not show the source of action.slice(11), so a small doubt remains about whether the input could be attacker-controlled outside tests.

  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 Test helper that dynamically requires a script path in a Fizz SSR test environment and dispatches an error event on failure.
    Reasoning

    This is a React test utility that loads a script from scriptSrc inside a try/catch and reports errors via a window ErrorEvent. The FlowFixMe comment shows it is typed code written by the maintainers. The specifier comes from the test harness, not untrusted input, so the dynamic require is an ordinary test-environment mechanism.

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 99c106c43439ad7af05d42f66582d8d05190e9ff
disclude scan --severity info --diff 98ce535fdb6ff559a5dd76b58c1bcaa983804957 packages/react-dom