Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update RDT fork to support React 19 #14

Merged

Conversation

markerikson
Copy link

This PR:

  • Merges in all changes to the React repo and React Devtools logic since mid-2023, including all changes the React team has added for React 19 support
  • Edits the RDT logic to remove the imports for the optional StyleX support, which we presumably don't care about and don't need to include in the generated bundle

rickhanlonii and others added 30 commits April 26, 2024 12:45
…#28955)

## Summary

I'm looking at cleaning up some unnecessary manual property flattening
in React Native and wanted to verify this behaviour is working as
expected, where properties from nested objects will always overwrite
properties from the base object.

## How did you test this change?

Unit tests
Move useMemoCache hook to react/compiler-runtime

For Meta-internal purposes, we keep the export on `react` itself to
reduce churn.
Enables the Reanimated flag automatically if we find reanimated in the
user's list of plugins

ghstack-source-id: 20e83374612362a30d6c8cc7a903d9320e8cc23a
Pull Request resolved: facebook/react-forget#2915
ghstack-source-id: 79f3319d87909d05731ef821d0ffe86cb01b0432
Pull Request resolved: facebook/react-forget#2920
Show compiling status message and not just block
UI.

ghstack-source-id: 67761c5d32216e105c4aa6404dfa07d76ae22583
Pull Request resolved: https://github.com/facebook/react-forget/pull/2921
ghstack-source-id: f05222073be785b77346c4e8760bf4d0bb4d658e
Pull Request resolved: https://github.com/facebook/react-forget/pull/2922
Add a configurable list of known incompatible libraries.

Check all package.jsons for any uses of known incompatible libraries and
warn if found.

ghstack-source-id: 7329e3792b57458e681780cba3140a14a9b1a60d
Pull Request resolved: https://github.com/facebook/react-forget/pull/2923
Makes it easier to extend later, if we want to add more checks.

ghstack-source-id: 6fb3435555f1b988e1a185bfda8be9418eb622c5
Pull Request resolved: https://github.com/facebook/react-forget/pull/2924
Treat MethodCalls similar to general CallExpressions and mark them
as escaping in PruneNonEscapingScopes pass.

ghstack-source-id: 3c81bdb17f58fbeef8be24e7cb363172d1867217
Pull Request resolved: https://github.com/facebook/react-forget/pull/2925
…ook#2918)

This uses the compiler runtime from `react/compiler-runtime` by default unless `compilerRuntime` is specifified in the Babel options which then imports the runtime from there. The `useMemoCache` hook is now named `c` in accordance with facebook@4508873

Unfortunately, I couldn't figure out how to import `react@beta` which already has that import as various react verstions were conflicting. If someone can figure this out it'd be fantastic. As a result, I had to update the default for the test runner to default the `compilerRuntime` option to `react` to preserve the previous behavior to import from `react`. Once upgraded to React 19, we should be able to remove that override.
To make a first time setup of the compiler truly config-less, default to
not compiling node_modules unless a user provided `sources` (advanced
option) is provided

ghstack-source-id: b0798052404d772ce6ee471e577699d4b0871d56
Pull Request resolved: facebook/react-forget#2919
When a React PR is opened CI will report large size changes. But for
critical packages like react-dom it reports always. In React 19 we moved
the build for react-dom the client reconciler from react-dom to
react-dom/client

This change adds react-dom-client artifacts for stable and oss channels
since that is originally what was being tracked. But since
react-dom/client always imports react-dom I left the original react-dom
packages as critical as well. They are small but it would be good to
keep an eye on them
)

## Summary

This PR introduces a faster version of the `addProperties` function.
This new function is basically the `diffProperties` with `prevProps` set
to `null`, propagated constants, and all the unreachable code paths
collapsed.

## How did you test this change?

I've tested this change with [the benchmark
app](https://github.com/react-native-community/RNNewArchitectureApp/tree/new-architecture-benchmarks)
and got ~4.4% improvement in the view creation time.
ghstack-source-id: bb66913e2d3c814696311371ed655f3da03d1199
Pull Request resolved: facebook/react-forget#2926
ghstack-source-id: cce73f26b7b3903b8d79b70dbc24cbee09693d81
Pull Request resolved: facebook/react-forget#2927
ghstack-source-id: e7f00aab61dd749dc6ba11ce7e4d14603bfeeab9
Pull Request resolved: facebook/react-forget#2928
ghstack-source-id: 9cd5fe41ae322632dfeb3d5c7468268678006d94
Pull Request resolved: facebook/react-forget#2929
ghstack-source-id: c6c825f5efdb4f9c413050b22b7713966871338c
Pull Request resolved: facebook/react-forget#2931
Following facebook#28768, add a path to testing Fast JSX on www.

We want to measure the impact of Fast JSX and enable a path to testing
before string refs are completely removed in www (which is a work in
progress).

Without `disableStringRefs`, we need to copy any object with a `ref` key
so we can pass it through `coerceStringRef()` and copy it into the
object. This de-opt path is what is gated behind
`enableFastJSXWithStringRefs`.

The additional checks should have no perf impact in OSS as the flags
remain true there and the build output is not changed. For www, I've
benchmarked the addition of the boolean checks with values cached at
module scope. There is no significant change observed from our
benchmarks and any latency will apply to test and control branches
evenly. This added experiment complexity is temporary. We should be able
to clean it up, along with the flag checks for `enableRefAsProp` and
`disableStringRefs` shortly.
…de in build output (facebook#28970)

## Summary

The `react-devtools-fusebox` private package is used in the React Native
DevTools (Fusebox) frontend by checking build artifacts into RN's
[fork]([`facebookexperimental/rn-chrome-devtools-frontend`](https://github.com/facebookexperimental/rn-chrome-devtools-frontend))
of the Chrome DevTools (CDT) repo - see
facebookexperimental/rn-chrome-devtools-frontend#22.

Currently, the CDT fork also includes a [manually written TypeScript
definition
file](https://github.com/facebookexperimental/rn-chrome-devtools-frontend/blob/1d5f8d5209ac49de97aec16732169d47bf525474/front_end/third_party/react-devtools/package/frontend.d.ts)
which describes `react-devtools-fusebox`'s API. This PR moves that file
into the React repo, next to the implementation of
`react-devtools-fusebox`, so we can update it atomically with changes to
the package.

As this is the first bit of TypeScript in this repo, the PR adds minimal
support for formatting `.d.ts` files with Prettier. It also opts out
`react-devtools-fusebox/dist/` from linting/formatting as a drive-by
fix.

For now, we'll just maintain the `.d.ts` file manually, but we could
consider leveraging
[`flow-api-translator`](https://www.npmjs.com/package/flow-api-translator)
to auto-generate it in the future.

## How did you test this change?

Build `react-devtools-fusebox`, observe that `dist/frontend.d.ts`
exists.
…#28972)

## Summary

Enables the inspected element context menu in React Native DevTools
(Fusebox).

## How did you test this change?

1. `yarn build` in `react-devtools-fusebox`
2. Copy artifacts to rn-chrome-devtools-frontend
3. Manually test the context menu


https://github.com/facebook/react/assets/2246565/b35cc20f-8d67-43b0-b863-7731e10fffac

NOTE: The serialised values sometimes expose React internals (e.g. Hook
data structures instead of just the values), but that seems to be a
problem equally on web, so I'm going for native<->web parity here.
acdlite and others added 22 commits May 31, 2024 17:52
…k#29670)

When a component suspends with `use`, we switch to the "re-render"
dispatcher during the subsequent render attempt, so that we can reuse
the work from the initial attempt. However, once we run out of hooks
from the previous attempt, we should switch back to the regular "update"
dispatcher.

This is conceptually the same fix as the one introduced in
facebook#26232. That fix only accounted
for initial mount, but the useTransition regression test added in
f829733 illustrates that we need to
handle updates, too.

The issue affects more than just useTransition but because most of the
behavior between the "re-render" and "update" dispatchers is the same
it's hard to contrive other scenarios in a test, which is probably why
it took so long for someone to notice.

Closes facebook#28923 and facebook#29209

---------

Co-authored-by: eps1lon <[email protected]>
Eslint rules should never throw, so if we fail to parse with Babel or
Hermes, we should just ignore the error. This should fix issues such as
trying to run the eslint rule on non tsx|ts|jsx|js files, Hermes parser
not supporting certain JS syntax, etc.

I didn't add a test for this as our eslint-rule-tester config uses
hermes-eslint parser, so it wasn't possible to add a top level await as
it would crash hermes-eslint before our rule was triggered. Similarly I
couldn't add a test for non-JS files as it would not be parseable by
hermes-eslint.

Fixes facebook#29107

ghstack-source-id: 60afcdb89ab4a8d2e4697cc50c5490803e7cbeac
Pull Request resolved: facebook#29631
…ce maps from (facebook#29708)

This lets you click a stack frame on the client and see the Server
source code inline.

<img width="871" alt="Screenshot 2024-06-01 at 11 44 24 PM"
src="https://github.com/facebook/react/assets/63648/581281ce-0dce-40c0-a084-4a6d53ba1682">

<img width="840" alt="Screenshot 2024-06-01 at 11 43 37 PM"
src="https://github.com/facebook/react/assets/63648/00dc77af-07c1-4389-9ae0-cf1f45199efb">

We could do some logic on the server that sends a source map url for
every stack frame in the RSC payload. That would make the client
potentially config free. However regardless we need the config to
describe what url scheme to use since that’s not built in to the bundler
config. In practice you likely have a common pattern for your source
maps so no need to send data over and over when we can just have a
simple function configured on the client.

The server must return a source map, even if the file is not actually
compiled since the fake file is still compiled.

The source mapping strategy can be one of two models depending on if the
server’s stack traces (`new Error().stack`) are source mapped back to
the original (`—enable-source-maps`) or represents the location in
compiled code (like in the browser).

If it represents the location in compiled code it’s actually easier. You
just serve the source map generated for that file by the tooling.

If it is already source mapped it has to generate a source map where
everything points to the same location (as if not compiled) ideally with
a segment per logical ast node.
Requires facebook#29706

The strategy here is to:
- Checkout the builds/facebook-www branch
- Read the current sync'd VERSION
- Checkout out main and sync new build
- sed/{new version string}/{old version string}
- Run git status, skip sync if clean
- Otherwise, sed/{old version string}/{new version string} and push
commit

This means that:
- We're using the real version strings from the builds
- We are checking the last commit on the branch for the real last
version
- We're skipping any commits that won't result in changes
- ???
- Profit!
Host Components can exist as four semantic types

1. regular Components (Vanilla obv)
2. singleton Components
2. hoistable components
3. resources

Each of these component types have their own rules related to mounting
and reconciliation however they are not direclty modeled as their own
unique fiber type. This is partly for code size but also because
reconciling the inner type of these components would be in a very hot
path in fiber creation and reconciliation and it's just not practical to
do this logic check here.

Right now we have three Fiber types used to implement these 4 concepts
but we probably need to reconsider the model and think of Host
Components as a single fiber type with an inner implementation. Once we
do this we can regularize things like transitioning between a resource
and a regular component or a singleton and a hoistable instance. The
cases where these transitions happen today aren't particularly common
but they can be observed and currently the handling of these transitions
is incomplete at best and buggy at worst. The most egregious case is the
link type. This can be a regular component (stylesheet without
precedence) a hoistable component (non stylesheet link tags) or a
resource (stylesheet with a precedence) and if you have a single jsx
slot that tries to reconcile transitions between these types it just
doesn't work well.

This commit adds an error for when a Hoistable goes from Instance to
Resource. Currently this is only possible for `<link>` elements going to
and from stylesheets with precedence. Hopefully we'll be able to remove
this error and implement as an inner type before we encounter new
categories for the Hoistable types

detecting type shifting to and from regular components is harder to do
efficiently because we don't want to reevaluate the type on every update
for host components which is currently not required and would add
overhead to a very hot path

singletons can't really type shift in their one practical implementation
(DOM) so they are only a problem in theroy not practice
Mini-refactor of useActionState to only wrap the action in a transition
context if the dispatch is called during a transition. Conceptually, the
action starts as soon as the dispatch is called, even if the action is
queued until earlier ones finish.

We will also warn if an async action is dispatched outside of a
transition, since that is almost certainly a mistake. Ideally we would
automatically upgrade these to a transition, but we don't have a great
way to tell if the action is async until after it's already run.
Based on

- facebook#29694 

---

If an action in the useActionState queue errors, we shouldn't run any
subsequent actions. The contract of useActionState is that the actions
run in sequence, and that one action can assume that all previous
actions have completed successfully.

For example, in a shopping cart UI, you might dispatch an "Add to cart"
action followed by a "Checkout" action. If the "Add to cart" action
errors, the "Checkout" action should not run.

An implication of this change is that once useActionState falls into an
error state, the only way to recover is to reset the component tree,
i.e. by unmounting and remounting. The way to customize the error
handling behavior is to wrap the action body in a try/catch.
RC releases are a special kind of prerelease build because unlike
canaries we shouldn't publish new RCs from any commit on `main`, only
when we intentionally bump the RC number. But they are still prerelases
— like canary and experimental releases, they should use exact version
numbers in their dependencies (no ^).

We only need to generate these builds during the RC phase, i.e. when the
canary channel label is set to "rc".

Example of resulting package.json output:

```json
{
  "name": "react-dom",
  "version": "19.0.0-rc.0",
  "dependencies": {
    "scheduler": "0.25.0-rc.0"
  },
  "peerDependencies": {
    "react": "19.0.0-rc.0"
  }
}
```


https://react-builds.vercel.app/prs/29736/files/oss-stable-rc/react-dom/package.json
facebook#29697)

This information is available in the regular stack but since that's
hidden behind an expando and our appended stack to logs is not hidden,
it hides the most important frames like the name of the current
component.

This is closer to what happens to the native stack.

We only include stacks if they're within a ReactFiberCallUserSpace call
frame. This should be most that have a current fiber but this is
critical to filtering out most React frames if the regular node_modules
filter doesn't work.

Most React warnings fire during the rendering phase and not inside a
user space function but some do like hooks warnings and setState in
render. This feature is more important if we port this to React DevTools
appending stacks to all logs where it's likely to originate from inside
a component and you want the line within that component to immediately
part of the visible stack.

One thing that kind sucks is that we don't have a reliable way to
exclude React internal stack frames. We filter node_modules but it might
not match. For other cases I try hard to only track the stack frame at
the root of React (e.g. immediately inside createElement) until the
ReactFiberCallUserSpace so we don't need the filtering to work. In this
case it's hard to achieve the same thing though. This is easier in RDT
because we have the start/end line and parsing of stack traces so we can
use that to exclude internals but that's a lot of code/complexity for
shipping within the library.

For example in Safari:

<img width="590" alt="Screenshot 2024-05-31 at 6 15 27 PM"
src="https://github.com/facebook/react/assets/63648/2820c8c0-8a03-42e9-8678-8348f66b051a">

Ideally warnOnUseFormStateInDev and useFormState wouldn't be included
since they're React internals. Before this change, the Counter.js line
also wasn't included though which points to exactly where the error is
within the user code.

(Note Server Components have V8 formatted lines and Client Components
have JSC formatted lines.)
Use some clever git diffing to ignore lines that only change the
`@generated` header. We can't do this for the version string because the
version string can be embedded in lines with other changes, but this
header is always on one line.
ghstack-source-id: eedd024d36f66a68abe43ba0f679e2d462b77505
Pull Request resolved: facebook#29742
…ed (facebook#29720)

Following the instructions in the compiler/docs/DEVELOPMENT_GUIDE.md, we are stuck on the command `yarn snap --watch` because it calls readTestFilter even though the filter option is not enabled.
www: set enableRefAsProp to true
… of react (facebook#29753)

<!--
  Thanks for submitting a pull request!
We appreciate you spending the time to work on these changes. Please
provide enough information so that others can review your pull request.
The three fields below are mandatory.

Before submitting a pull request, please make sure the following is
done:

1. Fork [the repository](https://github.com/facebook/react) and create
your branch from `main`.
  2. Run `yarn` in the repository root.
3. If you've fixed a bug or added code that should be tested, add tests!
4. Ensure the test suite passes (`yarn test`). Tip: `yarn test --watch
TestName` is helpful in development.
5. Run `yarn test --prod` to test in the production environment. It
supports the same options as `yarn test`.
6. If you need a debugger, run `yarn test --debug --watch TestName`,
open `chrome://inspect`, and press "Inspect".
7. Format your code with
[prettier](https://github.com/prettier/prettier) (`yarn prettier`).
8. Make sure your code lints (`yarn lint`). Tip: `yarn linc` to only
check changed files.
  9. Run the [Flow](https://flowtype.org/) type checks (`yarn flow`).
  10. If you haven't already, complete the CLA.

Learn more about contributing:
https://reactjs.org/docs/how-to-contribute.html
-->

## Summary

Remove `startTransition` and `useActionState` from `react-server`
condition of react, as they should only stay in client bundle.
This will reduce the server bundle of react itself. 

Found this while tracing where the `process.emit` was called.

<!--
Explain the **motivation** for making this change. What existing problem
does the pull request solve?
-->

## How did you test this change?

<!--
Demonstrate the code is solid. Example: The exact commands you ran and
their output, screenshots / videos if the pull request changes the user
interface.
How exactly did you verify that your PR solves the issue you wanted to
solve?
  If you leave this empty, your PR will very likely be closed.
-->
## Overview

We didn't have any tests that ran in persistent mode with the xplat
feature flags (for either variant).

As a result, invalid test gating like in
facebook#29664 were not caught.

This PR adds test flavors for `ReactFeatureFlag-native-fb.js` in both
variants.
Copy link

New and removed dependencies detected. Learn more about Socket for GitHub ↗︎

Package New capabilities Transitives Size Publisher
npm/@alloc/[email protected] None 0 14.1 kB aleclarson
npm/@babel/[email protected] Transitive: eval, filesystem, network +2 979 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 58.1 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 65.2 kB nicolo-ribaudo
npm/@babel/[email protected] filesystem 0 133 kB nicolo-ribaudo
npm/@babel/[email protected] environment, filesystem, unsafe Transitive: shell +7 4.56 MB nicolo-ribaudo
npm/@babel/[email protected] None 0 108 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 493 kB nicolo-ribaudo
npm/@babel/[email protected] Transitive: environment +1 2.41 MB nicolo-ribaudo
npm/@babel/[email protected] None 0 51.6 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 189 kB nicolo-ribaudo
npm/@babel/[email protected] None +1 33 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 11.9 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 130 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 32 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 31.6 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 49.2 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 11.4 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 11.7 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 424 kB nicolo-ribaudo
npm/@babel/[email protected] environment +1 25.9 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 1.93 MB nicolo-ribaudo
npm/@babel/[email protected] None 0 1.88 MB nicolo-ribaudo
npm/@babel/[email protected] None +1 77 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 21.3 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 5.42 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 3.5 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 5.12 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 5.11 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.13 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.13 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.21 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 6.86 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 3.4 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 5.54 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 20.4 kB nicolo-ribaudo
npm/@babel/[email protected] None +4 116 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 7.61 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.86 kB nicolo-ribaudo
npm/@babel/[email protected] None +2 74.5 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 10.1 kB nicolo-ribaudo
npm/@babel/[email protected] None +3 82.5 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 83.8 kB nicolo-ribaudo
npm/@babel/[email protected] Transitive: environment +3 4.5 MB nicolo-ribaudo
npm/@babel/[email protected] None 0 81.6 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 6.16 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 6.16 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 8.11 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 8.11 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 17.5 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 43.2 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 5.8 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 5.8 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 8.68 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 8.68 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 20 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 64.6 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.87 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 10.3 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 9.11 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 9.11 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 5.38 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 5.38 kB nicolo-ribaudo
npm/@babel/[email protected] None +1 140 kB nicolo-ribaudo
npm/@babel/[email protected] None +4 261 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.8 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.8 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 61.2 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.68 kB nicolo-ribaudo
npm/@babel/[email protected] None +2 74.3 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 19.9 kB nicolo-ribaudo
npm/@babel/[email protected] None +2 89.6 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 12.4 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 12.5 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 2.98 kB nicolo-ribaudo
npm/@babel/[email protected] None +1 134 kB nicolo-ribaudo
npm/@babel/[email protected] None +2 138 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 8.33 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 8.41 kB nicolo-ribaudo
npm/@babel/[email protected] None +1 141 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 20.8 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 111 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 14 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.99 kB nicolo-ribaudo
npm/@babel/[email protected] None +6 769 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 4.66 kB nicolo-ribaudo
npm/@babel/[email protected] None +1 20.1 kB nicolo-ribaudo
npm/@babel/[email protected] environment +4 384 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 7.33 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 17.7 kB nicolo-ribaudo
npm/@babel/[email protected] None 0 12.3 kB nicolo-ribaudo
npm/@babel/[email protected] environment, filesystem, unsafe 0 58.5 kB nicolo-ribaudo
npm/@babel/[email protected] environment 0 144 kB nicolo-ribaudo
npm/@babel/[email protected] environment 0 2.5 MB nicolo-ribaudo
npm/@babel/[email protected] environment 0 2.41 MB nicolo-ribaudo
npm/@cspotcode/[email protected] filesystem +1 194 kB cspotcode
npm/@hapi/[email protected] None 0 51.5 kB devinivy
npm/@heroicons/[email protected] None 0 860 kB bradlc
npm/@humanwhocodes/[email protected] None 0 53.3 kB nzakas
npm/@isaacs/[email protected] None +10 184 kB isaacs
npm/@jest/[email protected] unsafe Transitive: environment +1 164 kB simenb
npm/@jest/[email protected] None 0 13.2 kB simenb
npm/@jest/[email protected] None 0 5.15 kB simenb
npm/@jest/[email protected] None 0 25.2 kB simenb
npm/@jest/[email protected] None 0 3.32 kB simenb
npm/@jest/[email protected] environment, unsafe +1 115 kB simenb
npm/@jest/[email protected] None 0 6.07 kB simenb
npm/@jest/[email protected] None 0 5.08 kB simenb
npm/@jest/[email protected] None 0 13.2 kB simenb
npm/@jest/[email protected] None 0 50.9 kB simenb
npm/@jest/[email protected] None +4 116 kB simenb
npm/@jridgewell/[email protected] None 0 232 kB jridgewell
npm/@leichtgewicht/[email protected] None 0 17.7 kB leichtgewicht
npm/@monaco-editor/[email protected] None +1 109 kB surenat
npm/@monaco-editor/[email protected] None 0 151 kB surenat
npm/@napi-rs/[email protected] None 0 8.67 MB broooooklyn
npm/@next/[email protected] environment, filesystem 0 6.95 kB vercel-release-bot
npm/@next/[email protected] filesystem +1 136 kB vercel-release-bot
npm/@next/[email protected] None 0 108 MB vercel-release-bot
npm/@next/[email protected] None 0 109 MB vercel-release-bot
npm/@next/[email protected] None 0 110 MB vercel-release-bot
npm/@next/[email protected] None 0 130 MB vercel-release-bot
npm/@next/[email protected] None 0 123 MB vercel-release-bot
npm/@next/[email protected] None 0 143 MB vercel-release-bot
npm/@next/[email protected] None 0 96.7 MB vercel-release-bot
npm/@next/[email protected] None 0 89.8 MB vercel-release-bot
npm/@next/[email protected] None 0 128 MB vercel-release-bot
npm/@parcel/[email protected] Transitive: environment, filesystem +2 2.63 MB devongovett
npm/@pkgjs/[email protected] None 0 74.2 kB oss-bot
npm/@pkgr/[email protected] environment Transitive: filesystem +20 466 kB jounqin
npm/@playwright/[email protected] Transitive: environment, eval, filesystem, network, shell, unsafe +2 10.1 MB yurys
npm/@playwright/[email protected] Transitive: environment, eval, filesystem, network, shell, unsafe +2 10.1 MB yurys
npm/@rollup/[email protected] filesystem +2 670 kB shellscape
npm/@rollup/[email protected] None +1 67.8 kB shellscape
npm/@rollup/[email protected] filesystem +1 145 kB shellscape
npm/@rollup/[email protected] eval, unsafe Transitive: environment +2 2.26 MB lukastaegert
npm/@rollup/[email protected] environment, filesystem 0 134 kB shellscape
npm/@rushstack/[email protected] None 0 46.5 kB odspnpm
npm/@sinclair/[email protected] None 0 303 kB sinclair
npm/@sinclair/[email protected] None 0 442 kB sinclair
npm/@sinonjs/[email protected] None 0 38 kB mrgnrdrck
npm/@sinonjs/[email protected] eval 0 91.6 kB fatso83
npm/@swc/[email protected] None 0 228 kB kdy1
npm/@testing-library/[email protected] environment 0 2.29 MB testing-library-bot
npm/@testing-library/[email protected] environment 0 4.02 MB testing-library-bot
npm/@tsconfig/[email protected] None 0 2.39 kB typescript-deploys
npm/@tsconfig/[email protected] None 0 2.5 kB typescript-deploys
npm/@tsconfig/[email protected] None 0 2.39 kB typescript-deploys
npm/@tsconfig/[email protected] None 0 2.39 kB typescript-deploys
npm/@tsconfig/[email protected] None 0 3.55 kB typescript-deploys
npm/@tsconfig/[email protected] None 0 2.98 kB typescript-deploys
npm/@types/[email protected] None 0 5.94 kB types
npm/@types/[email protected] None 0 126 kB types
npm/@types/[email protected] None 0 84.1 kB types
npm/@types/[email protected] None +1 14.4 kB types
npm/@types/[email protected] None 0 5.81 kB types
npm/@types/[email protected] None 0 5.49 kB types
npm/@types/[email protected] None 0 192 kB types
npm/@types/[email protected] None 0 25.7 kB types
npm/@types/[email protected] None +3 67.7 kB types
npm/@types/[email protected] None +1 15.3 kB types
npm/@types/[email protected] None 0 12.1 kB types
npm/@types/[email protected] None +1 19.2 kB types
npm/@types/[email protected] None 0 14.7 kB types
npm/@types/[email protected] None 0 4.26 kB types
npm/@types/[email protected] None 0 5.45 kB types
npm/@types/[email protected] None 0 73.6 kB types
npm/@types/[email protected] Transitive: environment +1 100 kB types
npm/@types/[email protected] None +1 35.8 kB types
npm/@types/[email protected] None 0 4 kB types
npm/@types/[email protected] None 0 3.56 MB types
npm/@types/[email protected] None 0 3.5 MB types
npm/@types/[email protected] None +1 2.13 MB types
npm/@types/[email protected] None 0 49.8 kB types
npm/@types/[email protected] None 0 28.8 kB types
npm/@types/[email protected] None +1 1.36 MB types
npm/@types/[email protected] None +1 1.36 MB types
npm/@types/[email protected] None 0 7.65 kB types
npm/@types/[email protected] None 0 23.3 kB types
npm/@types/[email protected] None 0 5.19 kB types
npm/@types/[email protected] None 0 8 kB types
npm/@types/[email protected] None 0 5.84 kB types
npm/@types/[email protected] None 0 21.5 kB types
npm/@types/[email protected] None 0 107 kB types
npm/@typescript-eslint/[email protected] Transitive: environment +7 4.61 MB jameshenry
npm/@typescript-eslint/[email protected] None +2 651 kB jameshenry
npm/@typescript-eslint/[email protected] None +1 769 kB jameshenry
npm/@typescript-eslint/[email protected] None 0 156 kB jameshenry
npm/@typescript-eslint/[email protected] None +1 1.4 MB jameshenry
npm/@typescript-eslint/[email protected] None +1 51.6 kB jameshenry
npm/@use-gesture/[email protected] environment 0 349 kB dbismut
npm/@use-gesture/[email protected] environment 0 37.7 kB dbismut
npm/@webpack-cli/[email protected] None 0 4.54 kB evilebottnawi
npm/@webpack-cli/[email protected] None 0 3.72 kB evilebottnawi
npm/@webpack-cli/[email protected] environment 0 11.6 kB evilebottnawi
npm/[email protected] None 0 161 kB jessebeach
npm/[email protected] None 0 8.05 kB ljharb
npm/[email protected] None 0 25 kB ljharb
npm/[email protected] Transitive: eval +31 2.59 MB ljharb
npm/[email protected] None +1 28.6 kB ljharb
npm/[email protected] None +1 28.1 kB ljharb
npm/[email protected] None 0 7.23 kB ljharb
npm/[email protected] environment 0 199 kB ai
npm/[email protected] None 0 2.35 MB npmdeque
npm/[email protected] None +12 380 kB jessebeach
npm/[email protected] environment 0 14.5 kB simenb
npm/[email protected] None 0 9.62 kB kayhadrin
npm/[email protected] environment Transitive: filesystem +11 1.43 MB kayhadrin
npm/[email protected] None 0 13.7 kB simenb
npm/[email protected] None 0 5.95 kB hermes-team
npm/[email protected] None 0 2.73 kB simenb
npm/[email protected] None 0 99 kB fanatid
npm/[email protected] network Transitive: eval, unsafe +4 143 kB dougwilson
npm/[email protected] network +3 151 kB mdidon
npm/[email protected] environment, filesystem Transitive: shell +5 2.58 MB ai
npm/[email protected] environment, filesystem 0 47.8 kB huafu
npm/[email protected] None +1 99.7 kB feross
npm/[email protected] None 0 2.03 MB caniuse-lite
npm/[email protected] None 0 1.97 MB caniuse-lite
npm/[email protected] None 0 2.05 MB caniuse-lite
npm/[email protected] environment 0 26.1 kB sibiraj-s
npm/[email protected] None 0 611 B sebmarkbage
npm/[email protected] None 0 5.67 kB lukeed
npm/[email protected] None 0 17 kB jorgebucaran
npm/[email protected] environment, filesystem +4 11.6 MB gustavohenke
npm/[email protected] None 0 10.2 kB bripkens
npm/[email protected] None 0 23.1 kB dougwilson
npm/[email protected] None 0 662 kB zloirock
npm/[email protected] filesystem, unsafe 0 6.25 kB pi0
npm/[email protected] Transitive: environment, filesystem +8 545 kB evilebottnawi
npm/[email protected] None 0 283 kB mikemcl
npm/[email protected] None 0 8.11 kB thlorenz
npm/[email protected] None 0 31.2 kB tehshrike
npm/[email protected] Transitive: environment, shell +4 136 kB silverwind
npm/[email protected] None +2 49.4 kB ljharb
npm/[email protected] None 0 234 kB kilianvalkhof
npm/[email protected] None 0 287 kB kilianvalkhof
npm/[email protected] None 0 187 kB thelarkinn
npm/[email protected] None 0 413 kB feedic
npm/[email protected] None +1 59.5 kB titanism
npm/[email protected] eval +2 369 kB ljharb
npm/[email protected] None +17 1.85 MB ljharb
npm/[email protected] Transitive: eval +30 609 kB ljharb
npm/[email protected] eval +3 531 kB medikoo
npm/[email protected] unsafe Transitive: environment, filesystem +56 7.59 MB vercel-release-bot
npm/[email protected] None 0 36.4 kB ljharb
npm/[email protected] None 0 0 B
npm/[email protected] None 0 0 B
npm/[email protected] filesystem Transitive: unsafe +1 3.5 MB eslintbot
npm/[email protected] environment Transitive: filesystem, unsafe +22 5.54 MB eslintbot
npm/[email protected] environment, filesystem, network Transitive: unsafe +14 541 kB dougwilson
npm/[email protected] filesystem 0 91.9 kB mrmlnc
npm/[email protected] environment 0 478 kB kayhadrin
npm/[email protected] None 0 153 MB flowtype
npm/[email protected] Transitive: unsafe +2 60.2 kB flowtype
npm/[email protected] filesystem 0 32.5 kB marcw136
npm/[email protected] shell +2 209 kB isaacs
npm/[email protected] eval 0 37.1 kB ljharb
npm/[email protected] filesystem +2 79.4 kB sindresorhus
npm/[email protected] None +1 1.3 MB cristianbote
npm/[email protected] Transitive: filesystem +2 1.5 MB hermes-team
npm/[email protected] Transitive: filesystem +2 1.58 MB hermes-team
npm/[email protected] None +1 595 kB hermes-team
npm/[email protected] None 0 290 kB hermes-team
npm/[email protected] filesystem 0 962 kB hermes-team
npm/[email protected] filesystem +1 1.34 MB hermes-team
npm/[email protected] filesystem +1 1.34 MB hermes-team
npm/[email protected] network +1 67.9 kB chimurai
npm/[email protected] environment, filesystem, network Transitive: shell +5 220 kB thornjad
npm/[email protected] None 0 19.5 kB ljharb
npm/[email protected] None 0 11.9 kB ljharb
npm/[email protected] None 0 29.3 kB ljharb
npm/[email protected] None +1 31.7 kB ljharb
npm/[email protected] None 0 12.7 kB ljharb
npm/[email protected] None 0 12.3 kB ljharb
npm/[email protected] None +2 43.5 kB ljharb
npm/[email protected] None 0 34.4 kB oss-bot
npm/[email protected] environment, unsafe 0 222 kB isaacs
npm/[email protected] environment 0 253 kB isaacs
npm/[email protected] environment 0 13.8 kB simenb
npm/[email protected] None 0 69.3 kB simenb
npm/[email protected] None 0 44.7 kB simenb
npm/[email protected] Transitive: environment, eval, filesystem, network, shell, unsafe +121 8.13 MB simenb
npm/[email protected] Transitive: environment +1 127 kB simenb
npm/[email protected] None +1 124 kB simenb
npm/[email protected] None 0 9.11 kB simenb
npm/[email protected] None 0 38 kB simenb
npm/[email protected] Transitive: environment +9 261 kB simenb
npm/[email protected] Transitive: environment, eval, unsafe +11 336 kB simenb
npm/[email protected] unsafe 0 8.57 kB simenb
npm/[email protected] None 0 3.79 kB simenb
npm/[email protected] environment, filesystem, shell, unsafe +1 131 kB simenb
npm/[email protected] unsafe 0 6.53 kB simenb
npm/[email protected] None 0 28.4 kB simenb
npm/[email protected] None 0 42 kB simenb
npm/[email protected] None 0 8.93 kB simenb
npm/[email protected] environment, unsafe 0 63.2 kB simenb
npm/[email protected] environment 0 31.5 kB simenb
npm/[email protected] unsafe 0 85.3 kB simenb
npm/[email protected] eval 0 81.8 kB simenb
npm/[email protected] None 0 28.2 kB simenb
npm/[email protected] None 0 5.06 kB simenb
npm/[email protected] Transitive: environment, eval, filesystem, network, shell, unsafe +116 7.44 MB simenb
npm/[email protected] environment, filesystem, unsafe 0 1.95 MB pi0
npm/[email protected] None 0 1.1 MB yaozilong
npm/[email protected] None 0 6.04 kB metro-bot
npm/[email protected] eval, filesystem, network, shell, unsafe 0 2.86 MB domenic
npm/[email protected] eval, filesystem, network, shell, unsafe +25 4.95 MB domenic
npm/[email protected] environment, filesystem, shell +2 63.7 kB soda
npm/[email protected] filesystem 0 16.6 kB antonk52
npm/[email protected] None 0 176 kB pieroxy
npm/[email protected] filesystem 0 186 kB streamich
npm/[email protected] unsafe +4 354 kB evilebottnawi
npm/[email protected] None 0 72.3 kB isaacs
npm/[email protected] None 0 285 kB isaacs
npm/[email protected] filesystem Transitive: environment, eval +1 2.18 MB vscode-bot
npm/[email protected] environment, network 0 79.5 MB alexandrudima
npm/[email protected] environment, network 0 93.8 MB vscode-bot
npm/[email protected] None 0 24.4 kB ai
npm/[email protected] environment, filesystem, network, shell, unsafe +2 73.6 MB vercel-release-bot
npm/[email protected] environment, filesystem, shell Transitive: network +1 233 kB remy
npm/[email protected] environment 0 459 kB iamhosseindhv
npm/[email protected] None +20 299 kB ljharb
npm/[email protected] None +20 314 kB ljharb
npm/[email protected] None +1 29.9 kB sindresorhus
npm/[email protected] None +1 1.05 MB feedic
npm/[email protected] filesystem +1 987 kB isaacs
npm/[email protected] filesystem +1 1.18 MB isaacs
npm/[email protected] None 0 30.9 kB ryanzim
npm/[email protected] None 0 8.45 kB ai
npm/[email protected] environment, unsafe +1 683 kB ai
npm/[email protected] None +1 200 kB ai
npm/[email protected] None 0 0 B
npm/[email protected] environment, filesystem, unsafe 0 8.49 MB prettier-bot
npm/[email protected] environment, filesystem, unsafe 0 8.39 MB prettier-bot
npm/[email protected] None 0 70.7 kB ndubien
npm/[email protected] None 0 97.2 kB bokuweb
npm/[email protected] None 0 0 B
npm/[email protected] environment 0 1.12 MB react-bot
npm/[email protected] None 0 218 B sugarpirate
npm/[email protected] None 0 0 B
npm/[email protected] environment +1 8.78 MB react-bot
npm/[email protected] environment +1 7.51 MB react-bot
npm/[email protected] environment 0 7.42 MB react-bot
npm/[email protected] environment 0 15.1 kB react-bot
npm/[email protected] environment +2 1.22 MB react-bot
npm/[email protected] Transitive: environment +1 3.03 MB brianvaughn
npm/[email protected] environment +1 3.88 MB brianvaughn
npm/[email protected] environment 0 452 kB react-bot
npm/[email protected] environment 0 379 kB react-bot
npm/[email protected] environment 0 379 kB react-bot
npm/[email protected] filesystem 0 1.96 MB craigbrookes
npm/[email protected] None +1 47.8 kB ljharb
npm/[email protected] environment, filesystem 0 145 kB ljharb
npm/[email protected] environment, filesystem +7 2.99 MB isaacs
npm/[email protected] None +1 380 kB stropho
npm/[email protected] None +7 1.15 MB mickael.jeanroy
npm/[email protected] environment, filesystem +15 42.9 MB lukastaegert
npm/[email protected] None +1 1.68 MB jfromaniello
npm/[email protected] None +1 19.5 kB ljharb
npm/[email protected] environment, filesystem +1 227 kB nfischer
npm/[email protected] filesystem, network 0 226 kB eemeli
npm/[email protected] None +1 1.18 MB alangpierce
npm/[email protected] environment, filesystem +1 5.62 MB adamwathan
npm/[email protected] environment, filesystem, unsafe 0 263 kB kul
npm/[email protected] environment, filesystem, unsafe +2 333 kB kul
npm/[email protected] environment, filesystem, unsafe +2 818 kB blakeembrey
npm/[email protected] None 0 32.4 MB typescript-bot
npm/[email protected] environment, network, unsafe 0 1.12 MB ronag
npm/[email protected] environment, network, unsafe +1 1.25 MB matteo.collina
npm/[email protected] environment +1 20 kB ai
npm/[email protected] None +9 434 kB ljharb
npm/[email protected] None 0 18 kB domenic
npm/[email protected] filesystem, network +6 2.73 MB jeffbski
npm/[email protected] environment, filesystem, unsafe Transitive: eval, shell +10 585 kB evilebottnawi
npm/[email protected] filesystem Transitive: eval, unsafe +2 1.1 MB evilebottnawi
npm/[email protected] environment, eval, network Transitive: filesystem, unsafe +4 882 kB evilebottnawi
npm/[email protected] None +2 338 kB domenic
npm/[email protected] None +2 57.1 kB ljharb
npm/[email protected] None 0 45.3 kB developit
npm/[email protected] environment, network 0 141 kB lpinca
npm/[email protected] environment, network 0 135 kB lpinca
npm/[email protected] None 0 30.1 kB jmike
npm/[email protected] None 0 63.8 kB jmike
npm/[email protected] None 0 667 kB colinmcd94

🚮 Removed packages: npm/@actuallyworks/[email protected], npm/@babel/[email protected], npm/@babel/[email protected], npm/@jest/[email protected], npm/@jest/[email protected], npm/@jridgewell/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@types/[email protected], npm/@typescript-eslint/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected], npm/[email protected]

View full report↗︎

Copy link

🚨 Potential security issues detected. Learn more about Socket for GitHub ↗︎

To accept the risk, merge this PR and you will not be notified again.

Alert Package NoteSource
Native code npm/@parcel/[email protected]
Telemetry npm/[email protected]
  • Note: Can be disabled by setting the environment variable NEXT_TELEMETRY_DISABLED=1 . See https://nextjs.org/telemetry for more information
AI warning npm/[email protected]
  • Notes: This code has a worrying combination of potential security risks, including executing a downloaded binary with user input, writing to user-controlled file paths, and automatically modifying the .gitignore. While it does not appear to be outright malware, using it as-is poses significant security concerns. A thorough security review and hardening of these risk areas would be recommended before use.
  • Confidence: 1.00
  • Severity: 0.60
Install scripts npm/[email protected]
  • Install script: postinstall
  • Source: node -e "try{require('./postinstall')}catch(e){}"
Install scripts npm/[email protected]
  • Install script: postinstall
  • Source: node -e "try{require('./_postinstall')}catch(e){}"
Install scripts npm/[email protected]
  • Install script: postinstall
  • Source: node -e "try{require('./postinstall')}catch(e){}"

View full report↗︎

Next steps

What's wrong with native code?

Contains native code which could be a vector to obscure malicious code, and generally decrease the likelihood of reproducible or reliable installs.

Ensure that native code bindings are expected. Consumers may consider pure JS and functionally similar alternatives to avoid the challenges and risks associated with native code bindings.

What is telemetry?

This package contains telemetry which tracks how it is used.

Most telemetry comes with settings to disable it. Consider disabling telemetry if you do not want to be tracked.

What is an AI detected anomaly?

AI has identified unusual behaviors that may pose a security risk.

An AI system found a low-risk anomaly in this package. It may still be fine to use, but you should check that it is safe before proceeding.

What is an install script?

Install scripts are run when the package is installed. The majority of malware in npm is hidden in install scripts.

Packages should not be running non-essential scripts during install and there are often solutions to problems people solve with install scripts that can be run at publish time instead.

Take a deeper look at the dependency

Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support [AT] socket [DOT] dev.

Remove the package

If you happen to install a dependency that Socket reports as Known Malware you should immediately remove it and select a different dependency. For other alert types, you may may wish to investigate alternative packages or consider if there are other ways to mitigate the specific risk posed by the dependency.

Mark a package as acceptable risk

To ignore an alert, reply with a comment starting with @SocketSecurity ignore followed by a space separated list of ecosystem/package-name@version specifiers. e.g. @SocketSecurity ignore npm/[email protected] or ignore all packages with @SocketSecurity ignore-all

@bvaughn
Copy link

bvaughn commented Jun 7, 2024

This PR can probably be closed (along with the fork) in favor of https://github.com/facebook/react/compare/main...replayio:react:replay-react-devtools?expand=1

@markerikson
Copy link
Author

Never merged this into the old fork branch, so doing that for completeness.

@markerikson markerikson merged commit cc8b61c into feature/replay-react-devtools Jul 1, 2024
15 of 16 checks passed
@markerikson markerikson deleted the feature/PRO-467-update-rdt-fork branch July 1, 2024 19:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.