{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":10270250,"defaultBranch":"main","name":"react","ownerLogin":"facebook","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2013-05-24T16:15:54.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/69631?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726696008.0","currentOid":""},"activityList":{"items":[{"before":"e740d4b14b27b4c7a21f67d20a4526a57d6729a7","after":"babde5d1826365bfb794abdb7de4bd21f7b02356","ref":"refs/heads/main","pushedAt":"2024-09-19T17:42:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rickhanlonii","name":"Ricky","path":"/rickhanlonii","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2440089?s=80&v=4"},"commit":{"message":"[lint] Add no-optional-chaining (#31003)\n\n## Overview\r\n\r\nAdds a lint rule to prevent optional chaining to catch issues like\r\nhttps://github.com/facebook/react/pull/30982 until we support optional\r\nchaining without a bundle impact.","shortMessageHtmlLink":"[lint] Add no-optional-chaining (#31003)"}},{"before":"c21ce4a39667c4094208bc35dc86fc9f49fceec6","after":"e740d4b14b27b4c7a21f67d20a4526a57d6729a7","ref":"refs/heads/main","pushedAt":"2024-09-19T14:47:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"chore: remove using local storage for persisting console settings on the frontend (#31002)\n\nAfter https://github.com/facebook/react/pull/30636 and\r\nhttps://github.com/facebook/react/pull/30986 we no longer store settings\r\non the Frontend side via `localStorage`.\r\n\r\nThis PR removes all occurrences of it from\r\n`react-devtools-core/standalone` and `react-devtools-inline`.","shortMessageHtmlLink":"chore: remove using local storage for persisting console settings on …"}},{"before":"632f88df11329c9ad66781ddd75b27df6f8effb9","after":"c21ce4a39667c4094208bc35dc86fc9f49fceec6","ref":"refs/heads/main","pushedAt":"2024-09-19T14:44:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"feat: display message if user ended up opening hook script (#31000)\n\nIn https://github.com/facebook/react/pull/30596 we've moved console\r\npatching to the global hook. Generally speaking, the patching happens\r\neven before React is loaded on the page.\r\n\r\nIf browser DevTools were opened after when `console.error` or\r\n`console.warn` were called, the source script will be `hook.js`, because\r\nof the patching.\r\n\r\n![devtools-opened-after-the-message](https://github.com/user-attachments/assets/3d3dbc16-96b8-4234-b061-57b21b60cf2e)\r\n\r\nThis is because ignore listing is not applied retroactively by Chrome\r\nDevTools.\r\nIf you had it open before console calls, Hook script would be correctly\r\nfiltered out from the stack:\r\n\r\n![devtools-opened-before-the-message](https://github.com/user-attachments/assets/3e99cb22-97b0-4b49-9a76-f7bc948e6452)\r\n\r\nI had hopes that the fix for\r\nhttps://issues.chromium.org/issues/345248263 will also apply ignore\r\nlisting retroactively, but looks like we need to open a separate feature\r\nrequest for the Chrome DevTools team.\r\n\r\nWith these changes, if user attempts to open `hook.js` script, they are\r\ngoing to see this message:\r\n![Screenshot 2024-09-19 at 11 30\r\n59](https://github.com/user-attachments/assets/5850b74c-329f-4fbe-a3dd-33f9ac717ee9)","shortMessageHtmlLink":"feat: display message if user ended up opening hook script (#31000)"}},{"before":"d5e955d3c0c1fa2494de0ab33be9cd90c65aff1e","after":"632f88df11329c9ad66781ddd75b27df6f8effb9","ref":"refs/heads/main","pushedAt":"2024-09-19T14:34:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jackpope","name":"Jack Pope","path":"/jackpope","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8965173?s=80&v=4"},"commit":{"message":"[compiler] Allow ReactElement symbol to be configured when inlining jsx (#30996)\n\nBased on https://github.com/facebook/react/pull/30995 ([rendered\r\ndiff](https://github.com/jackpope/react/compare/inline-jsx-2...jackpope:react:inline-jsx-3?expand=1))\r\n\r\n____\r\n\r\nSome apps still use `react.element` symbols. Not only do we want to test\r\nthere but we also want to be able to upgrade those sites to\r\n`react.transitional.element` without blocking on the compiler (we can\r\nchange the symbol feature flag and compiler config at the same time).\r\n\r\nThe compiler runtime uses `react.transitional.element`, so the snap\r\nfixture will fail if we change the default here. However I confirmed\r\nthat commenting out the fixture entrypoint and running snap with\r\n`react.element` will update the fixture symbols as expected.","shortMessageHtmlLink":"[compiler] Allow ReactElement symbol to be configured when inlining j…"}},{"before":"a86afe8e560f452a9df5ceb4893d9423e5840800","after":"d5e955d3c0c1fa2494de0ab33be9cd90c65aff1e","ref":"refs/heads/main","pushedAt":"2024-09-19T14:07:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jackpope","name":"Jack Pope","path":"/jackpope","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8965173?s=80&v=4"},"commit":{"message":"[compiler] Pass through unmodified props spread when inlining jsx (#30995)\n\nIf JSX receives a props spread without additional attributes (besides\r\n`ref` and `key`), we can pass the spread object as a property directly\r\nto avoid the extra object copy.\r\n\r\n```\r\n\r\n// {props: propsToSpread}\r\n\r\n// {props: {...propsToSpread, a: \"z\"}}\r\n```","shortMessageHtmlLink":"[compiler] Pass through unmodified props spread when inlining jsx (#3…"}},{"before":"e72127a4ec6f91288e9008711215068823100599","after":"a86afe8e560f452a9df5ceb4893d9423e5840800","ref":"refs/heads/main","pushedAt":"2024-09-19T12:55:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"feat: expose installHook with settings argument from react-devtools-core/backend (#30987)\n\nStacked on https://github.com/facebook/react/pull/30986. \r\n\r\nPreviously, we would call `installHook` at a top level of the JavaScript\r\nmodule. Because of this, having `require` statement for\r\n`react-devtools-core` package was enough to initialize the React\r\nDevTools global hook on the `window`.\r\n\r\nNow, the Hook can actually receive an argument - initial user settings\r\nfor console patching. We expose this as a function `initialize`, which\r\ncan be used by third parties (including React Native) to provide the\r\npersisted settings.\r\n\r\nThe README was also updated to reflect the changes.","shortMessageHtmlLink":"feat: expose installHook with settings argument from react-devtools-c…"}},{"before":null,"after":"b59c7b015f989cf463eedcc42bd3755cfe107c67","ref":"refs/heads/dependabot/npm_and_yarn/fixtures/flight-esm/body-parser-1.20.3","pushedAt":"2024-09-18T21:46:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"Bump body-parser from 1.20.2 to 1.20.3 in /fixtures/flight-esm\n\nBumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.2 to 1.20.3.\n- [Release notes](https://github.com/expressjs/body-parser/releases)\n- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)\n- [Commits](https://github.com/expressjs/body-parser/compare/1.20.2...1.20.3)\n\n---\nupdated-dependencies:\n- dependency-name: body-parser\n dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"Bump body-parser from 1.20.2 to 1.20.3 in /fixtures/flight-esm"}},{"before":"09d82835993b16cd5dc8350c03627f9573354a25","after":"e72127a4ec6f91288e9008711215068823100599","ref":"refs/heads/main","pushedAt":"2024-09-18T21:44:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"yungsters","name":"Timothy Yung","path":"/yungsters","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55161?s=80&v=4"},"commit":{"message":"Build `react-dom` in `builds/facebook-fbsource` (#30711)\n\n## Summary\r\n\r\nBuilds `react-dom` for React Native so that it also populates the\r\n`builds/facebook-fbsource` branch.\r\n\r\n**NOTE:** For Meta employees, D61354219 is the internal integration.\r\n\r\n## How did you test this change?\r\n\r\n```\r\n$ yarn build\r\n…\r\n$ ls build/facebook-react-native/react-dom/cjs\r\nReactDOM-dev.js ReactDOM-prod.js ReactDOM-profiling.js\r\n```","shortMessageHtmlLink":"Build react-dom in builds/facebook-fbsource (#30711)"}},{"before":"918b30cd6b81e54bc7aa85c5d51d3711a9f01b2c","after":"1ee1afd2e0ca0569565e06d7a50e15defca3ccb1","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-18T18:47:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"[ez] Rewrite optional chaining and nullish coalescing syntax (#30982)\n\nRewrite `containerInfo?.ownerDocument?.defaultView ?? window` to instead\nuse a ternary.\n\nThis changes the compilation output (see [bundle changes from\n#30951](https://github.com/facebook/react/commit/d65fb06955e9f32e6a40d1c7177d77893dff95b9)).\n```js\n// compilation of containerInfo?.ownerDocument?.defaultView ?? window\nvar $jscomp$optchain$tmpm1756096108$1, $jscomp$nullish$tmp0;\ncontainerInfo =\n null !=\n ($jscomp$nullish$tmp0 =\n null == containerInfo\n ? void 0\n : null ==\n ($jscomp$optchain$tmpm1756096108$1 = containerInfo.ownerDocument)\n ? void 0\n : $jscomp$optchain$tmpm1756096108$1.defaultView)\n ? $jscomp$nullish$tmp0\n : window;\n\n// compilation of ternary expression\ncontainerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n```\n\nThis also reduces the number of no-op bundle syncs for Meta. Note that\nClosure compiler's `jscomp$optchain$tmp` identifiers change when\nwe rebuild (likely due to version number changes). See\n[workflow](https://github.com/facebook/react/actions/runs/10891164281/job/30221518374)\nfor a PR that was synced despite making no changes to the runtime.\n\nDiffTrain build for [09d82835993b16cd5dc8350c03627f9573354a25](https://github.com/facebook/react/commit/09d82835993b16cd5dc8350c03627f9573354a25)","shortMessageHtmlLink":"[ez] Rewrite optional chaining and nullish coalescing syntax (#30982)"}},{"before":"f2c57a31e9953b3889c56f68e129e67afca15d0e","after":"09d82835993b16cd5dc8350c03627f9573354a25","ref":"refs/heads/main","pushedAt":"2024-09-18T18:39:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"[ez] Rewrite optional chaining and nullish coalescing syntax (#30982)\n\nRewrite `containerInfo?.ownerDocument?.defaultView ?? window` to instead\r\nuse a ternary.\r\n\r\nThis changes the compilation output (see [bundle changes from\r\n#30951](https://github.com/facebook/react/commit/d65fb06955e9f32e6a40d1c7177d77893dff95b9)).\r\n```js\r\n// compilation of containerInfo?.ownerDocument?.defaultView ?? window\r\nvar $jscomp$optchain$tmpm1756096108$1, $jscomp$nullish$tmp0;\r\ncontainerInfo =\r\n null !=\r\n ($jscomp$nullish$tmp0 =\r\n null == containerInfo\r\n ? void 0\r\n : null ==\r\n ($jscomp$optchain$tmpm1756096108$1 = containerInfo.ownerDocument)\r\n ? void 0\r\n : $jscomp$optchain$tmpm1756096108$1.defaultView)\r\n ? $jscomp$nullish$tmp0\r\n : window;\r\n\r\n// compilation of ternary expression\r\ncontainerInfo =\r\n null != containerInfo &&\r\n null != containerInfo.ownerDocument &&\r\n null != containerInfo.ownerDocument.defaultView\r\n ? containerInfo.ownerDocument.defaultView\r\n : window;\r\n```\r\n\r\nThis also reduces the number of no-op bundle syncs for Meta. Note that\r\nClosure compiler's `jscomp$optchain$tmp` identifiers change when\r\nwe rebuild (likely due to version number changes). See\r\n[workflow](https://github.com/facebook/react/actions/runs/10891164281/job/30221518374)\r\nfor a PR that was synced despite making no changes to the runtime.","shortMessageHtmlLink":"[ez] Rewrite optional chaining and nullish coalescing syntax (#30982)"}},{"before":"7ae2fa49c425e3943bcc26b1da78635ad0f042c0","after":"918b30cd6b81e54bc7aa85c5d51d3711a9f01b2c","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-18T17:38:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"chore: remove settings manager from react-devtools-core (#30986)\n\nStacked on https://github.com/facebook/react/pull/30636. See [this\ncommit](https://github.com/facebook/react/pull/30986/commits/20cec76c44f77e74b3a85225fecab5a431cd986f).\n\nThis has been only used for React Native and will be replaced by another\napproach (initialization via `installHook` call) in the next PR.\n\nDiffTrain build for [f2c57a31e9953b3889c56f68e129e67afca15d0e](https://github.com/facebook/react/commit/f2c57a31e9953b3889c56f68e129e67afca15d0e)","shortMessageHtmlLink":"chore: remove settings manager from react-devtools-core (#30986)"}},{"before":"7d2f2b9e0d7cd8dcc44d3755f36736c4a66a3b36","after":"7ae2fa49c425e3943bcc26b1da78635ad0f042c0","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-18T17:37:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"feat[react-devtools/extension]: use chrome.storage to persist settings across sessions (#30636)\n\nStacked on https://github.com/facebook/react/pull/30610 and whats under\nit. See [last\ncommit](https://github.com/facebook/react/pull/30636/commits/248ddba18608e1bb5ef14c823085a7ff9d7a54a3).\n\nNow, we are using\n[`chrome.storage`](https://developer.chrome.com/docs/extensions/reference/api/storage)\nto persist settings for the browser extension across different sessions.\nOnce settings are updated from the UI, the `Store` will emit\n`settingsUpdated` event, and we are going to persist them via\n`chrome.storage.local.set` in `main/index.js`.\n\nWhen hook is being injected, we are going to pass a `Promise`, which is\ngoing to be resolved after the settings are read from the storage via\n`chrome.storage.local.get` in `hookSettingsInjector.js`.\n\nDiffTrain build for [f37c7bc6539b4da38f7080b5486eb00bdb2c3237](https://github.com/facebook/react/commit/f37c7bc6539b4da38f7080b5486eb00bdb2c3237)","shortMessageHtmlLink":"feat[react-devtools/extension]: use chrome.storage to persist setting…"}},{"before":"f37c7bc6539b4da38f7080b5486eb00bdb2c3237","after":"f2c57a31e9953b3889c56f68e129e67afca15d0e","ref":"refs/heads/main","pushedAt":"2024-09-18T17:30:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"chore: remove settings manager from react-devtools-core (#30986)\n\nStacked on https://github.com/facebook/react/pull/30636. See [this\r\ncommit](https://github.com/facebook/react/pull/30986/commits/20cec76c44f77e74b3a85225fecab5a431cd986f).\r\n\r\nThis has been only used for React Native and will be replaced by another\r\napproach (initialization via `installHook` call) in the next PR.","shortMessageHtmlLink":"chore: remove settings manager from react-devtools-core (#30986)"}},{"before":"acd2b4fe5dfe7bc25ff1cad9c3e13ad0ad318a34","after":"7d2f2b9e0d7cd8dcc44d3755f36736c4a66a3b36","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-18T17:28:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"refactor[react-devtools]: propagate settings from global hook object to frontend (#30610)\n\nStacked on https://github.com/facebook/react/pull/30597 and whats under\nit. See [this\ncommit](https://github.com/facebook/react/pull/30610/commits/59b4efa72377bf62f5ec8c0e32e56902cf73fbd7).\n\nWith this change, the initial values for console patching settings are\npropagated from hook (which is the source of truth now, because of\nhttps://github.com/facebook/react/pull/30596) to the UI. Instead of\nreading from `localStorage` the frontend is now requesting it from the\nhook. This happens when settings modal is rendered, and wrapped in a\ntransition. Also, this is happening even if settings modal is not opened\nyet, so we have enough time to fetch this data without displaying loader\nor similar UI.\n\nDiffTrain build for [e33acfd67f0003272a9aec7a0725d19a429f2460](https://github.com/facebook/react/commit/e33acfd67f0003272a9aec7a0725d19a429f2460)","shortMessageHtmlLink":"refactor[react-devtools]: propagate settings from global hook object …"}},{"before":"8bc2b9c3f17972c6957430f084e49cb5dfcb93f3","after":"acd2b4fe5dfe7bc25ff1cad9c3e13ad0ad318a34","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-18T17:27:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"chore[react-devtools]: extract some utils into separate modules to unify implementations (#30597)\n\nStacked on https://github.com/facebook/react/pull/30596. See [this\ncommit](https://github.com/facebook/react/pull/30597/commits/4ba5e784bbfdcd69021e2d84c75ffe26fcb698f4).\n\nMoving `formatWithStyles` and `formatConsoleArguments` to its own\nmodules, so that we can finally have a single implementation for these\nand stop inlining them in RDT global hook object.\n\nDiffTrain build for [fce46066571e7bf3ab6ce5bfe5fd3a615e098421](https://github.com/facebook/react/commit/fce46066571e7bf3ab6ce5bfe5fd3a615e098421)","shortMessageHtmlLink":"chore[react-devtools]: extract some utils into separate modules to un…"}},{"before":"e33acfd67f0003272a9aec7a0725d19a429f2460","after":"f37c7bc6539b4da38f7080b5486eb00bdb2c3237","ref":"refs/heads/main","pushedAt":"2024-09-18T17:26:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"feat[react-devtools/extension]: use chrome.storage to persist settings across sessions (#30636)\n\nStacked on https://github.com/facebook/react/pull/30610 and whats under\r\nit. See [last\r\ncommit](https://github.com/facebook/react/pull/30636/commits/248ddba18608e1bb5ef14c823085a7ff9d7a54a3).\r\n\r\nNow, we are using\r\n[`chrome.storage`](https://developer.chrome.com/docs/extensions/reference/api/storage)\r\nto persist settings for the browser extension across different sessions.\r\nOnce settings are updated from the UI, the `Store` will emit\r\n`settingsUpdated` event, and we are going to persist them via\r\n`chrome.storage.local.set` in `main/index.js`.\r\n\r\nWhen hook is being injected, we are going to pass a `Promise`, which is\r\ngoing to be resolved after the settings are read from the storage via\r\n`chrome.storage.local.get` in `hookSettingsInjector.js`.","shortMessageHtmlLink":"feat[react-devtools/extension]: use chrome.storage to persist setting…"}},{"before":"fce46066571e7bf3ab6ce5bfe5fd3a615e098421","after":"e33acfd67f0003272a9aec7a0725d19a429f2460","ref":"refs/heads/main","pushedAt":"2024-09-18T17:19:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"refactor[react-devtools]: propagate settings from global hook object to frontend (#30610)\n\nStacked on https://github.com/facebook/react/pull/30597 and whats under\r\nit. See [this\r\ncommit](https://github.com/facebook/react/pull/30610/commits/59b4efa72377bf62f5ec8c0e32e56902cf73fbd7).\r\n\r\nWith this change, the initial values for console patching settings are\r\npropagated from hook (which is the source of truth now, because of\r\nhttps://github.com/facebook/react/pull/30596) to the UI. Instead of\r\nreading from `localStorage` the frontend is now requesting it from the\r\nhook. This happens when settings modal is rendered, and wrapped in a\r\ntransition. Also, this is happening even if settings modal is not opened\r\nyet, so we have enough time to fetch this data without displaying loader\r\nor similar UI.","shortMessageHtmlLink":"refactor[react-devtools]: propagate settings from global hook object …"}},{"before":"3cac0875dcd60b8db099d8fa671c5ad1f8f0ef23","after":"fce46066571e7bf3ab6ce5bfe5fd3a615e098421","ref":"refs/heads/main","pushedAt":"2024-09-18T17:16:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"chore[react-devtools]: extract some utils into separate modules to unify implementations (#30597)\n\nStacked on https://github.com/facebook/react/pull/30596. See [this\r\ncommit](https://github.com/facebook/react/pull/30597/commits/4ba5e784bbfdcd69021e2d84c75ffe26fcb698f4).\r\n\r\nMoving `formatWithStyles` and `formatConsoleArguments` to its own\r\nmodules, so that we can finally have a single implementation for these\r\nand stop inlining them in RDT global hook object.","shortMessageHtmlLink":"chore[react-devtools]: extract some utils into separate modules to un…"}},{"before":"b521ef8a2aaff61154e59f6d0d3791ee4dbe6395","after":"3cac0875dcd60b8db099d8fa671c5ad1f8f0ef23","ref":"refs/heads/main","pushedAt":"2024-09-18T17:12:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"refactor[react-devtools]: move console patching to global hook (#30596)\n\nStacked on https://github.com/facebook/react/pull/30566 and whats under\r\nit. See [this\r\ncommit](https://github.com/facebook/react/pull/30596/commits/374fd737e4b0b7028afb765838db7c0e22def865).\r\n\r\nIt is mostly copying code from one place to another and updating tests.\r\nWith these changes, for every console method that we patch, there is\r\ngoing to be a single applied patch:\r\n- For `error`, `warn`, and `trace` we are patching when hook is\r\ninstalled. This guarantees that component stacks are going to be\r\nappended even if browser DevTools are not opened. We pay some price for\r\nit, though: if user has browser DevTools closed and if at this point\r\nsome warning or error is emitted (logged), the next time user opens\r\nbrowser DevTools, they are going to see `hook.js` as the source frame.\r\nUnfortunately, ignore listing from source maps is not applied\r\nretroactively, and I don't know if its a bug or just a design\r\nlimitations. Once browser DevTools are opened, source maps will be\r\nloaded and ignore listing will be applied for all emitted logs in the\r\nfuture.\r\n- For `log`, `info`, `group`, `groupCollapsed` we are only patching when\r\nReact notifies React DevTools about running in StrictMode. We unpatch\r\nthe methods right after it.","shortMessageHtmlLink":"refactor[react-devtools]: move console patching to global hook (#30596)"}},{"before":"6f757075f06b81e6bd283659a558fdcba592cfcd","after":"8bc2b9c3f17972c6957430f084e49cb5dfcb93f3","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-18T17:09:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"refactor[react-devtools]: remove browserTheme from ConsolePatchSettings (#30566)\n\nStacked on https://github.com/facebook/react/pull/30564.\n\nWe are no longer using browser theme in our console patching, this was\nremoved in unification of console patching for strict mode, we started\nusing ansi escape symbols and forking based on browser theme is no\nlonger required - https://github.com/facebook/react/pull/29869\n\nThe real browser theme initialization for frontend is happening at the\nother place and is not affected:\n\nhttps://github.com/facebook/react/blob/40be968257a7a10a267210670103f20dd0429ef3/packages/react-devtools-shared/src/devtools/views/Settings/SettingsContext.js#L117-L120\n\nDiffTrain build for [b521ef8a2aaff61154e59f6d0d3791ee4dbe6395](https://github.com/facebook/react/commit/b521ef8a2aaff61154e59f6d0d3791ee4dbe6395)","shortMessageHtmlLink":"refactor[react-devtools]: remove browserTheme from ConsolePatchSettin…"}},{"before":"5e83d9ab3b3f88853591dff43cd70ee4e5c90c5d","after":"b521ef8a2aaff61154e59f6d0d3791ee4dbe6395","ref":"refs/heads/main","pushedAt":"2024-09-18T17:02:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"refactor[react-devtools]: remove browserTheme from ConsolePatchSettings (#30566)\n\nStacked on https://github.com/facebook/react/pull/30564.\r\n\r\nWe are no longer using browser theme in our console patching, this was\r\nremoved in unification of console patching for strict mode, we started\r\nusing ansi escape symbols and forking based on browser theme is no\r\nlonger required - https://github.com/facebook/react/pull/29869\r\n\r\nThe real browser theme initialization for frontend is happening at the\r\nother place and is not affected:\r\n\r\nhttps://github.com/facebook/react/blob/40be968257a7a10a267210670103f20dd0429ef3/packages/react-devtools-shared/src/devtools/views/Settings/SettingsContext.js#L117-L120","shortMessageHtmlLink":"refactor[react-devtools]: remove browserTheme from ConsolePatchSettin…"}},{"before":"c0925f3317683e2fc1ce6980b447e160ba4fd3fc","after":"6f757075f06b81e6bd283659a558fdcba592cfcd","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-18T16:44:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"feat[react-devtools]: add settings to global hook object (#30564)\n\nRight now we are patching console 2 times: when hook is installed\n(before page is loaded) and when backend is connected. Because of this,\neven if user had `appendComponentStack` setting enabled, all emitted\nerror and warning logs are not going to have component stacks appended.\nThey also won't have component stacks appended retroactively when user\nopens browser DevTools (this is when frontend is initialized and\nconnects to backend).\n\nThis behavior adds potential race conditions with LogBox in React\nNative, and also unpredictable to the user, because in order to get\ncomponent stacks logged you have to open browser DevTools, but by the\ntime you do it, error or warning log was already emitted.\n\nTo solve this, we are going to only patch console in the hook object,\nbecause it is guaranteed to load even before React. Settings are going\nto be synchronized with the hook via Bridge, and React DevTools Backend\nHost (React Native or browser extension shell) will be responsible for\npersisting these settings across the session, this is going to be\nimplemented in a separate PR.\n\nDiffTrain build for [5e83d9ab3b3f88853591dff43cd70ee4e5c90c5d](https://github.com/facebook/react/commit/5e83d9ab3b3f88853591dff43cd70ee4e5c90c5d)","shortMessageHtmlLink":"feat[react-devtools]: add settings to global hook object (#30564)"}},{"before":"5dcb009760160c085496e943f76090d98528f971","after":"5e83d9ab3b3f88853591dff43cd70ee4e5c90c5d","ref":"refs/heads/main","pushedAt":"2024-09-18T16:37:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"hoxyq","name":"Ruslan Lesiutin","path":"/hoxyq","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28902667?s=80&v=4"},"commit":{"message":"feat[react-devtools]: add settings to global hook object (#30564)\n\nRight now we are patching console 2 times: when hook is installed\r\n(before page is loaded) and when backend is connected. Because of this,\r\neven if user had `appendComponentStack` setting enabled, all emitted\r\nerror and warning logs are not going to have component stacks appended.\r\nThey also won't have component stacks appended retroactively when user\r\nopens browser DevTools (this is when frontend is initialized and\r\nconnects to backend).\r\n\r\nThis behavior adds potential race conditions with LogBox in React\r\nNative, and also unpredictable to the user, because in order to get\r\ncomponent stacks logged you have to open browser DevTools, but by the\r\ntime you do it, error or warning log was already emitted.\r\n\r\nTo solve this, we are going to only patch console in the hook object,\r\nbecause it is guaranteed to load even before React. Settings are going\r\nto be synchronized with the hook via Bridge, and React DevTools Backend\r\nHost (React Native or browser extension shell) will be responsible for\r\npersisting these settings across the session, this is going to be\r\nimplemented in a separate PR.","shortMessageHtmlLink":"feat[react-devtools]: add settings to global hook object (#30564)"}},{"before":"a5e6d678ba7f43ab6fc3fc77d719bc747fa67fad","after":"c0925f3317683e2fc1ce6980b447e160ba4fd3fc","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-18T15:58:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"[compiler] Add JSX inlining optimization (#30867)\n\nThis adds an `InlineJsxTransform` optimization pass, toggled by the\n`enableInlineJsxTransform` flag. When enabled, JSX will be transformed\ninto React Element object literals, preventing runtime overhead during\nelement creation.\n\nTODO:\n- [ ] Add conditionals to make transform PROD-only\n- [ ] Make the React element symbol configurable so this works with\nruntimes that support `react.element` or `react.transitional.element`\n- [ ] Look into additional optimization to pass props spread through\ndirectly if none of the properties are mutated\n\nDiffTrain build for [5dcb009760160c085496e943f76090d98528f971](https://github.com/facebook/react/commit/5dcb009760160c085496e943f76090d98528f971)","shortMessageHtmlLink":"[compiler] Add JSX inlining optimization (#30867)"}},{"before":"8dfbd16fce9077ab4e5fe85a7b86fa7c97a5ae04","after":"5dcb009760160c085496e943f76090d98528f971","ref":"refs/heads/main","pushedAt":"2024-09-18T15:51:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jackpope","name":"Jack Pope","path":"/jackpope","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8965173?s=80&v=4"},"commit":{"message":"[compiler] Add JSX inlining optimization (#30867)\n\nThis adds an `InlineJsxTransform` optimization pass, toggled by the\r\n`enableInlineJsxTransform` flag. When enabled, JSX will be transformed\r\ninto React Element object literals, preventing runtime overhead during\r\nelement creation.\r\n\r\nTODO:\r\n- [ ] Add conditionals to make transform PROD-only\r\n- [ ] Make the React element symbol configurable so this works with\r\nruntimes that support `react.element` or `react.transitional.element`\r\n- [ ] Look into additional optimization to pass props spread through\r\ndirectly if none of the properties are mutated","shortMessageHtmlLink":"[compiler] Add JSX inlining optimization (#30867)"}},{"before":"7b7ffbd4b5b0723f45f57a2a5e9e6f4e2630e932","after":"a5e6d678ba7f43ab6fc3fc77d719bc747fa67fad","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-17T20:43:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"[Fiber] Color Performance Track Entries by Self Time (#30984)\n\nStacked on #30983.\n\nThis colors each component entry by its self time from light to dark\ndepending on how long it took. If it took longer than a cut off we color\nit red (the error color).\n\n\"Screenshot\n\nDiffTrain build for [8dfbd16fce9077ab4e5fe85a7b86fa7c97a5ae04](https://github.com/facebook/react/commit/8dfbd16fce9077ab4e5fe85a7b86fa7c97a5ae04)","shortMessageHtmlLink":"[Fiber] Color Performance Track Entries by Self Time (#30984)"}},{"before":"e1c20902c39d1dfe2649185622f2f21b526e2be2","after":"8dfbd16fce9077ab4e5fe85a7b86fa7c97a5ae04","ref":"refs/heads/main","pushedAt":"2024-09-17T20:36:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sebmarkbage","name":"Sebastian Markbåge","path":"/sebmarkbage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/63648?s=80&v=4"},"commit":{"message":"[Fiber] Color Performance Track Entries by Self Time (#30984)\n\nStacked on #30983.\r\n\r\nThis colors each component entry by its self time from light to dark\r\ndepending on how long it took. If it took longer than a cut off we color\r\nit red (the error color).\r\n\r\n\"Screenshot","shortMessageHtmlLink":"[Fiber] Color Performance Track Entries by Self Time (#30984)"}},{"before":"2acc36c9536f7a8847db45b6f27cbbfb34a555a3","after":"7b7ffbd4b5b0723f45f57a2a5e9e6f4e2630e932","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-17T20:22:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"[Fiber] Log Component Effects to Performance Track (#30983)\n\nStacked on #30981. Same as #30967 but for effects.\n\nThis logs a tree of components using `performance.measure()`.\n\nIn addition to the previous render phase this logs one tree for each\ncommit phase:\n\n- Mutation Phase\n- Layout Effect\n- Passive Unmounts\n- Passive Mounts\n\nI currently skip the Before Mutation phase since the snapshots are so\nunusual it's not worth creating trees for those.\n\nThe mechanism is that I reuse the timings we track for\n`enableProfilerCommitHooks`. I track first and last effect timestamp\nwithin each component subtree. Then on the way up do we log the entry.\nThis means that we don't include overhead to find our way down to a\ncomponent and that we don't need to add any additional overhead by\nreading timestamps.\n\nTo ensure that the entries get ordered correctly we need to ensure that\nthe start time of each parent is slightly before the inner one.\n\nDiffTrain build for [e1c20902c39d1dfe2649185622f2f21b526e2be2](https://github.com/facebook/react/commit/e1c20902c39d1dfe2649185622f2f21b526e2be2)","shortMessageHtmlLink":"[Fiber] Log Component Effects to Performance Track (#30983)"}},{"before":"15da9174518f18f82869767ebe2a21be2fc8bd90","after":"e1c20902c39d1dfe2649185622f2f21b526e2be2","ref":"refs/heads/main","pushedAt":"2024-09-17T20:14:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sebmarkbage","name":"Sebastian Markbåge","path":"/sebmarkbage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/63648?s=80&v=4"},"commit":{"message":"[Fiber] Log Component Effects to Performance Track (#30983)\n\nStacked on #30981. Same as #30967 but for effects.\r\n\r\nThis logs a tree of components using `performance.measure()`.\r\n\r\nIn addition to the previous render phase this logs one tree for each\r\ncommit phase:\r\n\r\n- Mutation Phase\r\n- Layout Effect\r\n- Passive Unmounts\r\n- Passive Mounts\r\n\r\nI currently skip the Before Mutation phase since the snapshots are so\r\nunusual it's not worth creating trees for those.\r\n\r\nThe mechanism is that I reuse the timings we track for\r\n`enableProfilerCommitHooks`. I track first and last effect timestamp\r\nwithin each component subtree. Then on the way up do we log the entry.\r\nThis means that we don't include overhead to find our way down to a\r\ncomponent and that we don't need to add any additional overhead by\r\nreading timestamps.\r\n\r\nTo ensure that the entries get ordered correctly we need to ensure that\r\nthe start time of each parent is slightly before the inner one.","shortMessageHtmlLink":"[Fiber] Log Component Effects to Performance Track (#30983)"}},{"before":"e70db3db9ba915a4a183d228a84e1f63df4a18bf","after":"2acc36c9536f7a8847db45b6f27cbbfb34a555a3","ref":"refs/heads/builds/facebook-www","pushedAt":"2024-09-17T19:32:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Don't read currentTransition back from internals (#30991)\n\nThis code is weird. It reads back the transition that it just set from\nthe shared internals. It's almost like it expects it to be a getter or\nsomething.\n\nThis avoids that and makes it consistent with what ReactFiberHooks\nalready does.\n\nDiffTrain build for [15da9174518f18f82869767ebe2a21be2fc8bd90](https://github.com/facebook/react/commit/15da9174518f18f82869767ebe2a21be2fc8bd90)","shortMessageHtmlLink":"Don't read currentTransition back from internals (#30991)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOVQxNzo0Mjo0OS4wMDAwMDBazwAAAAS7KMKf","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOVQxNzo0Mjo0OS4wMDAwMDBazwAAAAS7KMKf","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xN1QxOTozMjoxNy4wMDAwMDBazwAAAAS46uFH"}},"title":"Activity · facebook/react"}