[{"sha":"2042572329425f9ebf35ae6287ea5bab72b2c497","node_id":"C_kwDOAJy2KtoAKDIwNDI1NzIzMjk0MjVmOWViZjM1YWU2Mjg3ZWE1YmFiNzJiMmM0OTc","commit":{"author":{"name":"Josh Story","email":"gnoff@storyposted.com","date":"2026-08-08T02:31:46Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-08-08T02:31:46Z"},"message":"Add `onBrowserBailout` Fizz option (#37193)\n\nAdds a new Fizz option, `onBrowserBailout`, for observing intentional\nserver-render bailouts caused by `ReactDOM.browser()` and future APIs\nthat use the same recoverable error mechanism. The callback receives the\noriginal recoverable error and `ErrorInfo`, defaults to a noop, and runs\nonly when Fizz successfully recovers by deferring work to the browser.\n\nRecoverables consumed within Suspense or used to abort recoverable\nboundaries are reported through `onBrowserBailout` without also invoking\n`onError`. A bailout outside Suspense remains fatal and reports only\nthrough `onError`, with the original recoverable preserved as its cause,\nwhile directly throwing the value continues to behave like a normal\nrender error.\n\nPlumbs the option through the streaming, resume, and prerender entry\npoints for Node, browser, Edge, Bun, FB, markup, and noop renderers\nwhile preserving the positional Fizz request API for callers that do not\nexpose the option.\n\nUses an environment-neutral browser-only rendering message for the\nisomorphic `browser()` value and updates the production error mapping.\nTests cover successful browser bailouts, recoverable abort reasons,\nroot-fatal behavior, component stack information, the default noop\nbehavior, and direct throws in development and production.","tree":{"sha":"575e37595dc53bd98006e5f1360ad61e27c434e5","url":"https://api.github.com/repos/react/react/git/trees/575e37595dc53bd98006e5f1360ad61e27c434e5"},"url":"https://api.github.com/repos/react/react/git/commits/2042572329425f9ebf35ae6287ea5bab72b2c497","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqdpUSCRC1aQ7uu5UhlAAAwf0QAByr4Qp/8SfAWxclxmtYRiU+\nhRwuJedgRo80zV19eHSmz3NhoOt3pwe0fP0j1yBN4t8+1+EvHzblds6R+kkcansI\npWxEmRFb7vGy2DCqD/ku8EVIxRNfWgOVnQG0OPjrN9+CEE6xUwcM0QljxzT37B4O\nNZB6Dv6H8kZRRCZJb+TyvEuTTC07i976lDkQTUi/d3qqsGwulNQSFaxLM1la42dS\nYjMJLZ8W2+jfq72B8QNjrPrC+ol1fK3GSI5Lr80sqz7d2cUZ6Quk7QXMiTk0Kws8\nci/HH2Cf5293bc57i7tGx6ZxC0rSvL+aiwfbev8+TT8TNwblVOVIUlAndVGynavV\nfr8iD/LldVp3T39rq0sgpZk9+EVEvqh/dBFoaKBhyh8LXN9z+XMJa/H5TAO+++gB\nwtFm7olQHdmp88xVPyNUQY17lO7SYQA8ox6um2SflCRfFkIG23eFMtARqXODGx+o\nC29g6ZUJDvMIEQHl7Lilghxc+qpb0N3Zx5k9y6oKXSzb3y8k4AcI9lYZa2mwFtfX\naeF0R3gDoGZpVyZ5KtPJny/IPjGGtGybfgVlWWrU8uVXig3EFfHAl2oxu8ITIpY3\nGKeNaeltPDuOMgdtd7qH2ZdigHQZxBNBXlQjByV2c5IlOB3RKvChsiUZhEg8d6GY\nYXmOTPzbcl3mtErGxu1U\n=T1SV\n-----END PGP SIGNATURE-----\n","payload":"tree 575e37595dc53bd98006e5f1360ad61e27c434e5\nparent ec61f187fe39b0aa8ec6b508f2553b2047dc30cc\nauthor Josh Story <gnoff@storyposted.com> 1786156306 -0400\ncommitter GitHub <noreply@github.com> 1786156306 -0700\n\nAdd `onBrowserBailout` Fizz option (#37193)\n\nAdds a new Fizz option, `onBrowserBailout`, for observing intentional\nserver-render bailouts caused by `ReactDOM.browser()` and future APIs\nthat use the same recoverable error mechanism. The callback receives the\noriginal recoverable error and `ErrorInfo`, defaults to a noop, and runs\nonly when Fizz successfully recovers by deferring work to the browser.\n\nRecoverables consumed within Suspense or used to abort recoverable\nboundaries are reported through `onBrowserBailout` without also invoking\n`onError`. A bailout outside Suspense remains fatal and reports only\nthrough `onError`, with the original recoverable preserved as its cause,\nwhile directly throwing the value continues to behave like a normal\nrender error.\n\nPlumbs the option through the streaming, resume, and prerender entry\npoints for Node, browser, Edge, Bun, FB, markup, and noop renderers\nwhile preserving the positional Fizz request API for callers that do not\nexpose the option.\n\nUses an environment-neutral browser-only rendering message for the\nisomorphic `browser()` value and updates the production error mapping.\nTests cover successful browser bailouts, recoverable abort reasons,\nroot-fatal behavior, component stack information, the default noop\nbehavior, and direct throws in development and production.","verified_at":"2026-08-08T02:31:49Z"}},"url":"https://api.github.com/repos/react/react/commits/2042572329425f9ebf35ae6287ea5bab72b2c497","html_url":"https://github.com/react/react/commit/2042572329425f9ebf35ae6287ea5bab72b2c497","comments_url":"https://api.github.com/repos/react/react/commits/2042572329425f9ebf35ae6287ea5bab72b2c497/comments","author":{"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","html_url":"https://github.com/gnoff","followers_url":"https://api.github.com/users/gnoff/followers","following_url":"https://api.github.com/users/gnoff/following{/other_user}","gists_url":"https://api.github.com/users/gnoff/gists{/gist_id}","starred_url":"https://api.github.com/users/gnoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnoff/subscriptions","organizations_url":"https://api.github.com/users/gnoff/orgs","repos_url":"https://api.github.com/users/gnoff/repos","events_url":"https://api.github.com/users/gnoff/events{/privacy}","received_events_url":"https://api.github.com/users/gnoff/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"ec61f187fe39b0aa8ec6b508f2553b2047dc30cc","url":"https://api.github.com/repos/react/react/commits/ec61f187fe39b0aa8ec6b508f2553b2047dc30cc","html_url":"https://github.com/react/react/commit/ec61f187fe39b0aa8ec6b508f2553b2047dc30cc"}]},{"sha":"ec61f187fe39b0aa8ec6b508f2553b2047dc30cc","node_id":"C_kwDOAJy2KtoAKGVjNjFmMTg3ZmUzOWIwYWE4ZWM2YjUwOGYyNTUzYjIwNDdkYzMwY2M","commit":{"author":{"name":"BIKI DAS","email":"72331432+Biki-das@users.noreply.github.com","date":"2026-08-06T12:44:04Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-08-06T12:44:04Z"},"message":"DevTools: Fix nested HOC name extraction in extractHOCNames (#37215)\n\n## Summary\n\nThere was a bug in the helper that unwraps component names like\nForget(Memo(Button)) into a base component name plus its HOC wrappers.\nThe regex was using the g flag, which means exec() remembers its\nposition via lastIndex. Since each iteration replaces the current string\nwith the shorter unwrapped inner string, lastIndex ends up pointing past\nthe end of the new string. The next exec() returns null, so the loop\nstops after unwrapping only the outermost HOC.\n\ncomponent named Forget(Memo(ForgetMemoCounter))\n  before fixes   ✨Memo(ForgetMemoCounter)\n  after  fixes   ✨🧠ForgetMemoCounter\n\ncomponent named Forget(ForwardRef(ForgetForwardRefCounter))\n  before  fixes ✨ForwardRef(ForgetForwardRefCounter)\n  after  fixes  ✨ForgetForwardRefCounter\n\n\n## How did you test this change?\n\nTested the change locally in `devtool` and added tests for the same\n\n**Before**\n<img width=\"1920\" height=\"690\" alt=\"devtools-hoc-BEFORE-buggy\"\nsrc=\"https://github.com/user-attachments/assets/14e7e632-da97-43fb-867b-9da3b9d7cb22\"\n/>\n\n**After**\n<img width=\"1920\" height=\"690\" alt=\"devtools-hoc-AFTER-fixed\"\nsrc=\"https://github.com/user-attachments/assets/4fe91b78-af11-4584-986b-b7aa9a03d0b6\"\n/>\n\n\nNot sure if we need a new fixture can add one if required","tree":{"sha":"18cdfb8422c64639cd257d38f658db6f96d12e7e","url":"https://api.github.com/repos/react/react/git/trees/18cdfb8422c64639cd257d38f658db6f96d12e7e"},"url":"https://api.github.com/repos/react/react/git/commits/ec61f187fe39b0aa8ec6b508f2553b2047dc30cc","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqdIGUCRC1aQ7uu5UhlAAADy0QAIlEOBzL7EjQJs+bAtsqDzQB\na2EZfvIOdkd7ViUOV8D6eOritWviRhKW9zb1RigDrYYv25IafvH5Cl9NhnErM5Ba\n7JMqasG0vGXNzqL0kkAtNDxivEDQ8nEF9egObP+Ew4MUGz9Srs8bdZZYParmuyJQ\nsUH2CukEJSdY5OLna7O50Sy2RLlOr64kUvg+Tc0uuDObFMp0GerWScipvjCg8c5I\n6lRWA4jAyN112EIVXMiVyq+HftNhI46x2BtZUhB2gUSNrP5UW0MCqQlE52qg2e1l\n+xk1LrqRar8z1UYtVyqK7DXyvW087ljtHP3YQyO2uYoH648FmlxF9PtBaZmzAC/T\nT6PmsbZekSCfpcEFZ+X5o68vCEQGyyHpFa4UKSQ5G+TDecvbCkMMz8yDdaZ1io/Z\nSeFlOVJhNDvN6o4bLfhM3m9zrGuGWEJaJY1Uyf9A2Ug4OU9WtGDf2tbwa/CvYQ34\nZocB91udbHXEWC4hxo8Ap7F8QHM4Mi0eIBFuVywSY0Ql9zVWS4JJ/9+MY/A78H/a\n7yH1qe1Ed7EAQEp5ixAWcVQG1LZD5+yEFr5Ic+EbeCCtClA7nWQKtSDA2qlVsZ0l\n5olfP0nZfcjI5ZL8/cEErqtiqDQy2WQAzSOOA25I10V+dvPvNKg2Pxq82LDEJvC2\n0USdwBhD7VeNzPDCZs1p\n=Ax6H\n-----END PGP SIGNATURE-----\n","payload":"tree 18cdfb8422c64639cd257d38f658db6f96d12e7e\nparent 1d4758e0f6aae560024b36ce07ed8a67b3f7d78f\nauthor BIKI DAS <72331432+Biki-das@users.noreply.github.com> 1786020244 +0530\ncommitter GitHub <noreply@github.com> 1786020244 +0100\n\nDevTools: Fix nested HOC name extraction in extractHOCNames (#37215)\n\n## Summary\n\nThere was a bug in the helper that unwraps component names like\nForget(Memo(Button)) into a base component name plus its HOC wrappers.\nThe regex was using the g flag, which means exec() remembers its\nposition via lastIndex. Since each iteration replaces the current string\nwith the shorter unwrapped inner string, lastIndex ends up pointing past\nthe end of the new string. The next exec() returns null, so the loop\nstops after unwrapping only the outermost HOC.\n\ncomponent named Forget(Memo(ForgetMemoCounter))\n  before fixes   ✨Memo(ForgetMemoCounter)\n  after  fixes   ✨🧠ForgetMemoCounter\n\ncomponent named Forget(ForwardRef(ForgetForwardRefCounter))\n  before  fixes ✨ForwardRef(ForgetForwardRefCounter)\n  after  fixes  ✨ForgetForwardRefCounter\n\n\n## How did you test this change?\n\nTested the change locally in `devtool` and added tests for the same\n\n**Before**\n<img width=\"1920\" height=\"690\" alt=\"devtools-hoc-BEFORE-buggy\"\nsrc=\"https://github.com/user-attachments/assets/14e7e632-da97-43fb-867b-9da3b9d7cb22\"\n/>\n\n**After**\n<img width=\"1920\" height=\"690\" alt=\"devtools-hoc-AFTER-fixed\"\nsrc=\"https://github.com/user-attachments/assets/4fe91b78-af11-4584-986b-b7aa9a03d0b6\"\n/>\n\n\nNot sure if we need a new fixture can add one if required","verified_at":"2026-08-06T12:44:08Z"}},"url":"https://api.github.com/repos/react/react/commits/ec61f187fe39b0aa8ec6b508f2553b2047dc30cc","html_url":"https://github.com/react/react/commit/ec61f187fe39b0aa8ec6b508f2553b2047dc30cc","comments_url":"https://api.github.com/repos/react/react/commits/ec61f187fe39b0aa8ec6b508f2553b2047dc30cc/comments","author":{"login":"Biki-das","id":72331432,"node_id":"MDQ6VXNlcjcyMzMxNDMy","avatar_url":"https://avatars.githubusercontent.com/u/72331432?v=4","gravatar_id":"","url":"https://api.github.com/users/Biki-das","html_url":"https://github.com/Biki-das","followers_url":"https://api.github.com/users/Biki-das/followers","following_url":"https://api.github.com/users/Biki-das/following{/other_user}","gists_url":"https://api.github.com/users/Biki-das/gists{/gist_id}","starred_url":"https://api.github.com/users/Biki-das/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Biki-das/subscriptions","organizations_url":"https://api.github.com/users/Biki-das/orgs","repos_url":"https://api.github.com/users/Biki-das/repos","events_url":"https://api.github.com/users/Biki-das/events{/privacy}","received_events_url":"https://api.github.com/users/Biki-das/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"1d4758e0f6aae560024b36ce07ed8a67b3f7d78f","url":"https://api.github.com/repos/react/react/commits/1d4758e0f6aae560024b36ce07ed8a67b3f7d78f","html_url":"https://github.com/react/react/commit/1d4758e0f6aae560024b36ce07ed8a67b3f7d78f"}]},{"sha":"1d4758e0f6aae560024b36ce07ed8a67b3f7d78f","node_id":"C_kwDOAJy2KtoAKDFkNDc1OGUwZjZhYWU1NjAwMjRiMzZjZTA3ZWQ4YTY3YjNmN2Q3OGY","commit":{"author":{"name":"Sebastian \"Sebbie\" Silbermann","email":"sebastian.silbermann@vercel.com","date":"2026-08-05T16:53:19Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-08-05T16:53:19Z"},"message":"[flags] Enable conditional use warning for experimental release channel (#37203)\n\nEnables the flag for OSS builds in experimental to allow\nexperimentation. We're interested in trying this out on Vercel since\nwe're a heavy SWR user.","tree":{"sha":"4c4ad65baae0429bae4fc04da5c2de16fad6281e","url":"https://api.github.com/repos/react/react/git/trees/4c4ad65baae0429bae4fc04da5c2de16fad6281e"},"url":"https://api.github.com/repos/react/react/git/commits/1d4758e0f6aae560024b36ce07ed8a67b3f7d78f","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqc2p/CRC1aQ7uu5UhlAAAFt8QAAAfK0iVDhoZG6RanYohQ/ZP\n5evvFure+adCRwu7Q1UaVw9VXQfwX1FcEuDvQ99nRZf5Xh6SUGV2AWup1gQAWQqJ\nPT2acrHrP0jUNTwM1/8+RjZ/fOGmKeDNUmhJ+wGOVqUVM9ADeshHCXYgR2ASKnUW\nmhvUbnw86km9nA/+MNZYLigtE4/ms0FzmqG7pIkyfKnk55Q+JPb5RV7pA/FatRA1\n5I+Kmx+a11TlWomC2HdlKjGZZUGW/vx74xiSi8kixoKXHv5KesyU5ZuVAWt5bBiP\n3J6hiNjE5R4xVc904vK24QXrHfxBQkJ6lwVRAE/HlxnzIRWNqCjUnopshv2JBIKu\ns6n3t7/I5sN2XzVjOk5hcpUyK/6MMYL6UxPTbqrRStvxwXq2eUVJuo6gW650K9X+\nPzJsz7xZE53YEDvtS0SBp67G7tZwu25LPOiTxJ6xGeOE/Vh9AVzrH45hDzBhynR/\nJkJ0T3k+9h5JmGAgxX7rxh/SHX+MJN9xXSZwtSHWIeL6/7sZ2Goq0pky2rdctOKW\n/xBldCnuCUbpu5KUF5GOKHwgYDsxRvwzmDj1rNN9IPBOZKlqMmMXSjBTKz9NEc67\nn/JR4l9K/hSOze1nw7x7XbiUMbVDYxhUlMcLtj85SFxR+O1k1dTyUo4rLmqiG2hL\nYWIS/Au+X4Kfy1R1zImN\n=OseR\n-----END PGP SIGNATURE-----\n","payload":"tree 4c4ad65baae0429bae4fc04da5c2de16fad6281e\nparent 11eddecd916843f31d88630e4d6f8ab7f52b3a8c\nauthor Sebastian \"Sebbie\" Silbermann <sebastian.silbermann@vercel.com> 1785948799 +0200\ncommitter GitHub <noreply@github.com> 1785948799 +0200\n\n[flags] Enable conditional use warning for experimental release channel (#37203)\n\nEnables the flag for OSS builds in experimental to allow\nexperimentation. We're interested in trying this out on Vercel since\nwe're a heavy SWR user.","verified_at":"2026-08-05T16:53:22Z"}},"url":"https://api.github.com/repos/react/react/commits/1d4758e0f6aae560024b36ce07ed8a67b3f7d78f","html_url":"https://github.com/react/react/commit/1d4758e0f6aae560024b36ce07ed8a67b3f7d78f","comments_url":"https://api.github.com/repos/react/react/commits/1d4758e0f6aae560024b36ce07ed8a67b3f7d78f/comments","author":{"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","html_url":"https://github.com/eps1lon","followers_url":"https://api.github.com/users/eps1lon/followers","following_url":"https://api.github.com/users/eps1lon/following{/other_user}","gists_url":"https://api.github.com/users/eps1lon/gists{/gist_id}","starred_url":"https://api.github.com/users/eps1lon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eps1lon/subscriptions","organizations_url":"https://api.github.com/users/eps1lon/orgs","repos_url":"https://api.github.com/users/eps1lon/repos","events_url":"https://api.github.com/users/eps1lon/events{/privacy}","received_events_url":"https://api.github.com/users/eps1lon/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"11eddecd916843f31d88630e4d6f8ab7f52b3a8c","url":"https://api.github.com/repos/react/react/commits/11eddecd916843f31d88630e4d6f8ab7f52b3a8c","html_url":"https://github.com/react/react/commit/11eddecd916843f31d88630e4d6f8ab7f52b3a8c"}]},{"sha":"11eddecd916843f31d88630e4d6f8ab7f52b3a8c","node_id":"C_kwDOAJy2KtoAKDExZWRkZWNkOTE2ODQzZjMxZDg4NjMwZTRkNmY4YWI3ZjUyYjNhOGM","commit":{"author":{"name":"BIKI DAS","email":"72331432+Biki-das@users.noreply.github.com","date":"2026-08-05T10:00:39Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-08-05T10:00:39Z"},"message":"[Devtools] Added component search to the Profiler's commit view (#36944)\n\n## Summary\n\nAdded the search by component name functionality as requested for\nhttps://github.com/react/react/issues/32995#issuecomment-4786856255\n\n\nAdds a component search to the Profiler's commit view, so you can find a\nspecific component within the currently selected commit (Flamegraph &\nRanked charts). Previously the only search lived in the Components panel\nand covered the live tree, not profiling data.\n\nBehavior is inspired from Chrome DevTools' in-page find:\n\n- Cmd/Ctrl+F opens a collapsible search box floating over the chart (no\nalways-on input).\n- Shows an N | M match count; ↑/↓ buttons and Enter / Shift+Enter step\nthrough matches (with wraparound).\n- Each match is selected via the existing selectFiber, so it highlights,\nzooms, updates the sidebar, syncs to the Components tab, and scrolls\ninto view.\n- Esc or ✕ closes it.\n- Search is scoped to the selected commit only — never the whole trace.\nSwitching commits re-scopes the count.\n\n## How did you test this change?\n\n\n\nhttps://github.com/user-attachments/assets/ab2396e1-f329-4213-b053-9b3d08988c6b","tree":{"sha":"1749c9468b1a6d6453bca7872b109652b72f2759","url":"https://api.github.com/repos/react/react/git/trees/1749c9468b1a6d6453bca7872b109652b72f2759"},"url":"https://api.github.com/repos/react/react/git/commits/11eddecd916843f31d88630e4d6f8ab7f52b3a8c","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqcwnHCRC1aQ7uu5UhlAAA1YYQAI6r321tg/u8e1i8hRccW5Hy\nHB1XiKfRoy5tcdvV1ZcrgOco9fwvBXoeYL6MKpk9ElKdxOs/Cnh0JkaVTV9XfClh\nj7Y0pXEA1boY+EwaeBv25ED4FU2p8e793Qs59d9B67848sxLDJ0fM/Zytxrt57fG\nsKIW+/J3Wre6XfewnRxZI8qGLQvaFYHpJEkZcgETwMUtdG4pnaSIU+iGs4SAIezn\niMyQ3Xbhdg8vEXlGS0J9yU2ViMVSb9Ig7iZrjjC+d2aTbKZUz0Z6mBHa4boEG7Mg\ngVX30eusHM5+/NDMlph4IAiARvGiBKxBU6NLfih++Thx8qccqHcFHNuK8P+Fa/Jt\nAQnnpoJgrAFh9/NGn35U0viAKHHSMiBhtGfN8yX+UtVArQgZuxucyRiHgldJyWTx\nshnlUT4U3hMF/4/zbiKP0VB0jrPtxRuMfoJONGlh3fu46OYDX1GARH1E90NDAB8f\nv74Tk0k46tl8Ja14qlkptDh/4PzVt71/Nz5hORrBAPBuDoKXIRFI32zBKliUS4Ry\nQxqTjTWZCzZDnmiBtkgEEB1OcFmHh5zSMnrrUz+3rEyIQkIWPrU0OYzcwGhKY3PH\nP1EqhtZdSyehJAEiyU5pEuA1HhC76j0QCmEBaCT1/UWLLA7vK/rmUYsZYgQkUai4\nzKAUe1y7hit2W7uAV866\n=LS3t\n-----END PGP SIGNATURE-----\n","payload":"tree 1749c9468b1a6d6453bca7872b109652b72f2759\nparent 7dfc7ccd12d0294debc69b9b9b4e9dd1fd42e08a\nauthor BIKI DAS <72331432+Biki-das@users.noreply.github.com> 1785924039 +0530\ncommitter GitHub <noreply@github.com> 1785924039 +0100\n\n[Devtools] Added component search to the Profiler's commit view (#36944)\n\n## Summary\n\nAdded the search by component name functionality as requested for\nhttps://github.com/react/react/issues/32995#issuecomment-4786856255\n\n\nAdds a component search to the Profiler's commit view, so you can find a\nspecific component within the currently selected commit (Flamegraph &\nRanked charts). Previously the only search lived in the Components panel\nand covered the live tree, not profiling data.\n\nBehavior is inspired from Chrome DevTools' in-page find:\n\n- Cmd/Ctrl+F opens a collapsible search box floating over the chart (no\nalways-on input).\n- Shows an N | M match count; ↑/↓ buttons and Enter / Shift+Enter step\nthrough matches (with wraparound).\n- Each match is selected via the existing selectFiber, so it highlights,\nzooms, updates the sidebar, syncs to the Components tab, and scrolls\ninto view.\n- Esc or ✕ closes it.\n- Search is scoped to the selected commit only — never the whole trace.\nSwitching commits re-scopes the count.\n\n## How did you test this change?\n\n\n\nhttps://github.com/user-attachments/assets/ab2396e1-f329-4213-b053-9b3d08988c6b","verified_at":"2026-08-05T10:00:43Z"}},"url":"https://api.github.com/repos/react/react/commits/11eddecd916843f31d88630e4d6f8ab7f52b3a8c","html_url":"https://github.com/react/react/commit/11eddecd916843f31d88630e4d6f8ab7f52b3a8c","comments_url":"https://api.github.com/repos/react/react/commits/11eddecd916843f31d88630e4d6f8ab7f52b3a8c/comments","author":{"login":"Biki-das","id":72331432,"node_id":"MDQ6VXNlcjcyMzMxNDMy","avatar_url":"https://avatars.githubusercontent.com/u/72331432?v=4","gravatar_id":"","url":"https://api.github.com/users/Biki-das","html_url":"https://github.com/Biki-das","followers_url":"https://api.github.com/users/Biki-das/followers","following_url":"https://api.github.com/users/Biki-das/following{/other_user}","gists_url":"https://api.github.com/users/Biki-das/gists{/gist_id}","starred_url":"https://api.github.com/users/Biki-das/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Biki-das/subscriptions","organizations_url":"https://api.github.com/users/Biki-das/orgs","repos_url":"https://api.github.com/users/Biki-das/repos","events_url":"https://api.github.com/users/Biki-das/events{/privacy}","received_events_url":"https://api.github.com/users/Biki-das/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"7dfc7ccd12d0294debc69b9b9b4e9dd1fd42e08a","url":"https://api.github.com/repos/react/react/commits/7dfc7ccd12d0294debc69b9b9b4e9dd1fd42e08a","html_url":"https://github.com/react/react/commit/7dfc7ccd12d0294debc69b9b9b4e9dd1fd42e08a"}]},{"sha":"7dfc7ccd12d0294debc69b9b9b4e9dd1fd42e08a","node_id":"C_kwDOAJy2KtoAKDdkZmM3Y2NkMTJkMDI5NGRlYmM2OWI5YjliNGU5ZGQxZmQ0MmUwOGE","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-08-03T15:32:51Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-08-03T15:32:51Z"},"message":"[DevTools] Remove the dead Timeline profiler code (#37187)\n\n## Summary\n\nWith the tab gone, everything that fed it is unreachable. This deletes\n`packages/react-devtools-timeline` (74 files) and the backend that\nproduced its data, `backend/profilingHooks.js`, along with\n`SidebarEventInfo`, the two timeline test suites, the `timelineData`\nsnapshot serializer, and the scheduling-profiler fixture.\n\nIt also unwires the plumbing that only existed to carry timeline data:\n`recordTimeline` across the reload-and-profile path (hook →\nsessionStorage → agent → renderer), `timelineData` on\n`ProfilingDataBackend` and the profile export, the `supportsTimeline`\nStore config, the `rootSupportsTimelineProfiling` capability, the\n`DevToolsProfilingHooks` type and the `ReactRenderer` members DevTools\nused to inject it, the 40 `--color-timeline-*` theme variables in both\nthemes plus the orphaned `--color-scroll-caret`, and `hook.js`'s\ninternal-module-range tracking with its `react-devtools-facade` stubs.\n\n`yarn.lock` is regenerated: 52 distinct package-versions and 68\nrequirement specs drop out, with no additions and no version changes to\nanything that remains.\n\n## Deliberate non-changes\n\n- **`PROFILER_EXPORT_VERSION` stays at 5.**\n`prepareProfilingDataFrontendFromExport` compares versions with `!==`,\nso a bump would reject every profile anyone has already saved.\n`timelineData` was an optional key, so dropping it is invisible in both\ndirections.\n- **Profiling flag bit `0b010` is retired, not reused**, and the\nconstant is replaced by a comment saying so. Shipped backends keep\nsetting it, so renumbering `PROFILING_FLAG_PERFORMANCE_TRACKS_SUPPORT`\ninto that slot would make a new frontend misread older backends as\ntracks-capable.\n- **The `displayName` properties on DevTools' cache thenables are\nkept.** They look timeline-only, but `ReactFiberThenable` reads\n`thenable.displayName` to name I/O in async debug info, which feeds the\nPerformance tracks. Only their stale comments are corrected.\n- **`react-reconciler`, `shared/ReactFeatureFlags.js` and\n`scripts/rollup` are untouched**; `enableSchedulingProfiler` is still\nlive for www and native-fb.\n\n## Follow-ups (not in this stack)\n\nThree stale comments still name the removed package:\n`scripts/rollup/wrappers.js:532` and `ReactFiberLane.js:38,125`. Left\nalone to keep this stack purely DevTools-side.\n\n## Test plan\n\n`yarn linc`, `yarn flow dom-node`, and the DevTools suite all pass on\nthis commit in isolation (40/40 suites, 582 tests).","tree":{"sha":"c867580384e6ed8cd5213adfdd7878b750927f7a","url":"https://api.github.com/repos/react/react/git/trees/c867580384e6ed8cd5213adfdd7878b750927f7a"},"url":"https://api.github.com/repos/react/react/git/commits/7dfc7ccd12d0294debc69b9b9b4e9dd1fd42e08a","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqcLSjCRC1aQ7uu5UhlAAAe8MQADJuR7VM/JykwxH4NPHnpt2i\nIqILbn3v7CQ6gxzHHaTBDWAcCygAfcF5YRl0E0mqxhni4Jez9mbQlrN6Uqpghr13\nq0iURwWlblVU+FbnTzcT59lO4CGfbG7rkO3BKfDw0dVSk/XrXQm89Xpf9QeTFpDy\nN4JnxZ9EergKdlM4TvcyvQX9MTXU8t3yfdMqAhh/YtYD7UJVYBspL5ng4Txwnta2\nArbJBZ8OcnhwTOWOW3ZqgpdL0t8Co7Ue+BFK8a5SooyObW7LH1PT0yO14rXrHaPW\n1JnVPUn8jO54rtWozB6QJvLMTTtuKgn71yvCHumzeEn+pe7N7XZz06jaIFz/1784\ntx4JJ9Y375SNPLhQrfUzTJWezIdy2EVpoZxhGCxhvDfw9mkzmdqj7y7LC7ZrWisZ\nFtOjymGUo2CpiAECQ4yZD/MQwRkidxFpKhQGjN1MGcgls5vXfxDlqQVblZufG5od\nThHcz86LGH1yYLuAIiZaBEMUYwVtAUsXgN0aZh7/crnLiwFm0FIlHJK4nw/RV0M5\nkJu9eyS19CW+HVVXt4VVWn46CUrnXPko7DT10piDELNM0Ais8fp2DHhH/q5oy6Sa\nVY5gf13WnMwh7w5++bV2fiKAR10Ga0XqPjjoc1imDfP5js6lfGAT7gY25pNpMYyJ\ndiBpFVJXvbUfndifVaPE\n=b2dw\n-----END PGP SIGNATURE-----\n","payload":"tree c867580384e6ed8cd5213adfdd7878b750927f7a\nparent c7cab6664db1b18c78044dde5317722acbeac1cd\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1785771171 +0100\ncommitter GitHub <noreply@github.com> 1785771171 +0100\n\n[DevTools] Remove the dead Timeline profiler code (#37187)\n\n## Summary\n\nWith the tab gone, everything that fed it is unreachable. This deletes\n`packages/react-devtools-timeline` (74 files) and the backend that\nproduced its data, `backend/profilingHooks.js`, along with\n`SidebarEventInfo`, the two timeline test suites, the `timelineData`\nsnapshot serializer, and the scheduling-profiler fixture.\n\nIt also unwires the plumbing that only existed to carry timeline data:\n`recordTimeline` across the reload-and-profile path (hook →\nsessionStorage → agent → renderer), `timelineData` on\n`ProfilingDataBackend` and the profile export, the `supportsTimeline`\nStore config, the `rootSupportsTimelineProfiling` capability, the\n`DevToolsProfilingHooks` type and the `ReactRenderer` members DevTools\nused to inject it, the 40 `--color-timeline-*` theme variables in both\nthemes plus the orphaned `--color-scroll-caret`, and `hook.js`'s\ninternal-module-range tracking with its `react-devtools-facade` stubs.\n\n`yarn.lock` is regenerated: 52 distinct package-versions and 68\nrequirement specs drop out, with no additions and no version changes to\nanything that remains.\n\n## Deliberate non-changes\n\n- **`PROFILER_EXPORT_VERSION` stays at 5.**\n`prepareProfilingDataFrontendFromExport` compares versions with `!==`,\nso a bump would reject every profile anyone has already saved.\n`timelineData` was an optional key, so dropping it is invisible in both\ndirections.\n- **Profiling flag bit `0b010` is retired, not reused**, and the\nconstant is replaced by a comment saying so. Shipped backends keep\nsetting it, so renumbering `PROFILING_FLAG_PERFORMANCE_TRACKS_SUPPORT`\ninto that slot would make a new frontend misread older backends as\ntracks-capable.\n- **The `displayName` properties on DevTools' cache thenables are\nkept.** They look timeline-only, but `ReactFiberThenable` reads\n`thenable.displayName` to name I/O in async debug info, which feeds the\nPerformance tracks. Only their stale comments are corrected.\n- **`react-reconciler`, `shared/ReactFeatureFlags.js` and\n`scripts/rollup` are untouched**; `enableSchedulingProfiler` is still\nlive for www and native-fb.\n\n## Follow-ups (not in this stack)\n\nThree stale comments still name the removed package:\n`scripts/rollup/wrappers.js:532` and `ReactFiberLane.js:38,125`. Left\nalone to keep this stack purely DevTools-side.\n\n## Test plan\n\n`yarn linc`, `yarn flow dom-node`, and the DevTools suite all pass on\nthis commit in isolation (40/40 suites, 582 tests).","verified_at":"2026-08-03T15:32:52Z"}},"url":"https://api.github.com/repos/react/react/commits/7dfc7ccd12d0294debc69b9b9b4e9dd1fd42e08a","html_url":"https://github.com/react/react/commit/7dfc7ccd12d0294debc69b9b9b4e9dd1fd42e08a","comments_url":"https://api.github.com/repos/react/react/commits/7dfc7ccd12d0294debc69b9b9b4e9dd1fd42e08a/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"c7cab6664db1b18c78044dde5317722acbeac1cd","url":"https://api.github.com/repos/react/react/commits/c7cab6664db1b18c78044dde5317722acbeac1cd","html_url":"https://github.com/react/react/commit/c7cab6664db1b18c78044dde5317722acbeac1cd"}]},{"sha":"c7cab6664db1b18c78044dde5317722acbeac1cd","node_id":"C_kwDOAJy2KtoAKGM3Y2FiNjY2NGRiMWIxOGM3ODA0NGRkZTUzMTc3MjJhY2JlYWMxY2Q","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-08-03T15:32:51Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-08-03T15:32:51Z"},"message":"[DevTools] Remove Timeline profiler tab, suggest React Performance tracks (#37186)\n\nCleaning up the Timeline profiler in the next commit on top of this one.\n\nIf user is debugging React 19.2+, we will show a suggestion to record a\ntrace on Performance panel. Otherwise, we will suggest to upgrade to\nReact 19.2 to unlock Performance tracks.\n\n<img width=\"751\" height=\"832\" alt=\"Screenshot 2026-08-03 at 14 57 43\"\nsrc=\"https://github.com/user-attachments/assets/153e712b-8f7c-4ec5-87f8-b01cf1180aae\"\n/>","tree":{"sha":"fc8f426e54276c7a94e7dd26e6bbfc34003faec9","url":"https://api.github.com/repos/react/react/git/trees/fc8f426e54276c7a94e7dd26e6bbfc34003faec9"},"url":"https://api.github.com/repos/react/react/git/commits/c7cab6664db1b18c78044dde5317722acbeac1cd","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqcLSjCRC1aQ7uu5UhlAAAFsEQAHcFkkL9mPuSA41oF34H0PDq\nEDifm6sFjx/hfQUVYYnJrWzMEwLlxz+jye1YIb+WdYByCeT+SnZUUXfU9VNH7WLu\n/SVr9PSit5UZNA6zM8UQ4SDrM9DMqVYwdRdeBwJhT7QN+Iul0RD13Dt1R+cWW5ZD\n07KqfaHH2kDIeCj0AE4nr0RanF+vWD6HmJ/kh6WrsTv0WZqRgrpTPvL9ORvS8NdT\n9lOUSbKwTLkMnUhYBZjDFbyRglW6bu9MaJf7I1OKkwtbnwo4VJJw046wOmnfp9ka\nn814HjyPU9YMHkHWAUh0MIo4I+zw7V32g2uQQAdQ99aBo2REiPwDZAn+Nt9oaLq5\nZglqB/Z6KN2C1OSixm+oUiJN0peUA986FieQGlxbnotNXY0JuDv1wRn3LIIRUbQ9\n0qMA9l7dSmicO4XpW7docyF2wopNOevRKTRsOsQxAPVBvnCRhDVCfSJZG1XnESSI\nbq9RLs8na4F0HPYkEIgW31nNjphteG4DT5gKcmKBixGW1VQXikp2f8ZZjWe8TJR7\nL6c5zBYHPnFthUIKL559HeTVcWAKvvHQmE8+CtyhNL3t0J3+N0GKuxR/bct8pl/n\nh4N7a3MCllFVNduWV+GLnd8Ju3w5t6oHkE+fa97AkPbQRiaW/fXZSy6FvmPuBYlO\nPaZhJ6P5meMV91h5qGst\n=f6Yo\n-----END PGP SIGNATURE-----\n","payload":"tree fc8f426e54276c7a94e7dd26e6bbfc34003faec9\nparent 0011363766afbea28f1bb76d165cbbbdee67b51f\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1785771171 +0100\ncommitter GitHub <noreply@github.com> 1785771171 +0100\n\n[DevTools] Remove Timeline profiler tab, suggest React Performance tracks (#37186)\n\nCleaning up the Timeline profiler in the next commit on top of this one.\n\nIf user is debugging React 19.2+, we will show a suggestion to record a\ntrace on Performance panel. Otherwise, we will suggest to upgrade to\nReact 19.2 to unlock Performance tracks.\n\n<img width=\"751\" height=\"832\" alt=\"Screenshot 2026-08-03 at 14 57 43\"\nsrc=\"https://github.com/user-attachments/assets/153e712b-8f7c-4ec5-87f8-b01cf1180aae\"\n/>","verified_at":"2026-08-03T15:32:51Z"}},"url":"https://api.github.com/repos/react/react/commits/c7cab6664db1b18c78044dde5317722acbeac1cd","html_url":"https://github.com/react/react/commit/c7cab6664db1b18c78044dde5317722acbeac1cd","comments_url":"https://api.github.com/repos/react/react/commits/c7cab6664db1b18c78044dde5317722acbeac1cd/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"0011363766afbea28f1bb76d165cbbbdee67b51f","url":"https://api.github.com/repos/react/react/commits/0011363766afbea28f1bb76d165cbbbdee67b51f","html_url":"https://github.com/react/react/commit/0011363766afbea28f1bb76d165cbbbdee67b51f"}]},{"sha":"0011363766afbea28f1bb76d165cbbbdee67b51f","node_id":"C_kwDOAJy2KtoAKDAwMTEzNjM3NjZhZmJlYTI4ZjFiYjc2ZDE2NWNiYmJkZWU2N2I1MWY","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-08-03T15:32:50Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-08-03T15:32:50Z"},"message":"[DevTools] Redesign the Profiler empty states around a primary action (#37185)\n\n| Before | After |\n|--------|--------|\n| <img width=\"752\" height=\"835\" alt=\"before\"\nsrc=\"https://github.com/user-attachments/assets/225d131c-a09c-44dd-ae79-0d76a8874d70\"\n/> | <img width=\"751\" height=\"832\" alt=\"after\"\nsrc=\"https://github.com/user-attachments/assets/8547a921-adc4-4abb-a40f-5ae74c1287b2\"\n/> |","tree":{"sha":"af42710ced1c86173abe5f03efbbf171e7fe9d7d","url":"https://api.github.com/repos/react/react/git/trees/af42710ced1c86173abe5f03efbbf171e7fe9d7d"},"url":"https://api.github.com/repos/react/react/git/commits/0011363766afbea28f1bb76d165cbbbdee67b51f","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqcLSiCRC1aQ7uu5UhlAAARfEQAI/p+0HaXXGA+VqcMdHwvBZT\nXJHZG1Z05aTI7l4CkQsxv2tkuTJ4eUUH+hCXaPIVqKGacP7gbOjy4TIdGewoV5Cd\nfFU3pjjCVlmUcbBXuQQyYhVhh0OlU/v8+7YYJ8llCp1RDCbxpOmUxzvFolm6BfEn\nkRXRs91oZp5F6T8463T9zotF3cslO9iygW1cyNotKwn87ly9rUPRFnCx8ubt7suY\nNzN5Px7y0xi5Oa8thNXd7GEidV3wfiWUZ+LPPTaDzn94KOFY7hS19BPLePuXoSBB\nJ18SahJXBEx6xJenZ0CJBLuFpsxICYKFoxnBCpVZ7hBDIBTEshXrl7LOafJmDaN3\nDJyZkW2XsgdPEn/bMb5xMraPZ8MlEzr6J0DOH7XbddmKgEbzP+1Q42CZG19VxDQM\nrWmjbF90jpTfp8ZG4n+Dre5DSSjQ//JRylD7vjo+XR1BhTZ+MkI7A6MfujeFyzfh\n2afGfeiE4biZGRwMyK6X6STN1qOief7U+dH0m7Al2ZEQrOjxKVoVpzigIj1YKDeJ\nNB6ThE91C60FwdAtm9fI6ob5STXDLRdis3AbUGy6SCbyTc1XqoEPqsUgTe+Cmr+B\nyqAEzzIHMp15kpdh2eRtpqK4XElzNwgidig4dDff2nbtQHUB/tTF2tLEHiNGFgFE\nDjDwoXVB3YV8cmdwbIFJ\n=geEy\n-----END PGP SIGNATURE-----\n","payload":"tree af42710ced1c86173abe5f03efbbf171e7fe9d7d\nparent 35a06228b34428a14673d203bc9fcf17bc23fb00\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1785771170 +0100\ncommitter GitHub <noreply@github.com> 1785771170 +0100\n\n[DevTools] Redesign the Profiler empty states around a primary action (#37185)\n\n| Before | After |\n|--------|--------|\n| <img width=\"752\" height=\"835\" alt=\"before\"\nsrc=\"https://github.com/user-attachments/assets/225d131c-a09c-44dd-ae79-0d76a8874d70\"\n/> | <img width=\"751\" height=\"832\" alt=\"after\"\nsrc=\"https://github.com/user-attachments/assets/8547a921-adc4-4abb-a40f-5ae74c1287b2\"\n/> |","verified_at":"2026-08-03T15:32:51Z"}},"url":"https://api.github.com/repos/react/react/commits/0011363766afbea28f1bb76d165cbbbdee67b51f","html_url":"https://github.com/react/react/commit/0011363766afbea28f1bb76d165cbbbdee67b51f","comments_url":"https://api.github.com/repos/react/react/commits/0011363766afbea28f1bb76d165cbbbdee67b51f/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"35a06228b34428a14673d203bc9fcf17bc23fb00","url":"https://api.github.com/repos/react/react/commits/35a06228b34428a14673d203bc9fcf17bc23fb00","html_url":"https://github.com/react/react/commit/35a06228b34428a14673d203bc9fcf17bc23fb00"}]},{"sha":"35a06228b34428a14673d203bc9fcf17bc23fb00","node_id":"C_kwDOAJy2KtoAKDM1YTA2MjI4YjM0NDI4YTE0NjczZDIwM2JjOWZjZjE3YmMyM2ZiMDA","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-08-03T15:32:32Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-08-03T15:32:32Z"},"message":"[DevTools] Deduplicate error reporting (#37137)\n\nPreviously, every instance of ErrorBoundary, which wraps every custom\npanel in extension, was subscribing to errors from the Store. This would\nreport the same error for every mounted panel.\n\nErrorBoundary now only intercepts render-time errors, and Store errors\nare captured and reported in an external subscription at the place where\nStore is created.","tree":{"sha":"96467b08a12eeb121e49f2b1b7e305612cfe5f14","url":"https://api.github.com/repos/react/react/git/trees/96467b08a12eeb121e49f2b1b7e305612cfe5f14"},"url":"https://api.github.com/repos/react/react/git/commits/35a06228b34428a14673d203bc9fcf17bc23fb00","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqcLSQCRC1aQ7uu5UhlAAAiAcQAG4UJtji93HArQAmpo2gL8JF\nHVyMdr/0Lkid+I7PThLVEL8eWgO4ykki9sSLRX1j2Wuyku3xFN8+bZpLFN0PJPF3\nlulGKbdx4DXFR/9JXy8cjtWBifKkKeOlLMW4rb++ocChuBK0f2x5lYCX3ne/A1pQ\nGs7R+yi1HzX4OQ8CcYnq+VQmoPx9kJ6F44hsFnpbSzqblfRgeshVznWgUPh0it1y\nvlu+WBUwfmtrMjXGRGqy5aQWcC6V/HtdSHGajAUsT6zdgVZ7ELW1SaqWh7FJxQQ8\nEQiU1vQGRr2L/goBuhstTH//YzWbKLhgCsxWcNeE9O4AN5TuhGcJPkEv0ox4r6aV\nZcC/C1+m+OESg3cOLrdJ6j8tXVkSi474+c/sxEyOPLwMDs8mcPjdgzVo7m78w8k0\n0kaFaZRodn/PcQ0kniDNJkagftn44B2ga7EQUHXgAV1Kl0wMOXGrOl6qcYWZT6mf\nhyr7/pAf8/ASYmcvBPVyWLqDpFDcbadObLIu3RS4EU2jWJgkKfShbuQfDuqYpqYo\nhoRx3ARBKyNybZ2Kk2f6CCX2hcQSyQb3oMkDKUpjekw30nuVtql9MvI8UU8I4Hx9\nRQco302eZVawhAlYHhleNN2mMNt9B7QAs5PqNfhRUbQS2zSWJFc1Sz+bQsxm6UQH\nahcjS0NMdTmlrcPuF8OC\n=x/V5\n-----END PGP SIGNATURE-----\n","payload":"tree 96467b08a12eeb121e49f2b1b7e305612cfe5f14\nparent 3a717e42438afac81020cdec297dadb5613a4304\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1785771152 +0100\ncommitter GitHub <noreply@github.com> 1785771152 +0100\n\n[DevTools] Deduplicate error reporting (#37137)\n\nPreviously, every instance of ErrorBoundary, which wraps every custom\npanel in extension, was subscribing to errors from the Store. This would\nreport the same error for every mounted panel.\n\nErrorBoundary now only intercepts render-time errors, and Store errors\nare captured and reported in an external subscription at the place where\nStore is created.","verified_at":"2026-08-03T15:32:33Z"}},"url":"https://api.github.com/repos/react/react/commits/35a06228b34428a14673d203bc9fcf17bc23fb00","html_url":"https://github.com/react/react/commit/35a06228b34428a14673d203bc9fcf17bc23fb00","comments_url":"https://api.github.com/repos/react/react/commits/35a06228b34428a14673d203bc9fcf17bc23fb00/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"3a717e42438afac81020cdec297dadb5613a4304","url":"https://api.github.com/repos/react/react/commits/3a717e42438afac81020cdec297dadb5613a4304","html_url":"https://github.com/react/react/commit/3a717e42438afac81020cdec297dadb5613a4304"}]},{"sha":"3a717e42438afac81020cdec297dadb5613a4304","node_id":"C_kwDOAJy2KtoAKDNhNzE3ZTQyNDM4YWZhYzgxMDIwY2RlYzI5N2RhZGI1NjEzYTQzMDQ","commit":{"author":{"name":"Sebastian \"Sebbie\" Silbermann","email":"sebastian.silbermann@vercel.com","date":"2026-07-31T19:20:20Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-31T19:20:20Z"},"message":"[Fiber] Collect Host Singleton children of Fragments (#37063)\n\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>","tree":{"sha":"abe7a94e7ec4a0fcf6cfa4aed8e181d2578c5d8e","url":"https://api.github.com/repos/react/react/git/trees/abe7a94e7ec4a0fcf6cfa4aed8e181d2578c5d8e"},"url":"https://api.github.com/repos/react/react/git/commits/3a717e42438afac81020cdec297dadb5613a4304","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqbPV0CRC1aQ7uu5UhlAAAqj0QAIDP9BKWSlfUQQORUTzcFrtJ\nxRPoSKSthRNJrxg1piLEcIf9qNMos0IhidTyrSxcNlXoPHwDl1kDbvVJJ/+Uu5u2\nzv6nvoYzoG8HsoPPRpS88jcAK8fVECy/wQGiMEz9mcGGZjLwDkxVGLCKPPtgF1zt\nz+jRHeTcZnPkaTdcT87C1Py9YD2qaauQ2w3Y08vcJbDz845yXHmjCTRnYhmAx1yM\njPHDj/TQ8GcjH88ZpmZneHvwY/ZBvsQir7GiN71X8flDpk4eqpYNKv6cwTi6yE2b\nxgprd3KxK+wzkp3v9l+hCCXL8Md2uYlx2HX1xHetW1gBBiRIso74Ui7HxdSotLwN\npdwCiSx0aIOlU59+38JT2Z9qquwZsU7VT5rflqmpDNQiuzP1bWjIutpFvve1vNYF\nMjuPrPQB/kaFl+4c54RMpOK42IR82TY+Zaf43e+EI5qlue/+iheVBanc7FnljryY\npHZkwrV7A1+3qL0aLUAQWcvtpEilCUGd/BKyywspqdkMugQ5Q/L3v8hwOg/I5kM1\neGalWq6CZa1DsefhtcoSE/hyCrUd0p9ETqe5gSVe5kHx8JetNnfbqvEUe49OKVJq\n/1VmpmN4/NXHaNPS4XkZfEQNi8UMtfUWm6DIQgOkCKkKpSak+hOuwHPjl7GMbqX2\nZjYA0cQavEFKg/t9UqdJ\n=Cen8\n-----END PGP SIGNATURE-----\n","payload":"tree abe7a94e7ec4a0fcf6cfa4aed8e181d2578c5d8e\nparent 9b5b4d51e5be870d396a9568701259e5eb053668\nauthor Sebastian \"Sebbie\" Silbermann <sebastian.silbermann@vercel.com> 1785525620 -0400\ncommitter GitHub <noreply@github.com> 1785525620 -0400\n\n[Fiber] Collect Host Singleton children of Fragments (#37063)\n\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>","verified_at":"2026-07-31T19:20:21Z"}},"url":"https://api.github.com/repos/react/react/commits/3a717e42438afac81020cdec297dadb5613a4304","html_url":"https://github.com/react/react/commit/3a717e42438afac81020cdec297dadb5613a4304","comments_url":"https://api.github.com/repos/react/react/commits/3a717e42438afac81020cdec297dadb5613a4304/comments","author":{"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","html_url":"https://github.com/eps1lon","followers_url":"https://api.github.com/users/eps1lon/followers","following_url":"https://api.github.com/users/eps1lon/following{/other_user}","gists_url":"https://api.github.com/users/eps1lon/gists{/gist_id}","starred_url":"https://api.github.com/users/eps1lon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eps1lon/subscriptions","organizations_url":"https://api.github.com/users/eps1lon/orgs","repos_url":"https://api.github.com/users/eps1lon/repos","events_url":"https://api.github.com/users/eps1lon/events{/privacy}","received_events_url":"https://api.github.com/users/eps1lon/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"9b5b4d51e5be870d396a9568701259e5eb053668","url":"https://api.github.com/repos/react/react/commits/9b5b4d51e5be870d396a9568701259e5eb053668","html_url":"https://github.com/react/react/commit/9b5b4d51e5be870d396a9568701259e5eb053668"}]},{"sha":"9b5b4d51e5be870d396a9568701259e5eb053668","node_id":"C_kwDOAJy2KtoAKDliNWI0ZDUxZTViZTg3MGQzOTZhOTU2ODcwMTI1OWU1ZWIwNTM2Njg","commit":{"author":{"name":"Andrew Clark","email":"git@andrewclark.io","date":"2026-07-31T17:22:30Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-31T17:22:30Z"},"message":"[Flight] Add 'pending_weak' to Flight thenable protocol (#37154)\n\nAdded behind a new experimental flag, `enableFlightWeakThenables`.\n\nAdds a new thenable status to the Flight protocol: `'pending_weak'`.\nUnlike a regular pending thenable, a weak thenable does not block the\nstream from closing. If it settles while the stream is still open, its\nvalue is emitted like a normal pending thenable. Otherwise its reference\nis left unfulfilled and on the client it stays forever pending, without\nerroring, even when the connection closes. It's up to the client to\nhandle the unresolved promise in an appropriate way.\n\nThe motivating use case is being able to encode metadata about a Flight\nstream into the response itself. For example, a framework might want to\ntrack whether a page varies by search params. It could represent this in\nthe response as a `Promise<boolean>` that resolves to `true` as soon as\nthe component being rendered in the stream accesses search params. If\nthe thenable never resolves by the time the stream closes, then the\nclient knows that no search params were ever accessed.\n\nIn the future we could add a higher-level API for encoding this kind of\ninformation. For now, we intentionally start with the low-level\nprimitive so frameworks can experiment in userspace without adding\nsignificantly to React's surface area.\n\nInternally, Flight already uses its own private thenable statuses, like\n`'resolved_model'`, and the protocol is designed to treat any status\nbesides `'fulfilled'` and `'rejected'` as equivalent to `'pending'`, so\n`'pending_weak'` slots into the existing machinery. On the wire, a weak\nreference is encoded as `$w<id>`, next to `$@<id>` for regular promises,\nso the client knows its row may intentionally never arrive. On the\nclient, a weak reference behaves like any other pending promise until\nthe response closes; then, instead of erroring, it is left forever\npending.","tree":{"sha":"1040d54f0baaac43bfacb1b2a477441de6633b15","url":"https://api.github.com/repos/react/react/git/trees/1040d54f0baaac43bfacb1b2a477441de6633b15"},"url":"https://api.github.com/repos/react/react/git/commits/9b5b4d51e5be870d396a9568701259e5eb053668","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqbNnWCRC1aQ7uu5UhlAAAEm8QAHPPcyzadjptH9pft/xyM/6a\nyMcrTXm/P9dV6i/z6eqtSM8Msr+kisOwgXDxjOTHhTTzLUjdAcTgSS1/6KZIlLim\nr1JvxjjVbumKxXCzJafRfaj4pncKkLbFBtLqIvdLf93erNS/D30aa/ovsd7G9qRk\niUp2KhYnjcAvv3yJuXnNsSWNu5MUNjc+6f+Ovh4TzKMuCEtZ+ObGOGM6cCZlY8um\nS3EI79lFwp5GmswBuhQJynlDZqOaF1Grbu/udOxRJZLtU/3xYy3z2EWCZhdQWrp0\nLTaAnW3OOx1Q5JXhRz6mnTTpGcr8En2b61ei6ztOuv42byK8WRBZfvzr/L4CDmEk\nlfhrVWA7lTN39tq4AzJmzSAsWcv+iQQqOakc3FTlhz2jhViWfe7xkmt8QiUv1ot8\noCZP+6uoH9TIHwL+c4ipgtXtLPfYHyLqs53rdNUIe9Q64HgCVk98boFgt6aliwnD\npfGsxgK9YXE5G09SPcQkGyMMk/FFaatt4DCcH3EjFGYHtDYqdL7okQf30mJnEAqK\n3hW+cc/gLfts/Vn8KM9d2LRLm7t+UfrKosVgirv5cupuSwgbpkwT48FkGnABjjvL\nxIrdGUX3nFzlzMtFYj4YjeUJkHuBAVebM6zHw/XRrGalonqHcmM6+D/20QCzyu1l\ny9tTr1ZYtDCwhpAflniD\n=HlXi\n-----END PGP SIGNATURE-----\n","payload":"tree 1040d54f0baaac43bfacb1b2a477441de6633b15\nparent cbb046ab92b66dfc4ad1e1ea30d4b8beae6f2c24\nauthor Andrew Clark <git@andrewclark.io> 1785518550 -0400\ncommitter GitHub <noreply@github.com> 1785518550 -0400\n\n[Flight] Add 'pending_weak' to Flight thenable protocol (#37154)\n\nAdded behind a new experimental flag, `enableFlightWeakThenables`.\n\nAdds a new thenable status to the Flight protocol: `'pending_weak'`.\nUnlike a regular pending thenable, a weak thenable does not block the\nstream from closing. If it settles while the stream is still open, its\nvalue is emitted like a normal pending thenable. Otherwise its reference\nis left unfulfilled and on the client it stays forever pending, without\nerroring, even when the connection closes. It's up to the client to\nhandle the unresolved promise in an appropriate way.\n\nThe motivating use case is being able to encode metadata about a Flight\nstream into the response itself. For example, a framework might want to\ntrack whether a page varies by search params. It could represent this in\nthe response as a `Promise<boolean>` that resolves to `true` as soon as\nthe component being rendered in the stream accesses search params. If\nthe thenable never resolves by the time the stream closes, then the\nclient knows that no search params were ever accessed.\n\nIn the future we could add a higher-level API for encoding this kind of\ninformation. For now, we intentionally start with the low-level\nprimitive so frameworks can experiment in userspace without adding\nsignificantly to React's surface area.\n\nInternally, Flight already uses its own private thenable statuses, like\n`'resolved_model'`, and the protocol is designed to treat any status\nbesides `'fulfilled'` and `'rejected'` as equivalent to `'pending'`, so\n`'pending_weak'` slots into the existing machinery. On the wire, a weak\nreference is encoded as `$w<id>`, next to `$@<id>` for regular promises,\nso the client knows its row may intentionally never arrive. On the\nclient, a weak reference behaves like any other pending promise until\nthe response closes; then, instead of erroring, it is left forever\npending.","verified_at":"2026-07-31T17:22:31Z"}},"url":"https://api.github.com/repos/react/react/commits/9b5b4d51e5be870d396a9568701259e5eb053668","html_url":"https://github.com/react/react/commit/9b5b4d51e5be870d396a9568701259e5eb053668","comments_url":"https://api.github.com/repos/react/react/commits/9b5b4d51e5be870d396a9568701259e5eb053668/comments","author":{"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","html_url":"https://github.com/acdlite","followers_url":"https://api.github.com/users/acdlite/followers","following_url":"https://api.github.com/users/acdlite/following{/other_user}","gists_url":"https://api.github.com/users/acdlite/gists{/gist_id}","starred_url":"https://api.github.com/users/acdlite/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acdlite/subscriptions","organizations_url":"https://api.github.com/users/acdlite/orgs","repos_url":"https://api.github.com/users/acdlite/repos","events_url":"https://api.github.com/users/acdlite/events{/privacy}","received_events_url":"https://api.github.com/users/acdlite/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"cbb046ab92b66dfc4ad1e1ea30d4b8beae6f2c24","url":"https://api.github.com/repos/react/react/commits/cbb046ab92b66dfc4ad1e1ea30d4b8beae6f2c24","html_url":"https://github.com/react/react/commit/cbb046ab92b66dfc4ad1e1ea30d4b8beae6f2c24"}]},{"sha":"cbb046ab92b66dfc4ad1e1ea30d4b8beae6f2c24","node_id":"C_kwDOAJy2KtoAKGNiYjA0NmFiOTJiNjZkZmM0YWQxZTFlYTMwZDRiOGJlYWU2ZjJjMjQ","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-07-31T14:24:10Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-31T14:24:10Z"},"message":"[Fiber] Warn for Conditional Use of use() Based on Cache (#37104)\n\nThis is a cherry-pick of https://github.com/react/react/pull/34030, with\na feature flag gating and a test coverage.\n\nThe flag is disabled by default and dynamic for FB builds to understand\nfirst how noisy this warning can be.\n\n---\n\nSee https://github.com/react/react/pull/34030 for more context on the\nchange.","tree":{"sha":"3f5f17ae5b687ee1e3bb9514ee48d60d8ab1c84f","url":"https://api.github.com/repos/react/react/git/trees/3f5f17ae5b687ee1e3bb9514ee48d60d8ab1c84f"},"url":"https://api.github.com/repos/react/react/git/commits/cbb046ab92b66dfc4ad1e1ea30d4b8beae6f2c24","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqbLAKCRC1aQ7uu5UhlAAA5PUQAJ1Y3TxILPXSYHn+cuO2mw1e\nKvVjxPNwGqwzdt4kVCQoBoE77nrsMWwYlCQiXVarJPJcNjuYGic2RVbrZlXEOqpG\nZOuUget08sJSgrcrWZtae2001Ei/E4972mJqnzNaOHgniBI7FHb49p34DSQ+sQYk\nbE4EdawK3Rob6FOHl01OUD9dB6BAxGU9PfbNqIK2Bt/ZkFzwav1R9rcOwa3j/fkx\nsDlMiDd0waVid+64NygOVM7+qSCAapI7mNkQxbt0uGQYCLNa0+dmkvBGo0QZOKOr\nst6W08dp3nbn1cezQ1OmKceTOlZLGr1f3ssr2hxLj9bNr6GL57fOPu69+mEZxiTi\nrQ1RvR726dHFRH7B/XvjhQHhcp2wfVOWlksafi2NswdmcqYyKC4ZegGh/xFWrprA\nVnN+CeCSf5Mty6QyGwEUVMxCDfjKdxwA8CIgYwFkgAmlS94omob/0hEblMZocdtF\ngulS1JMWgrkBriN6FegVvBs+Hgqr0UHPKJJkXVudG8knA/1A9gpv8vpb/aJNUV4v\nK3vulqCcfINz5OhCZi0V+Fc3IrjZUEXGewORq0gA2JH69rjnbp4sC1bY0+XupGLr\nHt4zznTmK/h1MF9O63TFlL/Q8HiVGPyipiDSn6WYRlscnou/5QpTXnNe4fgh6HrX\nkkzZyx6hzaXarQ9aI81W\n=oZz+\n-----END PGP SIGNATURE-----\n","payload":"tree 3f5f17ae5b687ee1e3bb9514ee48d60d8ab1c84f\nparent 0f42eac25e44090837e92304ac08d8d430ceef0a\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1785507850 +0100\ncommitter GitHub <noreply@github.com> 1785507850 +0100\n\n[Fiber] Warn for Conditional Use of use() Based on Cache (#37104)\n\nThis is a cherry-pick of https://github.com/react/react/pull/34030, with\na feature flag gating and a test coverage.\n\nThe flag is disabled by default and dynamic for FB builds to understand\nfirst how noisy this warning can be.\n\n---\n\nSee https://github.com/react/react/pull/34030 for more context on the\nchange.","verified_at":"2026-07-31T14:24:10Z"}},"url":"https://api.github.com/repos/react/react/commits/cbb046ab92b66dfc4ad1e1ea30d4b8beae6f2c24","html_url":"https://github.com/react/react/commit/cbb046ab92b66dfc4ad1e1ea30d4b8beae6f2c24","comments_url":"https://api.github.com/repos/react/react/commits/cbb046ab92b66dfc4ad1e1ea30d4b8beae6f2c24/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"0f42eac25e44090837e92304ac08d8d430ceef0a","url":"https://api.github.com/repos/react/react/commits/0f42eac25e44090837e92304ac08d8d430ceef0a","html_url":"https://github.com/react/react/commit/0f42eac25e44090837e92304ac08d8d430ceef0a"}]},{"sha":"0f42eac25e44090837e92304ac08d8d430ceef0a","node_id":"C_kwDOAJy2KtoAKDBmNDJlYWMyNWU0NDA5MDgzN2U5MjMwNGFjMDhkOGQ0MzBjZWVmMGE","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-07-30T20:17:49Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-30T20:17:49Z"},"message":"[DevTools] Reset extension backend on pagehide (#37155)\n\nI have noticed inconsistency errors being thrown during browser\nnavigations that involve entries from BFCache. The main argument on why\nthis could be affecting React DevTools backend lifecycle is the fact\nthat Chrome kills the port manually, while freezing and preserving the\nJavaScript heap -\nhttps://developer.chrome.com/blog/bfcache-extension-messaging-changes.\n\nBasically, we could end up in a permutation, where port is dead, but\nBackend / Agent are alive. Such setup is not expected by React DevTools.\n\nOn `main`:\n\n\nhttps://github.com/user-attachments/assets/9ca10286-b545-4384-bd6b-33d9a4ddde3d\n\n\nWith these changes:\n\n\nhttps://github.com/user-attachments/assets/c4639c4a-6385-4248-a5c4-a39895d7fff6\n\n\nI couldn't come up with a good test for this yet, but I will try to add\nsomething. I am not convinced yet that emulating `pagehide` / `pageshow`\nwould be sufficient to reproduce browser environment during BFCache\nentries.","tree":{"sha":"1e22c8c972cc2664709c061ac6d72e38b9899d9d","url":"https://api.github.com/repos/react/react/git/trees/1e22c8c972cc2664709c061ac6d72e38b9899d9d"},"url":"https://api.github.com/repos/react/react/git/commits/0f42eac25e44090837e92304ac08d8d430ceef0a","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqa7FtCRC1aQ7uu5UhlAAAv8MQAGNHX3xNf9wSFPi0uc+CCqWE\nWmCSLZjHxT8ePB3udMJ5r0sRj04ZrJmj0ks9lZj0MzaGx4CKs8uG5/MBRq5Gh48O\nfBZLCBXe66Gn9MyPUpEs34GvtZWsqt5Bg+2vd8PB8Z508rJ9Ib7lm5QtojU1Nh+2\nnhFjRum0hR4lhkqCxmswkyXHx2KwTnzmQ1ddtqyGauU0p1oVYEmbHiwRlEKu4dei\n45qASBiI6NLvF8NCyMXmfC27oGQQFiOgkxZn6BDi49z3hS670xb7tPc5634nkdrv\nnYNjV5qyDGRsxBr6++jpRywsi0T0y+KJodEH4u8s0fQ5PgVwP/yI3wNTkq82AelN\nRFrsOt7ZbrK0F9pU5Xq6wOER+8OVqqdl0cODViJBP3UFNp6yMxQUFfjF54Ms8Pxn\nATcMbyPWtNNJIdojMVuEfU9aP0FBgaKyQ17RxOdzCGzGJQMiC4u6Y/8rhf9gfw/f\njFx8FXXBNqAK++f8IzQX1gWyCcMkB0RPL+RZ9saA15WKhXUhva0OtZgfINQbppOZ\nTqFLq2fRMAe1LsZrWLQZPDFmVR7x1ID4QGKhqAZkQpKemUCBiTGzwk3xJGILF7kW\nJLSc2b0DHcRDy/CtASz8acMiIX9jBDK2Qt1jtX0R3T5GDsMUobS0qrn2FjmLPDKG\n9Vr2Omdbgg3jaYcbrN2e\n=0l/z\n-----END PGP SIGNATURE-----\n","payload":"tree 1e22c8c972cc2664709c061ac6d72e38b9899d9d\nparent 7acf00566e35c40817342654438a5757c6c41d0e\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1785442669 +0100\ncommitter GitHub <noreply@github.com> 1785442669 +0100\n\n[DevTools] Reset extension backend on pagehide (#37155)\n\nI have noticed inconsistency errors being thrown during browser\nnavigations that involve entries from BFCache. The main argument on why\nthis could be affecting React DevTools backend lifecycle is the fact\nthat Chrome kills the port manually, while freezing and preserving the\nJavaScript heap -\nhttps://developer.chrome.com/blog/bfcache-extension-messaging-changes.\n\nBasically, we could end up in a permutation, where port is dead, but\nBackend / Agent are alive. Such setup is not expected by React DevTools.\n\nOn `main`:\n\n\nhttps://github.com/user-attachments/assets/9ca10286-b545-4384-bd6b-33d9a4ddde3d\n\n\nWith these changes:\n\n\nhttps://github.com/user-attachments/assets/c4639c4a-6385-4248-a5c4-a39895d7fff6\n\n\nI couldn't come up with a good test for this yet, but I will try to add\nsomething. I am not convinced yet that emulating `pagehide` / `pageshow`\nwould be sufficient to reproduce browser environment during BFCache\nentries.","verified_at":"2026-07-30T20:17:49Z"}},"url":"https://api.github.com/repos/react/react/commits/0f42eac25e44090837e92304ac08d8d430ceef0a","html_url":"https://github.com/react/react/commit/0f42eac25e44090837e92304ac08d8d430ceef0a","comments_url":"https://api.github.com/repos/react/react/commits/0f42eac25e44090837e92304ac08d8d430ceef0a/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"7acf00566e35c40817342654438a5757c6c41d0e","url":"https://api.github.com/repos/react/react/commits/7acf00566e35c40817342654438a5757c6c41d0e","html_url":"https://github.com/react/react/commit/7acf00566e35c40817342654438a5757c6c41d0e"}]},{"sha":"7acf00566e35c40817342654438a5757c6c41d0e","node_id":"C_kwDOAJy2KtoAKDdhY2YwMDU2NmUzNWM0MDgxNzM0MjY1NDQzOGE1NzU3YzZjNDFkMGU","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-07-30T20:17:48Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-30T20:17:48Z"},"message":"[DevTools] Create extension panels before React detection (#37151)\n\nThe main reason why I am doing this is because there is no API in the\nbrowser to \"unmount\" the created panel.\n\nIf you have React DevTools installed, we should always create a panel,\nbut the contents of the panel should be dynamically populated based on\nthe target. If it is not a React app, we will continue showing the stub\nmessage.\n\nPreviously, we wouldn't mount a panel at all, and historically we've\nreceived a few reports of this as a bug.","tree":{"sha":"93a69a6243377ccbd1215f951fadd0e35e8a539d","url":"https://api.github.com/repos/react/react/git/trees/93a69a6243377ccbd1215f951fadd0e35e8a539d"},"url":"https://api.github.com/repos/react/react/git/commits/7acf00566e35c40817342654438a5757c6c41d0e","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqa7FsCRC1aQ7uu5UhlAAApIkQAIZXoSTRueqJuHvi4V1iAabA\nInYaxbh3XKJrBMvl4D97OU3jEKWzl2sNPReHm8ee+pNfRbeldsSj1N6tgwusIrL3\n2ayeqeJiIxS9DsHrKd7qxKjzqRZokMTzyEXIBIcjHdqQ+Cz2bFnyivoeRMKcpQNm\nJm3nwi7diNPukMjKHTzw8ZYbP1fVx1rLT8MAXYkyGNuE1Z7ziFECRpmIUdBEydSZ\nha7QcoVz7mOMlUEwyVL9IyoiNqs2agYRHbz8uUObMqXBOqdkW1baGxzqT5KrQ3eu\npKb+orTtsRJQdEswPTLbloJi3L9pmlcaQPWTWzrknaoBj5OnTl2JgCu6JRzu9INj\ngQsm6ZqAelf8+Q7cNBH/eAHQgTHU2ngaUyoOYMuDnqxCwD0dv7eUeVcpAtatX76g\nth7XbQ7Wyr6nd9JU7q6GWKsAy4YSL2CMNzv+ZZFsgLQMXSKiAgmIvRra2RH9xc1V\nRCzDDA7ivPhMq6YKdRrh/scRBToR3nQZFdbuX+weO+wiuZAgubJiVUMFTxpzcOwz\nR6HFm/wgi6GLsTp2ZR8k0Wyh9iQ20nEO/T0Y+df4iUAQBnLN5bQqGoxeviVDfBQ4\nFPDRog14HCDuTgtgvam9Du8+mZL9so0vXFhjzc1zZfzB8IWKE5ovVz5Cg/9fVbEH\nb3wjoQx+mypnb6UYpPgj\n=h5Cs\n-----END PGP SIGNATURE-----\n","payload":"tree 93a69a6243377ccbd1215f951fadd0e35e8a539d\nparent c56a44903f91d41dce51107f34491daabdcb6a70\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1785442668 +0100\ncommitter GitHub <noreply@github.com> 1785442668 +0100\n\n[DevTools] Create extension panels before React detection (#37151)\n\nThe main reason why I am doing this is because there is no API in the\nbrowser to \"unmount\" the created panel.\n\nIf you have React DevTools installed, we should always create a panel,\nbut the contents of the panel should be dynamically populated based on\nthe target. If it is not a React app, we will continue showing the stub\nmessage.\n\nPreviously, we wouldn't mount a panel at all, and historically we've\nreceived a few reports of this as a bug.","verified_at":"2026-07-30T20:17:49Z"}},"url":"https://api.github.com/repos/react/react/commits/7acf00566e35c40817342654438a5757c6c41d0e","html_url":"https://github.com/react/react/commit/7acf00566e35c40817342654438a5757c6c41d0e","comments_url":"https://api.github.com/repos/react/react/commits/7acf00566e35c40817342654438a5757c6c41d0e/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"c56a44903f91d41dce51107f34491daabdcb6a70","url":"https://api.github.com/repos/react/react/commits/c56a44903f91d41dce51107f34491daabdcb6a70","html_url":"https://github.com/react/react/commit/c56a44903f91d41dce51107f34491daabdcb6a70"}]},{"sha":"c56a44903f91d41dce51107f34491daabdcb6a70","node_id":"C_kwDOAJy2KtoAKGM1NmE0NDkwM2Y5MWQ0MWRjZTUxMTA3ZjM0NDkxZGFhYmRjYjZhNzA","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-07-30T20:17:48Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-30T20:17:48Z"},"message":"[DevTools] Remove FlowFixMe from extension lifecycle (#37152)\n\nI've been triaging some lifecycle races during sessions with BFCache\ninvolved and noticed a few type errors in real world scenario. These\nobjects were not properly typed, fixing in this PR.","tree":{"sha":"a649b1b6d5ce1515c18d17e50dc4355eff21f7f8","url":"https://api.github.com/repos/react/react/git/trees/a649b1b6d5ce1515c18d17e50dc4355eff21f7f8"},"url":"https://api.github.com/repos/react/react/git/commits/c56a44903f91d41dce51107f34491daabdcb6a70","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqa7FsCRC1aQ7uu5UhlAAA2uIQAHiCdP5Zxpr7D6J6DTvfgypt\nHWzjzzabL1aSGUfMzN4LRByBCbS6qS1IefNSch3a+ZjjBuxdm2tQ3P9W1OARNkbZ\nDNcnd2eIwcEQ0suEtpkqytBDnVd7s9YJCyACcTjg279TT3wd2y4/jJSVvDUP+z08\nFtiRKc46x0pZrbWXwDWqRrjRefpHw6MFD7wAixDnOa6Scf2htuK/dDRoGRkfLfrq\najqKeqGIBp06rOIpIyu4ok0jnnwl8S47CigtjC/cD/SFZsBD31Z8ug6UigUe2j73\nJ2xo3i84FL3aD2/J0QeU9oZOs/abeR3YdyQ+1M5ryKusIcb6XzHC8q2Qp89untIS\nrB4seEWR6P7+F7zbWr1cJLd8PIbDoZg5eQvgWdw/k0Uti04X9T8n5CCLRIZdMLgP\nMABiuY4m8rVnlAhguDRGksRJAnClvKBvDgjIIzP6LVi1guC9Tp3L5QQAkzVUqN4j\nb7xou63p6PuNRPFISytG4RxD7JXrSqSiHBlN5+3rsKUIWclDgnVCCvPT2SE1kkr4\nYRyPqvwb0fSW0YQ11g1uYA66ybStLAvNQneSRQGnvwRwczzQm1+skQv6U6g0ObdO\ncsx5v2Ku6kuvngff4p5mEH7BCHoz8s5UYV4hY2EfVLtA6aSiU0BDsD3ccSY6BnJh\nZZXuT2AeJEfqwqU7xbfX\n=9rAw\n-----END PGP SIGNATURE-----\n","payload":"tree a649b1b6d5ce1515c18d17e50dc4355eff21f7f8\nparent 15f7cd693e102c568df501eeeb9684f507e0ec0b\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1785442668 +0100\ncommitter GitHub <noreply@github.com> 1785442668 +0100\n\n[DevTools] Remove FlowFixMe from extension lifecycle (#37152)\n\nI've been triaging some lifecycle races during sessions with BFCache\ninvolved and noticed a few type errors in real world scenario. These\nobjects were not properly typed, fixing in this PR.","verified_at":"2026-07-30T20:17:49Z"}},"url":"https://api.github.com/repos/react/react/commits/c56a44903f91d41dce51107f34491daabdcb6a70","html_url":"https://github.com/react/react/commit/c56a44903f91d41dce51107f34491daabdcb6a70","comments_url":"https://api.github.com/repos/react/react/commits/c56a44903f91d41dce51107f34491daabdcb6a70/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"15f7cd693e102c568df501eeeb9684f507e0ec0b","url":"https://api.github.com/repos/react/react/commits/15f7cd693e102c568df501eeeb9684f507e0ec0b","html_url":"https://github.com/react/react/commit/15f7cd693e102c568df501eeeb9684f507e0ec0b"}]},{"sha":"15f7cd693e102c568df501eeeb9684f507e0ec0b","node_id":"C_kwDOAJy2KtoAKDE1ZjdjZDY5M2UxMDJjNTY4ZGY1MDFlZWViOTY4NGY1MDdlMGVjMGI","commit":{"author":{"name":"Josh Story","email":"gnoff@storyposted.com","date":"2026-07-30T20:15:13Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-30T20:15:13Z"},"message":"Add ReactDOM `browser()` API (#37143)\n\n## Summary\n\nAdds a new API to `react-dom` called `browser()`.\n\n`browser()` returns a \"usable\" that will error during SSR and resolve\nduring rendering in the browser. The purpose is to allow you to express\nthe idea that a component should suspend on the server but not in the\nbrowser. The method is not available inside a `react-server`\nenvironment. This is a client only feature.\n\nThis is a `react-dom` API because the concept of browser doesn't apply\ngenerally to React itself.\n\nThis codifies a pattern that is common in some apps where you error\nduring SSR to prevent rendering some component on the server and you end\nup suppressing the error that is reported in the client to avoid this\nappearing like a problem rather than intended behavior. Unfortunately\nthis is not an option for many because hacking around to prevent errors\nfrom being logged is not practical for many\n\nBy making this a React API we enabled this common pattern in any React\nusing library or application\n\n```tsx\nimport {use, Suspense} from 'react';\nimport {browser} from 'react-dom';\n\nfunction BrowserOnly() {\n  use(browser());\n  return <ClientContent />;\n}\n\nfunction App() {\n  return (\n    <Suspense fallback={<Fallback />}>\n      <BrowserOnly />\n    </Suspense>\n  );\n}\n```\n\nIt is an error to `use(browser())` outside of a Suspense boundary\nbecause you cannot recover from the root. this restriction may be lifted\nin the future but is part of the current limitations of the API\n\n## Implementation\n\nDeferring rendering to a downstream system is modeled in React already\nas recoverable errors. The idea is that in some environments you might\nnot want to report something directly as an error because a later\nenvironment has an opportunity to recover from it without alerting the\nuser to the mishap. This concept also shows up in RSC with halted\nreferences. They can \"recover\" in a later render by eventually resolving\nto some value.\n\nTo model the idea of \"render in the browser\" we are really just modeling\nan intentional recoverable error. However since you don't want to treat\nthis kind of error as exceptional we intentionally suppress logging.\nAdditionally since aborting a server render is semantically equivalent\nto \"erroring\" in every unfinished task we also support aborting with a\n`browser()` so you can describe ending a stream with intentional holes\nthat won't be logged as errors in the browser when hydrating.\n\nOne interesting thing we do with this particular API is it returns an\nobject that is isomorphic and it's the `use` or `abort` function that\nhandles differing behaviors. This means you can create these objects in\nmodule scope and use them even in complex scenarios like server\nrendering inside the browser while React is rendering.\n\nThis implementation is flagged so we can disable the feature quickly if\nwe decide to not ship this in a stable. It is going into React\nunprefixed for now because the semantics are clear and the utility is\nwidely known.\n\n## Alternatives\n\nWe considered `useBrowser()` or a similar hook however this means you\nmust call it unconditionally. There are use cases where props might\ninfluence whether you want to allow something to render during SSR or\nnot. for instance you might have a data fetching library that accepts\ninitial data on the server but if it doesn't receive initial data it\nfalls back to browser only rendering.\n\nAnother consideration is a throwing function like just calling\n`browser()` would throw if called during an SSR render. The main reason\nwe do not think this is a good idea is because you can then call this\narbitrarily deep and the throw can be caught and might be suppressed\naccidentally. By making it a usable it can only be done in hooks or\nhook-like contexts.","tree":{"sha":"d293a3b996df56d6af4d2c9f24f3dd04a35ef70f","url":"https://api.github.com/repos/react/react/git/trees/d293a3b996df56d6af4d2c9f24f3dd04a35ef70f"},"url":"https://api.github.com/repos/react/react/git/commits/15f7cd693e102c568df501eeeb9684f507e0ec0b","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqa7DRCRC1aQ7uu5UhlAAAXyoQAAh+s8FM/8vAOevfkhGuluwy\n+vnIEHqyrn9ElrfEufqTMIGQUsZL/5BkJ760D4rXuJNwvPbKMVqQ7/HxUyZ2AJi2\n0+dVDau9hUKuNWksZ8GLVKn9/pMEeSx0q/kIKJr5r9YM0WBkQ/Ehywv0zkjTGJb4\nFiINIzBIE1OYeWpiLbTPOThnrcNN27YCKoqSZynPoGkNEYIl42C38R2OHfVw2cZn\nHyKpngJ52ZYpuXWHQ3/zdIJsRKNWQgBAeYn4Q0HZ5hryCP7/eiAXT0XX+T6REXme\nVu3Wpf3X42Hkkme85dGZdlqgmAjpOOsX15b96017afp6xOxMVipBO++j8BvPWe/c\nvn3XBk6CatWhIsO0VNj+nujzY0WkOwCShIzxhqHuBxOo1cLTwaXDTU9bDQrfhJEi\nGIzo0NgT7129HIR5PO6Jygr6KFv2Hu02nh4ZHlOr+uHuazr2mfbouNEKzlsgCmCl\ndVZV4tsJFy+UmIrOZS/DfIdc5JchL86faGY9rFoLYPjEvuYBLYEWdfSb8orlB6Be\nCaQRsOShLVCLe56wMQdJi29YGtoyF70o+ZKUKdjd8pwSoDXpv1dJ7JVr8y/xcjI8\n7sh26Scw3rFlRuz6nZSJiaRS4inLVhY42Oxir9DRr68E2ffRQLzhQr3ccvy+v5KQ\nPODzYFqJe3Zi/rewQ+z7\n=lNxF\n-----END PGP SIGNATURE-----\n","payload":"tree d293a3b996df56d6af4d2c9f24f3dd04a35ef70f\nparent 6cb4322d65f4c68daa183df24b5f81668cedab14\nauthor Josh Story <gnoff@storyposted.com> 1785442513 -0400\ncommitter GitHub <noreply@github.com> 1785442513 -0700\n\nAdd ReactDOM `browser()` API (#37143)\n\n## Summary\n\nAdds a new API to `react-dom` called `browser()`.\n\n`browser()` returns a \"usable\" that will error during SSR and resolve\nduring rendering in the browser. The purpose is to allow you to express\nthe idea that a component should suspend on the server but not in the\nbrowser. The method is not available inside a `react-server`\nenvironment. This is a client only feature.\n\nThis is a `react-dom` API because the concept of browser doesn't apply\ngenerally to React itself.\n\nThis codifies a pattern that is common in some apps where you error\nduring SSR to prevent rendering some component on the server and you end\nup suppressing the error that is reported in the client to avoid this\nappearing like a problem rather than intended behavior. Unfortunately\nthis is not an option for many because hacking around to prevent errors\nfrom being logged is not practical for many\n\nBy making this a React API we enabled this common pattern in any React\nusing library or application\n\n```tsx\nimport {use, Suspense} from 'react';\nimport {browser} from 'react-dom';\n\nfunction BrowserOnly() {\n  use(browser());\n  return <ClientContent />;\n}\n\nfunction App() {\n  return (\n    <Suspense fallback={<Fallback />}>\n      <BrowserOnly />\n    </Suspense>\n  );\n}\n```\n\nIt is an error to `use(browser())` outside of a Suspense boundary\nbecause you cannot recover from the root. this restriction may be lifted\nin the future but is part of the current limitations of the API\n\n## Implementation\n\nDeferring rendering to a downstream system is modeled in React already\nas recoverable errors. The idea is that in some environments you might\nnot want to report something directly as an error because a later\nenvironment has an opportunity to recover from it without alerting the\nuser to the mishap. This concept also shows up in RSC with halted\nreferences. They can \"recover\" in a later render by eventually resolving\nto some value.\n\nTo model the idea of \"render in the browser\" we are really just modeling\nan intentional recoverable error. However since you don't want to treat\nthis kind of error as exceptional we intentionally suppress logging.\nAdditionally since aborting a server render is semantically equivalent\nto \"erroring\" in every unfinished task we also support aborting with a\n`browser()` so you can describe ending a stream with intentional holes\nthat won't be logged as errors in the browser when hydrating.\n\nOne interesting thing we do with this particular API is it returns an\nobject that is isomorphic and it's the `use` or `abort` function that\nhandles differing behaviors. This means you can create these objects in\nmodule scope and use them even in complex scenarios like server\nrendering inside the browser while React is rendering.\n\nThis implementation is flagged so we can disable the feature quickly if\nwe decide to not ship this in a stable. It is going into React\nunprefixed for now because the semantics are clear and the utility is\nwidely known.\n\n## Alternatives\n\nWe considered `useBrowser()` or a similar hook however this means you\nmust call it unconditionally. There are use cases where props might\ninfluence whether you want to allow something to render during SSR or\nnot. for instance you might have a data fetching library that accepts\ninitial data on the server but if it doesn't receive initial data it\nfalls back to browser only rendering.\n\nAnother consideration is a throwing function like just calling\n`browser()` would throw if called during an SSR render. The main reason\nwe do not think this is a good idea is because you can then call this\narbitrarily deep and the throw can be caught and might be suppressed\naccidentally. By making it a usable it can only be done in hooks or\nhook-like contexts.","verified_at":"2026-07-30T20:15:14Z"}},"url":"https://api.github.com/repos/react/react/commits/15f7cd693e102c568df501eeeb9684f507e0ec0b","html_url":"https://github.com/react/react/commit/15f7cd693e102c568df501eeeb9684f507e0ec0b","comments_url":"https://api.github.com/repos/react/react/commits/15f7cd693e102c568df501eeeb9684f507e0ec0b/comments","author":{"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","html_url":"https://github.com/gnoff","followers_url":"https://api.github.com/users/gnoff/followers","following_url":"https://api.github.com/users/gnoff/following{/other_user}","gists_url":"https://api.github.com/users/gnoff/gists{/gist_id}","starred_url":"https://api.github.com/users/gnoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnoff/subscriptions","organizations_url":"https://api.github.com/users/gnoff/orgs","repos_url":"https://api.github.com/users/gnoff/repos","events_url":"https://api.github.com/users/gnoff/events{/privacy}","received_events_url":"https://api.github.com/users/gnoff/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"6cb4322d65f4c68daa183df24b5f81668cedab14","url":"https://api.github.com/repos/react/react/commits/6cb4322d65f4c68daa183df24b5f81668cedab14","html_url":"https://github.com/react/react/commit/6cb4322d65f4c68daa183df24b5f81668cedab14"}]},{"sha":"6cb4322d65f4c68daa183df24b5f81668cedab14","node_id":"C_kwDOAJy2KtoAKDZjYjQzMjJkNjVmNGM2OGRhYTE4M2RmMjRiNWY4MTY2OGNlZGFiMTQ","commit":{"author":{"name":"Sebastian \"Sebbie\" Silbermann","email":"sebastian.silbermann@vercel.com","date":"2026-07-29T22:17:33Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-29T22:17:33Z"},"message":"[Flight] Port ReplyServer traversal guards to FlightClient (#37144)\n\nAdditional defense-in-depth in case consumers pass untrusted input into\nFlight Client.\n\nFlight Client generally assumes trusted input.\n\nWe'll reserve these kind of fixes for Flight Client in case the\nuntrusted input leads to catastrophic vulnerabilities e.g. prototype\npollutions that can be used for remote code executions.","tree":{"sha":"8ae3cafdd937c32a15053f2e9d12bf3e68a001d0","url":"https://api.github.com/repos/react/react/git/trees/8ae3cafdd937c32a15053f2e9d12bf3e68a001d0"},"url":"https://api.github.com/repos/react/react/git/commits/6cb4322d65f4c68daa183df24b5f81668cedab14","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqanv9CRC1aQ7uu5UhlAAAFgoQADMJMPEewH2bFQapnJ4r7p9a\nELMcI+xmDuq7dgvU3rnT7cv/GJYD1k0ScIjYtEe8lS7S0BLgzrFwqWKcqVbw0alL\nlKicnvScYor5DlWki1bKywtN/lktLfZN3OdfUbMTTpzqgiYbF5A5IW7aLP2wQDXk\nSdmBIjNZh5/GRtCjNjZF1pwNeyi+blRVMTzYhp9VxEDuLV4iRdxa1DEpBXEnrINm\nENtgHIIsrMBCxbCy/IQexyboMjmnuhN/LSJ+vX36wQQXy4fJN15BkcxhE7n1P9gL\nOEC13Ot398POyViHolmj+O2zhBdNqZfyTA93V9I/BPNMOosDPtdMSSg52Sx/j3Dp\nfPyW9Q/Hg22R9MD/I7tqeUuTSGpk1J75kyFHa78QCJIgu0BhdtTHVs6/R2Vo088I\nHHpJDrc6jV2FsHlxswRPCBSxRtwiXiKjj/xgwBQso3T6RtZZUnec1Nb3VPWe7n8U\nRtVb8Z7oJze2SQzfxqkVq7fIcQPNAKI2sk8zI2WfhhWmjisMatgxxgeRQAlc7pYs\nGx8IYGvoE5utAaOFcHaWDneGn618V4eK5X0T6td47KQwFa7jzsAcZSJCOMr41Rad\nx6vN1KfNDe40kXIQO6Mzj1HhzsQQSK60efFwZVtmmzTuz+0usnBvLHXadTx9GtZP\nzbG1kkmjni5K2wZfg1h7\n=ZLt1\n-----END PGP SIGNATURE-----\n","payload":"tree 8ae3cafdd937c32a15053f2e9d12bf3e68a001d0\nparent 1724e9ce0aa1db99bcbe2633304b6a0fee2e4e1e\nauthor Sebastian \"Sebbie\" Silbermann <sebastian.silbermann@vercel.com> 1785363453 -0400\ncommitter GitHub <noreply@github.com> 1785363453 -0400\n\n[Flight] Port ReplyServer traversal guards to FlightClient (#37144)\n\nAdditional defense-in-depth in case consumers pass untrusted input into\nFlight Client.\n\nFlight Client generally assumes trusted input.\n\nWe'll reserve these kind of fixes for Flight Client in case the\nuntrusted input leads to catastrophic vulnerabilities e.g. prototype\npollutions that can be used for remote code executions.","verified_at":"2026-07-29T22:17:34Z"}},"url":"https://api.github.com/repos/react/react/commits/6cb4322d65f4c68daa183df24b5f81668cedab14","html_url":"https://github.com/react/react/commit/6cb4322d65f4c68daa183df24b5f81668cedab14","comments_url":"https://api.github.com/repos/react/react/commits/6cb4322d65f4c68daa183df24b5f81668cedab14/comments","author":{"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","html_url":"https://github.com/eps1lon","followers_url":"https://api.github.com/users/eps1lon/followers","following_url":"https://api.github.com/users/eps1lon/following{/other_user}","gists_url":"https://api.github.com/users/eps1lon/gists{/gist_id}","starred_url":"https://api.github.com/users/eps1lon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eps1lon/subscriptions","organizations_url":"https://api.github.com/users/eps1lon/orgs","repos_url":"https://api.github.com/users/eps1lon/repos","events_url":"https://api.github.com/users/eps1lon/events{/privacy}","received_events_url":"https://api.github.com/users/eps1lon/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"1724e9ce0aa1db99bcbe2633304b6a0fee2e4e1e","url":"https://api.github.com/repos/react/react/commits/1724e9ce0aa1db99bcbe2633304b6a0fee2e4e1e","html_url":"https://github.com/react/react/commit/1724e9ce0aa1db99bcbe2633304b6a0fee2e4e1e"}]},{"sha":"1724e9ce0aa1db99bcbe2633304b6a0fee2e4e1e","node_id":"C_kwDOAJy2KtoAKDE3MjRlOWNlMGFhMWRiOTliY2JlMjYzMzMwNGI2YTBmZWUyZTRlMWU","commit":{"author":{"name":"Minh Vu","email":"vuhoangminh97@gmail.com","date":"2026-07-29T16:21:37Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-29T16:21:37Z"},"message":"[DOM] Blur focused descendants in Fragment refs (#37125)\n\n## Summary\n\n`FragmentInstance.blur()` only matched the active element against the\nfirst level of host children. If the focused element was nested inside\none of those children, `focus()` could reach it but `blur()` would leave\nit focused.\n\nThis treats an active element contained by a Fragment host child as part\nof the Fragment and blurs the active element itself. It also adds\nregression coverage for a nested input.\n\nFixes #37124.\n\n## How did you test this change?\n\n- `yarn test ReactDOMFragmentRefs-test --runInBand` (65 tests passed)\n- `yarn test --prod ReactDOMFragmentRefs-test --runInBand` (65 tests\npassed)\n- `yarn prettier`\n- `yarn linc`\n- `yarn flow dom-node`","tree":{"sha":"3612f7a2fd3c5d35143986d064ac07a1dceb42a0","url":"https://api.github.com/repos/react/react/git/trees/3612f7a2fd3c5d35143986d064ac07a1dceb42a0"},"url":"https://api.github.com/repos/react/react/git/commits/1724e9ce0aa1db99bcbe2633304b6a0fee2e4e1e","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqaiiRCRC1aQ7uu5UhlAAADk4QAIFMYDIJncjLRf2uE8FZ36oz\nPO/xvTLRNqnV+07IrPg+DRf6xeq/+duKd5vBqNh6YCuppqxMr8g8MsFAMyGonNrC\nFdN3j/5c567aJDKeoOGpesiVHCJtUKbTl+OPwJ4bXvI8bz8MBJ3wZk+zodMd/asf\ny3wvuvaIuMUQmAt8j6pR7sKjrzPArH1LMFC/hudLLmYa2HoNJ6Q1kzeMdw8JV/Xs\ncS7J0FZWXvI9Jvbau7R56zTz+EBUt13gNgG4N3BvS/+jzXsTtZMHSNOocLPhaZ+j\nVOrqhAmFbnYSSQF8Ymh/zSGqlzEfCBzwiAsR3am3TwRdz4llx1RGe0ITPoX1qACj\nSUc8BVpC58iFI4d7J+aOuHLEoNZlauBaEaCYK0DFhphyPt61hZLic/Vjixl5N5Y/\n3G3KVTYWJVoARUxuGkFV0o/4DGqL8ZKAOACrLqcxfFnZaNdR26OVeSrbX70jL2ZN\nLPkduldicerbX4L2UzyeE2IACDk/1ToL44paTxnRmwqw1wV9rFZXEHxbRfoKbsBy\na5YgjYHQm6x3I/Lcqk2fXMJ5J904U3qkjEUDaUEHsnoJ0bMuWo7PMnvFMg3LyIcJ\n44to45SPrAuKiCJosvR+H3o9bcZ4qo2OQh9vkBqxdX3UM16vnJt0pY2w91QXmnKy\n4DtCuWg6NFCh6XFY5fIc\n=q9lj\n-----END PGP SIGNATURE-----\n","payload":"tree 3612f7a2fd3c5d35143986d064ac07a1dceb42a0\nparent 9a81195bed0ded96e10a13f753dce05bee8cc97b\nauthor Minh Vu <vuhoangminh97@gmail.com> 1785342097 +0200\ncommitter GitHub <noreply@github.com> 1785342097 -0400\n\n[DOM] Blur focused descendants in Fragment refs (#37125)\n\n## Summary\n\n`FragmentInstance.blur()` only matched the active element against the\nfirst level of host children. If the focused element was nested inside\none of those children, `focus()` could reach it but `blur()` would leave\nit focused.\n\nThis treats an active element contained by a Fragment host child as part\nof the Fragment and blurs the active element itself. It also adds\nregression coverage for a nested input.\n\nFixes #37124.\n\n## How did you test this change?\n\n- `yarn test ReactDOMFragmentRefs-test --runInBand` (65 tests passed)\n- `yarn test --prod ReactDOMFragmentRefs-test --runInBand` (65 tests\npassed)\n- `yarn prettier`\n- `yarn linc`\n- `yarn flow dom-node`","verified_at":"2026-07-29T16:21:37Z"}},"url":"https://api.github.com/repos/react/react/commits/1724e9ce0aa1db99bcbe2633304b6a0fee2e4e1e","html_url":"https://github.com/react/react/commit/1724e9ce0aa1db99bcbe2633304b6a0fee2e4e1e","comments_url":"https://api.github.com/repos/react/react/commits/1724e9ce0aa1db99bcbe2633304b6a0fee2e4e1e/comments","author":{"login":"fallintoplace","id":38443830,"node_id":"MDQ6VXNlcjM4NDQzODMw","avatar_url":"https://avatars.githubusercontent.com/u/38443830?v=4","gravatar_id":"","url":"https://api.github.com/users/fallintoplace","html_url":"https://github.com/fallintoplace","followers_url":"https://api.github.com/users/fallintoplace/followers","following_url":"https://api.github.com/users/fallintoplace/following{/other_user}","gists_url":"https://api.github.com/users/fallintoplace/gists{/gist_id}","starred_url":"https://api.github.com/users/fallintoplace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fallintoplace/subscriptions","organizations_url":"https://api.github.com/users/fallintoplace/orgs","repos_url":"https://api.github.com/users/fallintoplace/repos","events_url":"https://api.github.com/users/fallintoplace/events{/privacy}","received_events_url":"https://api.github.com/users/fallintoplace/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"9a81195bed0ded96e10a13f753dce05bee8cc97b","url":"https://api.github.com/repos/react/react/commits/9a81195bed0ded96e10a13f753dce05bee8cc97b","html_url":"https://github.com/react/react/commit/9a81195bed0ded96e10a13f753dce05bee8cc97b"}]},{"sha":"9a81195bed0ded96e10a13f753dce05bee8cc97b","node_id":"C_kwDOAJy2KtoAKDlhODExOTViZWQwZGVkOTZlMTBhMTNmNzUzZGNlMDViZWU4Y2M5N2I","commit":{"author":{"name":"dan","email":"dan.abramov@me.com","date":"2026-07-28T22:18:44Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-28T22:18:44Z"},"message":"[Fiber] Fix hang when updating a dehydrated boundary inside a hidden tree (#37135)\n\nCloses https://github.com/vercel/next.js/issues/95848.\n\nFixes a hang: if an update changes what's inside a server-rendered\nSuspense or Activity boundary before that boundary has hydrated, and the\naffected content is hidden, React stops committing. The new content\nrenders once its data arrives, but the render is discarded every time,\nnothing is scheduled, and nothing ever pings — the update never lands\nand the app appears frozen.\n\n\"Hidden\" means either of two things, and there's a test for each:\n\n- the update itself hides a dehydrated `<Activity>` (while mounting new\nsibling content that suspends), or\n- the dehydrated boundary is inside the primary tree of a parent\nboundary that just suspended and is showing its fallback.\n\nThis is how we found it in practice.\n\nWith https://github.com/vercel/next.js/pull/95682, pressing Back before\nhydration finishes made the router replay the missed navigation from its\nfirst effect. This worked fine outside of Cache Components, but in Cache\nComponents mode (which turns on Activity), the old page's Activity\n(still dehydrated) gets hidden, the new page's content suspends inside\nthe layout's Suspense boundary, and after the data arrives the page\nstays blank forever.\n\nAs a result, https://github.com/vercel/next.js/pull/95682 got reverted.\nIf we fix this, we can unrevert it.\n\n## Why it happens\n\nWhen an update changes a dehydrated boundary, we schedule a render at a\nhigher priority to hydrate it before the update applies. If we already\ntried that, we give up and client render, but mark the render as\nsuspended so it doesn't commit while the hydration attempt might still\nfinish first.\n\nBoth steps assume the attempt can actually run. Inside a hidden tree it\ncan't, because updates in hidden trees are deferred until the tree is\nrevealed. The scheduled attempt never runs but still consumes the retry\nlane, which sends every later render into the give-up path — and the\ngive-up path keeps discarding finished renders, waiting for a hydration\nattempt that isn't in flight. Once the last piece of data resolves\nthere's nothing left to ping us awake. The root ends up with\n`pendingLanes === suspendedLanes`, `pingedLanes` empty, and no callback\nscheduled.\n\nThe update doesn't need to be sync or discrete: a plain setState from an\neffect is enough. Wrapping the same update in `startTransition` avoids\nit, which is probably why this went unnoticed.\n\n## The fix\n\nIf the boundary is inside a hidden tree (`isCurrentTreeHidden()`), skip\nthe hydration attempt and client render right away. There's nothing\nvisible to protect: replacing hidden server HTML doesn't show, and the\nreplacement children render when the tree is revealed.\n\nOne behavior note: this discards the hidden server HTML instead of\npreserving it for later hydration on reveal, same as the existing\ngive-up path. Keeping it dehydrated and hydrating at reveal would be a\nnicer follow-up, but needs commit-phase support that doesn't exist\ntoday.\n\n## How did you test this change?\n\nThe first commit adds failing tests for both boundary types; the fix\nmakes them pass. `startTransition` variants of the same scenarios are\nincluded as passing controls. Ran the Activity, partial/selective\nhydration, Fizz, Suspense, and Offscreen suites in both release\nchannels.","tree":{"sha":"f0e96ba61aeda92cecf1912e927a7c8f312ad615","url":"https://api.github.com/repos/react/react/git/trees/f0e96ba61aeda92cecf1912e927a7c8f312ad615"},"url":"https://api.github.com/repos/react/react/git/commits/9a81195bed0ded96e10a13f753dce05bee8cc97b","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqaSrECRC1aQ7uu5UhlAAAb6cQABaGPz1kXRFckUUM1aYWi6Go\n+vrsaH+ipMpKBIHGVttIUItr1caFtKPipYlFxYpwb9YkAfqWWyXQ5qvB70qu5+NO\nPCBs7lNyEfEaatS8spNLLZbVTU47nqkhke2aPirSFx8rJZIcSohdQ6cvw91cKM1p\nt558H6Yed3Bs3Acp/A7x1Wh9ssY0NHvwHb/CBzBFlntBOT13O3tdVamACsBBi/Xt\nQujhXxh+7134VVNcm9nW3WDJ6ggIwEvqbnu21ol8HFbBWYmd8TPFwKEIv2QwVycg\n5s6JdDNfDmE/pY/cYWStchoxD1WNCesq2gCxCHrXfiYzUkib4o8hPImwVg1Xh6q+\nMbCk20W+Wrgxw0oPo5kJHoUVyU3e91Wi4loQzsSnxB4YOOaXqFVNcIBAJEVJD0fb\nbjjRvG+ffNExkNaSTSKLfOzGV3us+qH2acL6TzKCkjWst8HBzI04rcWT1CTf9iNL\nvrPVBA07F9z6TEsisMagUwCtHWGNDTkH/IsoH3PTq8uXbxbDiiK71C/CjJsIdlv4\n6LoCD3DEI7OmjAGdJKFYw8uWuQkCEWT/UR8MTJcKG9Mun10ysSBbbZzVA2XMOyrJ\nW+/Cl6pkyFeQuI43YsiEBrQypT+LWfbFRDcVsY10nchq/O79mjb2Jop2yZGpiq1O\npXUPaOR1Jf240xYvFjMk\n=AolX\n-----END PGP SIGNATURE-----\n","payload":"tree f0e96ba61aeda92cecf1912e927a7c8f312ad615\nparent 96fcba90138e9f1a73ee1cc4f79a653ec12fc3a9\nauthor dan <dan.abramov@me.com> 1785277124 +0100\ncommitter GitHub <noreply@github.com> 1785277124 +0100\n\n[Fiber] Fix hang when updating a dehydrated boundary inside a hidden tree (#37135)\n\nCloses https://github.com/vercel/next.js/issues/95848.\n\nFixes a hang: if an update changes what's inside a server-rendered\nSuspense or Activity boundary before that boundary has hydrated, and the\naffected content is hidden, React stops committing. The new content\nrenders once its data arrives, but the render is discarded every time,\nnothing is scheduled, and nothing ever pings — the update never lands\nand the app appears frozen.\n\n\"Hidden\" means either of two things, and there's a test for each:\n\n- the update itself hides a dehydrated `<Activity>` (while mounting new\nsibling content that suspends), or\n- the dehydrated boundary is inside the primary tree of a parent\nboundary that just suspended and is showing its fallback.\n\nThis is how we found it in practice.\n\nWith https://github.com/vercel/next.js/pull/95682, pressing Back before\nhydration finishes made the router replay the missed navigation from its\nfirst effect. This worked fine outside of Cache Components, but in Cache\nComponents mode (which turns on Activity), the old page's Activity\n(still dehydrated) gets hidden, the new page's content suspends inside\nthe layout's Suspense boundary, and after the data arrives the page\nstays blank forever.\n\nAs a result, https://github.com/vercel/next.js/pull/95682 got reverted.\nIf we fix this, we can unrevert it.\n\n## Why it happens\n\nWhen an update changes a dehydrated boundary, we schedule a render at a\nhigher priority to hydrate it before the update applies. If we already\ntried that, we give up and client render, but mark the render as\nsuspended so it doesn't commit while the hydration attempt might still\nfinish first.\n\nBoth steps assume the attempt can actually run. Inside a hidden tree it\ncan't, because updates in hidden trees are deferred until the tree is\nrevealed. The scheduled attempt never runs but still consumes the retry\nlane, which sends every later render into the give-up path — and the\ngive-up path keeps discarding finished renders, waiting for a hydration\nattempt that isn't in flight. Once the last piece of data resolves\nthere's nothing left to ping us awake. The root ends up with\n`pendingLanes === suspendedLanes`, `pingedLanes` empty, and no callback\nscheduled.\n\nThe update doesn't need to be sync or discrete: a plain setState from an\neffect is enough. Wrapping the same update in `startTransition` avoids\nit, which is probably why this went unnoticed.\n\n## The fix\n\nIf the boundary is inside a hidden tree (`isCurrentTreeHidden()`), skip\nthe hydration attempt and client render right away. There's nothing\nvisible to protect: replacing hidden server HTML doesn't show, and the\nreplacement children render when the tree is revealed.\n\nOne behavior note: this discards the hidden server HTML instead of\npreserving it for later hydration on reveal, same as the existing\ngive-up path. Keeping it dehydrated and hydrating at reveal would be a\nnicer follow-up, but needs commit-phase support that doesn't exist\ntoday.\n\n## How did you test this change?\n\nThe first commit adds failing tests for both boundary types; the fix\nmakes them pass. `startTransition` variants of the same scenarios are\nincluded as passing controls. Ran the Activity, partial/selective\nhydration, Fizz, Suspense, and Offscreen suites in both release\nchannels.","verified_at":"2026-07-28T22:18:45Z"}},"url":"https://api.github.com/repos/react/react/commits/9a81195bed0ded96e10a13f753dce05bee8cc97b","html_url":"https://github.com/react/react/commit/9a81195bed0ded96e10a13f753dce05bee8cc97b","comments_url":"https://api.github.com/repos/react/react/commits/9a81195bed0ded96e10a13f753dce05bee8cc97b/comments","author":{"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","html_url":"https://github.com/gaearon","followers_url":"https://api.github.com/users/gaearon/followers","following_url":"https://api.github.com/users/gaearon/following{/other_user}","gists_url":"https://api.github.com/users/gaearon/gists{/gist_id}","starred_url":"https://api.github.com/users/gaearon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gaearon/subscriptions","organizations_url":"https://api.github.com/users/gaearon/orgs","repos_url":"https://api.github.com/users/gaearon/repos","events_url":"https://api.github.com/users/gaearon/events{/privacy}","received_events_url":"https://api.github.com/users/gaearon/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"96fcba90138e9f1a73ee1cc4f79a653ec12fc3a9","url":"https://api.github.com/repos/react/react/commits/96fcba90138e9f1a73ee1cc4f79a653ec12fc3a9","html_url":"https://github.com/react/react/commit/96fcba90138e9f1a73ee1cc4f79a653ec12fc3a9"}]},{"sha":"96fcba90138e9f1a73ee1cc4f79a653ec12fc3a9","node_id":"C_kwDOAJy2KtoAKDk2ZmNiYTkwMTM4ZTlmMWE3M2VlMWNjNGY3OWE2NTNlYzEyZmMzYTk","commit":{"author":{"name":"Alex Hunt","email":"hello@alexhunt.dev","date":"2026-07-28T15:45:37Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-28T15:45:37Z"},"message":"[RN] Update ReactPrivate and InitializeCore imports (0.87 Strict API) (#36986)\n\n## Summary\n\nMigrate internal `Libraries/` import subpaths from `react-native` to the\nincoming dedicated entry points in React Native 0.87.\n\n**Motivation**\n\nSee [**RFC0894: Removing deep imports from\nreact-native**](https://github.com/react-native-community/discussions-and-proposals/pull/894)\n\n**Changes**\n\nThe `react-private-interface` entry point has been created explicitly\nfor the private contract between React ↔ React Native, and is 1:1 with\nthe previous `ReactNativePrivateInterface` module.\n\nBoth of the below `Libraries/` paths still exist, but are deprecated —\nthis is a lagging migration that will enable cleanup in a future RN\nversion.\n\n- `react-native/Libraries/Core/InitializeCore` →\n`react-native/setup-env`\n[react/react-native#57475](https://github.com/react/react-native/pull/57475)\n- `react-native/Libraries/ReactPrivate/ReactNativePrivateInterface` →\n`react-native/react-private-interface`\n[react/react-native#57495](https://github.com/react/react-native/pull/57495)\n\n## Test Plan\n\nFlow","tree":{"sha":"bb4dd74dc82813f1827a62daa4643fb9dfb1a0d3","url":"https://api.github.com/repos/react/react/git/trees/bb4dd74dc82813f1827a62daa4643fb9dfb1a0d3"},"url":"https://api.github.com/repos/react/react/git/commits/96fcba90138e9f1a73ee1cc4f79a653ec12fc3a9","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqaM6hCRC1aQ7uu5UhlAAAussQAIpqQSWfFRSrsHGIEMaame8O\nUJfj/s6sbivdMiwwgre+XvC5jkLvpbb+roJeH633qpl6/tZLIWf4M5MVoRDzTUFo\ng7aO3W3Mk4loCoLysUZROvo0hsziw7Tn/LtbCQ2xp3ilGIzmqs85ck0AkIgagu3f\nQxzpw4w9f6anp1FKCZ7qDyZbO13edTzMlkfEWHcID+pXmRQ1ptAE43LV6FVvp5En\nAIVbcU6yXCbmreZQe1dpAItu2Is5xSYq6EWoP5C0pzF7uaOcGgN5A6E4nx0nln5k\nMrLdS8pJowix/xyDSAtDpvLkbHy4ETMTeggqdHsidPoNIgFvapUo5Ma7Vt1qmjSb\nHyeyuyFuWGBK5iWsTZbo64SEuTOnerLnogTzlviGgrLWCJQPUh5207+D/hu2ZnI9\nciQxj+SNZxfTqcVSxRnVI+sJOgMMKtfIWKg35z7nVZnUZnIPwU/45It1SMCWfFvW\nx22aLvqbQLw3ogp3bz8TPerCL2DZHbzwKRGhTawgKu2VU7rODqyxXHcju5z82gOd\n2WeeBnMdg9bBbwUpahM3I3fKuCX3+NV6IvipNY+kIIyabHaQXsDrVw80vRdRIj8N\n+ruPG7ta1vXnUm0pQI1nsdM/Vuh62ZHCt4Gkc7BFoq04sWPBbop4Q6uWaIoO0xlc\nlvWOPncSRuA/mUSgMk92\n=BXPp\n-----END PGP SIGNATURE-----\n","payload":"tree bb4dd74dc82813f1827a62daa4643fb9dfb1a0d3\nparent 9ceb1e7d9e20bd0302cf6ab31b038c5ec673178d\nauthor Alex Hunt <hello@alexhunt.dev> 1785253537 +0100\ncommitter GitHub <noreply@github.com> 1785253537 +0100\n\n[RN] Update ReactPrivate and InitializeCore imports (0.87 Strict API) (#36986)\n\n## Summary\n\nMigrate internal `Libraries/` import subpaths from `react-native` to the\nincoming dedicated entry points in React Native 0.87.\n\n**Motivation**\n\nSee [**RFC0894: Removing deep imports from\nreact-native**](https://github.com/react-native-community/discussions-and-proposals/pull/894)\n\n**Changes**\n\nThe `react-private-interface` entry point has been created explicitly\nfor the private contract between React ↔ React Native, and is 1:1 with\nthe previous `ReactNativePrivateInterface` module.\n\nBoth of the below `Libraries/` paths still exist, but are deprecated —\nthis is a lagging migration that will enable cleanup in a future RN\nversion.\n\n- `react-native/Libraries/Core/InitializeCore` →\n`react-native/setup-env`\n[react/react-native#57475](https://github.com/react/react-native/pull/57475)\n- `react-native/Libraries/ReactPrivate/ReactNativePrivateInterface` →\n`react-native/react-private-interface`\n[react/react-native#57495](https://github.com/react/react-native/pull/57495)\n\n## Test Plan\n\nFlow","verified_at":"2026-07-28T15:45:38Z"}},"url":"https://api.github.com/repos/react/react/commits/96fcba90138e9f1a73ee1cc4f79a653ec12fc3a9","html_url":"https://github.com/react/react/commit/96fcba90138e9f1a73ee1cc4f79a653ec12fc3a9","comments_url":"https://api.github.com/repos/react/react/commits/96fcba90138e9f1a73ee1cc4f79a653ec12fc3a9/comments","author":{"login":"huntie","id":2547783,"node_id":"MDQ6VXNlcjI1NDc3ODM=","avatar_url":"https://avatars.githubusercontent.com/u/2547783?v=4","gravatar_id":"","url":"https://api.github.com/users/huntie","html_url":"https://github.com/huntie","followers_url":"https://api.github.com/users/huntie/followers","following_url":"https://api.github.com/users/huntie/following{/other_user}","gists_url":"https://api.github.com/users/huntie/gists{/gist_id}","starred_url":"https://api.github.com/users/huntie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huntie/subscriptions","organizations_url":"https://api.github.com/users/huntie/orgs","repos_url":"https://api.github.com/users/huntie/repos","events_url":"https://api.github.com/users/huntie/events{/privacy}","received_events_url":"https://api.github.com/users/huntie/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"9ceb1e7d9e20bd0302cf6ab31b038c5ec673178d","url":"https://api.github.com/repos/react/react/commits/9ceb1e7d9e20bd0302cf6ab31b038c5ec673178d","html_url":"https://github.com/react/react/commit/9ceb1e7d9e20bd0302cf6ab31b038c5ec673178d"}]},{"sha":"9ceb1e7d9e20bd0302cf6ab31b038c5ec673178d","node_id":"C_kwDOAJy2KtoAKDljZWIxZTdkOWUyMGJkMDMwMmNmNmFiMzFiMDM4YzVlYzY3MzE3OGQ","commit":{"author":{"name":"Sebastian \"Sebbie\" Silbermann","email":"sebastian.silbermann@vercel.com","date":"2026-07-27T19:30:19Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-27T19:30:19Z"},"message":"[Flight] Define Flight chunk `.then` with `Object.defineProperty` (#37109)\n\n[Secure Ecmascript](https://github.com/tc39/proposal-ses) would freeze\nthe prototype of intrinsics. Since `ReactPromise` inherits the prototype\nfrom `Promise`, it also copies over the writable definition.\n\nUsing `defineProperty` on an inherited property is compatible with SES\nthough. That's also closer to how classes are specced in JS.\n\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>","tree":{"sha":"0b8fab62bd6a37541f3307644e63773750eced14","url":"https://api.github.com/repos/react/react/git/trees/0b8fab62bd6a37541f3307644e63773750eced14"},"url":"https://api.github.com/repos/react/react/git/commits/9ceb1e7d9e20bd0302cf6ab31b038c5ec673178d","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqZ7HLCRC1aQ7uu5UhlAAA6DoQAHy9gzWRw/nkour52vCoZQm5\nQQy+ZrMzFxD36kSHdCBJtjPfEOoAjx8aht4u7QtZBc8hF/27IhW9/kPMWZumwVb5\ni8XEFl5QL1F8q2d0+/LQZxihWqNzNIDUDsxuhSMHZYANe300u/VvEQ3yeAoejYph\nHYJXIQnMUs1fqQYi3t9i86o22+b8AbZqFoHIIB8bMws040lIoltqKwbhBluCNFpY\n9ubOxZCEqARJL7Rl22avn82Mqn8gIIqKQsSle7OfsmtdnVJA0x46Q9gHSQe2KmVn\nahTkPS92qzB5zVZBjL+1aiDbxk1W/d/1C6GW6wHKQ3MjdRt3PGHcfTEW/Diy5822\ny9Iz/MRmeurT3MCTEMzqQ2OyYZAU9ithnqRZWngiDy3bNUP47EYmOaouirXsXtoo\nNMyejPGBlkITRAJUPyyyTBnazDZ2znNtxrDq1zd1D8iphWNcIIF4MsuNAtqDn0+x\nCqJZPA2TOWcg61x7RLxlk9KnnxuBg5UcBDGL8EA/FzgDzjhcqXIf6D3vLoSGY2jL\nxHft3adaGDhKWEiDJJUvBjS05dh23/irL9xJG8Acr19IdyfUSDRQJU1oyKe0H/Gt\nS8WG0W4Rs2BnqL3Vd3gKCmyC8zgi1VqIRREXAxQkbj4MSXJPzQrfKBsWnAffwSMF\nRFcN6Fr9cZpzBRwJu9ep\n=o4Np\n-----END PGP SIGNATURE-----\n","payload":"tree 0b8fab62bd6a37541f3307644e63773750eced14\nparent 756fdd476e82b0cad3776d7de083250b20f86524\nauthor Sebastian \"Sebbie\" Silbermann <sebastian.silbermann@vercel.com> 1785180619 -0400\ncommitter GitHub <noreply@github.com> 1785180619 -0400\n\n[Flight] Define Flight chunk `.then` with `Object.defineProperty` (#37109)\n\n[Secure Ecmascript](https://github.com/tc39/proposal-ses) would freeze\nthe prototype of intrinsics. Since `ReactPromise` inherits the prototype\nfrom `Promise`, it also copies over the writable definition.\n\nUsing `defineProperty` on an inherited property is compatible with SES\nthough. That's also closer to how classes are specced in JS.\n\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>","verified_at":"2026-07-27T19:30:19Z"}},"url":"https://api.github.com/repos/react/react/commits/9ceb1e7d9e20bd0302cf6ab31b038c5ec673178d","html_url":"https://github.com/react/react/commit/9ceb1e7d9e20bd0302cf6ab31b038c5ec673178d","comments_url":"https://api.github.com/repos/react/react/commits/9ceb1e7d9e20bd0302cf6ab31b038c5ec673178d/comments","author":{"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","html_url":"https://github.com/eps1lon","followers_url":"https://api.github.com/users/eps1lon/followers","following_url":"https://api.github.com/users/eps1lon/following{/other_user}","gists_url":"https://api.github.com/users/eps1lon/gists{/gist_id}","starred_url":"https://api.github.com/users/eps1lon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eps1lon/subscriptions","organizations_url":"https://api.github.com/users/eps1lon/orgs","repos_url":"https://api.github.com/users/eps1lon/repos","events_url":"https://api.github.com/users/eps1lon/events{/privacy}","received_events_url":"https://api.github.com/users/eps1lon/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"756fdd476e82b0cad3776d7de083250b20f86524","url":"https://api.github.com/repos/react/react/commits/756fdd476e82b0cad3776d7de083250b20f86524","html_url":"https://github.com/react/react/commit/756fdd476e82b0cad3776d7de083250b20f86524"}]},{"sha":"756fdd476e82b0cad3776d7de083250b20f86524","node_id":"C_kwDOAJy2KtoAKDc1NmZkZDQ3NmU4MmIwY2FkMzc3NmQ3ZGUwODMyNTBiMjBmODY1MjQ","commit":{"author":{"name":"Josh Story","email":"gnoff@storyposted.com","date":"2026-07-27T13:15:00Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-27T13:15:00Z"},"message":"[Fiber] Don't reaquire HostSingletons during dev effect validation (#37113)\n\nStacked on #37112\n\nIn dev effects are validated using a double-invoke technique. To do this\nthe effects are destroyed and recreated during a validation traversal.\nHowever this same disappear and reappear path is used when Offscreen\nFibers go hidden and HostSingletons have unique behavior when going\nhidden. So now that the double invoke effects process happens during\nhydration it is more common to have your Singletons be released and\nacquired during this validation phase which is observable most notably\nby having extra attributes removed from them. The prior commits in this\nstack deal with preserving non-react owned attributes on release however\nit is semantically incorrect to release and acquire the singleton during\nthis validation because it isn't really an effect, it simply lives in\nthis traversal to avoid having to do another traversal during the\ncommit.\n\nThis change adds a bit of info to the release and acquire path to only\nconditionally perform the necessary reacquire flow if we are not in the\nvalidation phase.","tree":{"sha":"75a9d199739ddede834fe957f431a2f155792e44","url":"https://api.github.com/repos/react/react/git/trees/75a9d199739ddede834fe957f431a2f155792e44"},"url":"https://api.github.com/repos/react/react/git/commits/756fdd476e82b0cad3776d7de083250b20f86524","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqZ1nUCRC1aQ7uu5UhlAAAmbUQAJzQPoqkaNbUphPccKCEORDM\nSuKRLCEal0ldyhb2BbCNDHrQoWz7a8bovcMBy+z2WljFoBl3g0dz0EgqQsX+IUIT\nFFOVmeAlrxKA1lHYKYnUeCnvX5+eulqz4NGpOZzBBBTFMdwLz0aQTYptluZ8pvq6\nYxDYpERpYvpI3H7yHzOpSUNLc33TrpdxuEO/SYQ8fgWVDThhOaYDqAlxuOHS73Ex\nAfniaX80fdKeCTcSqtQ6vhRhwqvIjRKkdQHja8dNd76aD2aQqxoI5MqANVOqC2BL\nSCXZL3I6ky5ZphPOpCi9SaoEdJjX2Df/YTLMa45hbaXO1Q8yVmEakELPgfB8bwwF\nklVf8Qie7W2b/sguvIhIGQNl7qcMyBvo9XnkxZpcPLjcMHhpFUCYl0IREEami3L9\nTTRJcfOlPj30ZlAtzHX+FIFZL1NeYYWTZ4w/thWCaixskskhuoQkJP+iobFFr/A9\npAZiXhUSoi5nddGjAFYeME+LsolbcXRB3MixtDyfQJm1oKrUhs7hIUUh0iCc6EFv\nujWoDwIBnXTmbGso7IeKqNWc04RPizHUbuP0ujY7zldxBWJzrNNSGx1iMqR8puDh\nrOXHePpRwRwuvDMG9MR0MQg+vvpnub07cPJT1qVtFiJ787E6V1nuUA+0aYFWS3Uz\n4BmPA2FloNEQK3tDyKBL\n=oXi6\n-----END PGP SIGNATURE-----\n","payload":"tree 75a9d199739ddede834fe957f431a2f155792e44\nparent dcd4ec28a13268f758facecde6eea93e0e791388\nauthor Josh Story <gnoff@storyposted.com> 1785158100 -0400\ncommitter GitHub <noreply@github.com> 1785158100 -0400\n\n[Fiber] Don't reaquire HostSingletons during dev effect validation (#37113)\n\nStacked on #37112\n\nIn dev effects are validated using a double-invoke technique. To do this\nthe effects are destroyed and recreated during a validation traversal.\nHowever this same disappear and reappear path is used when Offscreen\nFibers go hidden and HostSingletons have unique behavior when going\nhidden. So now that the double invoke effects process happens during\nhydration it is more common to have your Singletons be released and\nacquired during this validation phase which is observable most notably\nby having extra attributes removed from them. The prior commits in this\nstack deal with preserving non-react owned attributes on release however\nit is semantically incorrect to release and acquire the singleton during\nthis validation because it isn't really an effect, it simply lives in\nthis traversal to avoid having to do another traversal during the\ncommit.\n\nThis change adds a bit of info to the release and acquire path to only\nconditionally perform the necessary reacquire flow if we are not in the\nvalidation phase.","verified_at":"2026-07-27T13:15:00Z"}},"url":"https://api.github.com/repos/react/react/commits/756fdd476e82b0cad3776d7de083250b20f86524","html_url":"https://github.com/react/react/commit/756fdd476e82b0cad3776d7de083250b20f86524","comments_url":"https://api.github.com/repos/react/react/commits/756fdd476e82b0cad3776d7de083250b20f86524/comments","author":{"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","html_url":"https://github.com/gnoff","followers_url":"https://api.github.com/users/gnoff/followers","following_url":"https://api.github.com/users/gnoff/following{/other_user}","gists_url":"https://api.github.com/users/gnoff/gists{/gist_id}","starred_url":"https://api.github.com/users/gnoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnoff/subscriptions","organizations_url":"https://api.github.com/users/gnoff/orgs","repos_url":"https://api.github.com/users/gnoff/repos","events_url":"https://api.github.com/users/gnoff/events{/privacy}","received_events_url":"https://api.github.com/users/gnoff/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"dcd4ec28a13268f758facecde6eea93e0e791388","url":"https://api.github.com/repos/react/react/commits/dcd4ec28a13268f758facecde6eea93e0e791388","html_url":"https://github.com/react/react/commit/dcd4ec28a13268f758facecde6eea93e0e791388"}]},{"sha":"dcd4ec28a13268f758facecde6eea93e0e791388","node_id":"C_kwDOAJy2KtoAKGRjZDRlYzI4YTEzMjY4Zjc1OGZhY2VjZGU2ZWVhOTNlMGU3OTEzODg","commit":{"author":{"name":"dan","email":"dan.abramov@me.com","date":"2026-07-26T09:55:28Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-26T09:55:28Z"},"message":"[Bench] Add JSON output and declare missing dependency (#37127)\n\nThings I found while integrating this bench into\nhttps://github.com/vercel/next.js/pull/96234.\n\nSee code.\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>","tree":{"sha":"ec4608a2ec11a7a6366d4f1e9184b989c0676ab0","url":"https://api.github.com/repos/react/react/git/trees/ec4608a2ec11a7a6366d4f1e9184b989c0676ab0"},"url":"https://api.github.com/repos/react/react/git/commits/dcd4ec28a13268f758facecde6eea93e0e791388","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqZdmQCRC1aQ7uu5UhlAAAqYYQADFLCoLIZiDcAgnSWcF4+qJa\nhf+3DrxMB075nCgKctYPSpTBwOEwXr0n0yf/RgyiWbKkJYKQ98nrzz6x3yeRcEVT\n8wfu/xII/+F6Mgg8t6IIlaqLpLYtd+ABEJ0ARaJab8Mxgjv7lrcXTgiIKJvJd0ET\nT9hkos84F8awBLgNQDKoPkL4d0uiU+QKhv+5OEgnimoPR1m+DLQ0vfjf0XwAD1MV\n1vNaatSvXoeihnp78UiNTVST1Sgf4aiVmWjmqoBcp/BJ43bKxmT4EnfyvJKGeQYl\nASKyp1qqIxa2Hq9c085CDmEWm42Gz+TiQyE2tpO0VbMuTc2Mpv9/iXfV2pan4M95\n9O+0xkBQQ8W5mKg7ScEiJ0emtusJV6tl3Ph5vuGULyVTLMly0LvavWV4zLVcet5u\n7sdo34OLSZSjC4eMm+Ouzv/vWT6a0vpQc1e4Y0rR9ueNFt2iP5aj/CJFId9L+ALY\n8Knel/R4GF3Qs0T0BnIP/6r0nxTIeCz8nqOKTrGTTIB7xPN5idj/ZNiufuvVrqq9\nWjcemUk2usKHxgMiGSjGLuQBhMicvF0dQwWrl4kPPfn8pleQwJip4z9pcD756klD\nmrX/PAKKWoRz/Len4yIrSYWnAwCskULX3d8kYjkNL7jrtE72aIGCVlxl0utqPN/w\nxZ5fGNYJvoKOm94UFjDQ\n=yo65\n-----END PGP SIGNATURE-----\n","payload":"tree ec4608a2ec11a7a6366d4f1e9184b989c0676ab0\nparent b685b40d870b90a975da28c8d22ecf0ba910b1a1\nauthor dan <dan.abramov@me.com> 1785059728 +0100\ncommitter GitHub <noreply@github.com> 1785059728 +0100\n\n[Bench] Add JSON output and declare missing dependency (#37127)\n\nThings I found while integrating this bench into\nhttps://github.com/vercel/next.js/pull/96234.\n\nSee code.\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>","verified_at":"2026-07-26T09:55:28Z"}},"url":"https://api.github.com/repos/react/react/commits/dcd4ec28a13268f758facecde6eea93e0e791388","html_url":"https://github.com/react/react/commit/dcd4ec28a13268f758facecde6eea93e0e791388","comments_url":"https://api.github.com/repos/react/react/commits/dcd4ec28a13268f758facecde6eea93e0e791388/comments","author":{"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","html_url":"https://github.com/gaearon","followers_url":"https://api.github.com/users/gaearon/followers","following_url":"https://api.github.com/users/gaearon/following{/other_user}","gists_url":"https://api.github.com/users/gaearon/gists{/gist_id}","starred_url":"https://api.github.com/users/gaearon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gaearon/subscriptions","organizations_url":"https://api.github.com/users/gaearon/orgs","repos_url":"https://api.github.com/users/gaearon/repos","events_url":"https://api.github.com/users/gaearon/events{/privacy}","received_events_url":"https://api.github.com/users/gaearon/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"b685b40d870b90a975da28c8d22ecf0ba910b1a1","url":"https://api.github.com/repos/react/react/commits/b685b40d870b90a975da28c8d22ecf0ba910b1a1","html_url":"https://github.com/react/react/commit/b685b40d870b90a975da28c8d22ecf0ba910b1a1"}]},{"sha":"b685b40d870b90a975da28c8d22ecf0ba910b1a1","node_id":"C_kwDOAJy2KtoAKGI2ODViNDBkODcwYjkwYTk3NWRhMjhjOGQyMmVjZjBiYTkxMGIxYTE","commit":{"author":{"name":"Josh Story","email":"gnoff@storyposted.com","date":"2026-07-24T21:38:07Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-24T21:38:07Z"},"message":"[Fiber] only remove properties from singletons on release (#37112)\n\nRemoving attributes does not actually reset all property state on the\nsingleton instance. It also has the side effect of wiping any 3rd party\nset attributes and properties that 3rd party scripts and extensions.\n\nReimplements the singleton release to clear properties on the instance\nbased on the last committed props for the singleton fiber.\n\nNotably there is an unfixed path with preamble contribution markers that\nstill just clears based on attributes which covers SSR'd attributes that\nneed to be wiped before client recovery on hydration can continue. There\nare gated failing tests for this as a TODO.","tree":{"sha":"2274d450f6a9f01af8947f531d59141201ee0df4","url":"https://api.github.com/repos/react/react/git/trees/2274d450f6a9f01af8947f531d59141201ee0df4"},"url":"https://api.github.com/repos/react/react/git/commits/b685b40d870b90a975da28c8d22ecf0ba910b1a1","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqY9s/CRC1aQ7uu5UhlAAA6lMQAJkO3flCSFoOLtRkhKaZIsAN\nVMuwY6GYdD9wCWp+7kpcKih5xcaDznl++SHIcFR1Tu9xuQbXk2mfnEw1TXvEoa1d\nOogbS9nufmUz7xjQwdPrJvF+yqhDkPquiZElQ0bfGS7Q+Ka1m+R4luaYuo7TAui1\nlEcn/61vWFXfMOWZ2AmoDM76nonEBSVqnYq/A/0iSabNvziMqB5ir+/Gdih1txHn\nxS70oK4S+0ViTzby82XkmgblYKDrW8ncele7JaSQW0/ylofStxHS4VnAuo2ulgw8\nBVM/5eq2sXwcrg6woxRRK9XFLGxvqEFj37pc3wAcJZTrv4Zi+5D2wOddZ/hkqsW7\nodZ7x7bLlFBuJ80ZgBXdQLM7zOkhqIHUI06p3t6FvqR7aEM1rISL/DwEHwY2JJMP\nRYL5m2fALwlkHr3Pn7P43V7uOBkCkTrsimjkevB+t9YT3SvVJV+1Wctk3QUB+9db\nSpT0hYMvBnpvwgBvo7vLlBS9BwfDO9zwr7E6ebkhaaI4cdtJ2QF7VPdb2knGiFRC\nJ7bD8P5rKFk9+5AIk2iA3X2NA/vuQNd8Kv8ZBpAfwwtBEYYdZpZSaS/IjsjLExcK\nf1v+LC7vtcBjHhzTZCjOlGjJqGdFZFHqctLC3s6s6qnwfKpgYSPsjJiGBa5J7TVg\nFyCXvFmewWiHNsM3t0WY\n=mlMA\n-----END PGP SIGNATURE-----\n","payload":"tree 2274d450f6a9f01af8947f531d59141201ee0df4\nparent 28cd4bb08f1b66808bede284fca978cc9b065154\nauthor Josh Story <gnoff@storyposted.com> 1784929087 -0700\ncommitter GitHub <noreply@github.com> 1784929087 -0700\n\n[Fiber] only remove properties from singletons on release (#37112)\n\nRemoving attributes does not actually reset all property state on the\nsingleton instance. It also has the side effect of wiping any 3rd party\nset attributes and properties that 3rd party scripts and extensions.\n\nReimplements the singleton release to clear properties on the instance\nbased on the last committed props for the singleton fiber.\n\nNotably there is an unfixed path with preamble contribution markers that\nstill just clears based on attributes which covers SSR'd attributes that\nneed to be wiped before client recovery on hydration can continue. There\nare gated failing tests for this as a TODO.","verified_at":"2026-07-24T21:38:08Z"}},"url":"https://api.github.com/repos/react/react/commits/b685b40d870b90a975da28c8d22ecf0ba910b1a1","html_url":"https://github.com/react/react/commit/b685b40d870b90a975da28c8d22ecf0ba910b1a1","comments_url":"https://api.github.com/repos/react/react/commits/b685b40d870b90a975da28c8d22ecf0ba910b1a1/comments","author":{"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","html_url":"https://github.com/gnoff","followers_url":"https://api.github.com/users/gnoff/followers","following_url":"https://api.github.com/users/gnoff/following{/other_user}","gists_url":"https://api.github.com/users/gnoff/gists{/gist_id}","starred_url":"https://api.github.com/users/gnoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnoff/subscriptions","organizations_url":"https://api.github.com/users/gnoff/orgs","repos_url":"https://api.github.com/users/gnoff/repos","events_url":"https://api.github.com/users/gnoff/events{/privacy}","received_events_url":"https://api.github.com/users/gnoff/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"28cd4bb08f1b66808bede284fca978cc9b065154","url":"https://api.github.com/repos/react/react/commits/28cd4bb08f1b66808bede284fca978cc9b065154","html_url":"https://github.com/react/react/commit/28cd4bb08f1b66808bede284fca978cc9b065154"}]},{"sha":"28cd4bb08f1b66808bede284fca978cc9b065154","node_id":"C_kwDOAJy2KtoAKDI4Y2Q0YmIwOGYxYjY2ODA4YmVkZTI4NGZjYTk3OGNjOWIwNjUxNTQ","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-07-23T09:39:16Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-23T09:39:16Z"},"message":"[DevTools] Buffer Bridge messages during extension reconnects (#37075)\n\nBuffers Bridge messages during extension port reconnects and adds a\nreadiness handshake for ordered queue flushing. Includes regression\ncoverage for reconnect delivery and listener cleanup.\n\nPotential scenario could be a long user session, where Chrome kills one\nof the extension ports to save resources and then user re-connects by\nnavigating back to the DevTools UI.","tree":{"sha":"807241b470f16b711c8a054d6a517bd5f0f923ff","url":"https://api.github.com/repos/react/react/git/trees/807241b470f16b711c8a054d6a517bd5f0f923ff"},"url":"https://api.github.com/repos/react/react/git/commits/28cd4bb08f1b66808bede284fca978cc9b065154","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqYeFECRC1aQ7uu5UhlAAAgM8QAHdlJKNYgDG/EypjSF1+/3Zn\n6+uhzPE/x8RqChlmAK9/LuJb1myWzUzoC3eiOvl+sPbqAUQQA5mX2BeU+cjuFKN3\nbB11U9YdG9pxo1z3Sc4aU8533B1R84lFX63Z/xhPmjIfmkiHGlae0YS/O6ho9syM\nYhaxNkgYfWK/H80tFW1izN9jzkR1sDKtwFKTuepzMxaqT4txbvPX0ptJBun+Pd+z\n748F8zdM43lEO88R8GdE4AxzUF09cbK5r3ZSXpp1MzzJSY+l2jWxRF9Er3SQlhxJ\nhYzgcbCOFBslRmm4wah4T4SgD8EuQxQpKXB5sNHzn4CVQgdsFiBJOM1ENWCwRAkF\nxSpLCyrdzcIYI6LTr2847Wj8EVbLv5NbRO/LryrA4bZp3CY1Ey/3eJQRq4z0RWaO\nsKQ92oZ9iRiO1cFvHzx66mXHbR1RDelr4AtiVFdMfkW7TG8Ia5J01GhI0FKJIpcQ\n2GzxhvlywrGrpkdbMonE3zCpCDgLsd45944cGvdXKM79Aa3BXsn0lAmRkdm/MA5E\n3xuCkm4uAM2pTC6epdmWj3qwwTzKokxkdMuJAEVZwUlzw5m6OOwD00UgH2MyvHsD\n7K3mTQRRXVOglEVz1Mxfu5Kr1Mg3E5yg6cVTKiypt5A+ky+tN5hHlqrSjAvJgO6p\nGjQzashp/rwy/juVeB0W\n=l99n\n-----END PGP SIGNATURE-----\n","payload":"tree 807241b470f16b711c8a054d6a517bd5f0f923ff\nparent d87711f8d0a45e6950fef15183ad6f9ec827b8b0\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1784799556 +0100\ncommitter GitHub <noreply@github.com> 1784799556 +0100\n\n[DevTools] Buffer Bridge messages during extension reconnects (#37075)\n\nBuffers Bridge messages during extension port reconnects and adds a\nreadiness handshake for ordered queue flushing. Includes regression\ncoverage for reconnect delivery and listener cleanup.\n\nPotential scenario could be a long user session, where Chrome kills one\nof the extension ports to save resources and then user re-connects by\nnavigating back to the DevTools UI.","verified_at":"2026-07-23T09:39:17Z"}},"url":"https://api.github.com/repos/react/react/commits/28cd4bb08f1b66808bede284fca978cc9b065154","html_url":"https://github.com/react/react/commit/28cd4bb08f1b66808bede284fca978cc9b065154","comments_url":"https://api.github.com/repos/react/react/commits/28cd4bb08f1b66808bede284fca978cc9b065154/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"d87711f8d0a45e6950fef15183ad6f9ec827b8b0","url":"https://api.github.com/repos/react/react/commits/d87711f8d0a45e6950fef15183ad6f9ec827b8b0","html_url":"https://github.com/react/react/commit/d87711f8d0a45e6950fef15183ad6f9ec827b8b0"}]},{"sha":"d87711f8d0a45e6950fef15183ad6f9ec827b8b0","node_id":"C_kwDOAJy2KtoAKGQ4NzcxMWY4ZDBhNDVlNjk1MGZlZjE1MTgzYWQ2ZjllYzgyN2I4YjA","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-07-23T09:39:16Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-23T09:39:16Z"},"message":"[DevTools] Validate Store operation invariants (#37050)\n\nBuilds on #37049 by validating Store operation invariants before\nmutation. Missing nodes, invalid element types, inconsistent\nparent-child relationships, and invalid reorder operations now emit and\nthrow explicit errors instead of silently continuing with corrupted\nstate.\n\nAdds a canonical-render regression test for invalid child removal.","tree":{"sha":"ac6ece67e33cd1adb7670b83c283322219da6c7d","url":"https://api.github.com/repos/react/react/git/trees/ac6ece67e33cd1adb7670b83c283322219da6c7d"},"url":"https://api.github.com/repos/react/react/git/commits/d87711f8d0a45e6950fef15183ad6f9ec827b8b0","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqYeFECRC1aQ7uu5UhlAAA4RkQADlZsS+yXlfB0WMOvX3dsOA/\nR0OafDEMyhLdksjI5kQOO7GlqnvuK+3JN91M5OofTu3vGCF33Dzin2GeR/BMwBme\ny6cry/i8s3nhwcnPXt+ueUvDd9Z+k+Hh5jElS0Nq5XltcLn4LmWcW1zxrQITul0d\nHRn6lykc86DDnRD0EfN3tgimwZ5pxm3j3/UmhEtEZ5gFrUQQxND63DHfKuHBwlyM\nd4+sU63jS/JHHP1VzrY10NFo019kRdd4TxuQVAFByfOttFTnntssk8dtyUG4mQ1y\nFJGIdOF3PA6AiArTS+ThbLpLw3/0eFFsi9l7Oq+lNuQ+icLHpvGlEkP7yIpKwwW0\nxmqo/5+t/Ml5hYb18l+6GYwazISpWv0vzclxZpQSvtASUyDsM60fK4kU+lW22Ssc\nUOhCLKF//v8MrU1Jx3ZT8lPsnxbubgtP4ftJMYRRD1Ebv7idvOfO0n58SHaJeZiU\nlQalwo57cyNbnyPzFfUFAclOTYtJY5lAY9QM0Q/gRJEKdpEWXOVSIwyTva0zrSMA\n0Aw4nNZuFqfsADGBbkITITLvhPDBoKgF458KsotwM3hE9Yh9NA4vCpMt7S+0DBR3\nSQ15R7YoizK1BBfJEs8VUQInzAHdqUOYgIc4sk51iEoDRQ8/o4L/FHp6NFbK3tBv\ngbZSCoVodukLxfNp14Wm\n=NR2/\n-----END PGP SIGNATURE-----\n","payload":"tree ac6ece67e33cd1adb7670b83c283322219da6c7d\nparent fc08438abd8fe11f819f609fefc39f06a279ef5b\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1784799556 +0100\ncommitter GitHub <noreply@github.com> 1784799556 +0100\n\n[DevTools] Validate Store operation invariants (#37050)\n\nBuilds on #37049 by validating Store operation invariants before\nmutation. Missing nodes, invalid element types, inconsistent\nparent-child relationships, and invalid reorder operations now emit and\nthrow explicit errors instead of silently continuing with corrupted\nstate.\n\nAdds a canonical-render regression test for invalid child removal.","verified_at":"2026-07-23T09:39:16Z"}},"url":"https://api.github.com/repos/react/react/commits/d87711f8d0a45e6950fef15183ad6f9ec827b8b0","html_url":"https://github.com/react/react/commit/d87711f8d0a45e6950fef15183ad6f9ec827b8b0","comments_url":"https://api.github.com/repos/react/react/commits/d87711f8d0a45e6950fef15183ad6f9ec827b8b0/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"fc08438abd8fe11f819f609fefc39f06a279ef5b","url":"https://api.github.com/repos/react/react/commits/fc08438abd8fe11f819f609fefc39f06a279ef5b","html_url":"https://github.com/react/react/commit/fc08438abd8fe11f819f609fefc39f06a279ef5b"}]},{"sha":"fc08438abd8fe11f819f609fefc39f06a279ef5b","node_id":"C_kwDOAJy2KtoAKGZjMDg0MzhhYmQ4ZmUxMWY4MTlmNjA5ZmVmYzM5ZjA2YTI3OWVmNWI","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-07-23T09:39:15Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-23T09:39:15Z"},"message":"[DevTools] Harden Bridge and Wall lifecycle types (#37049)\n\nBuilds on #37048 by replacing `any`-based Bridge and Wall boundaries\nwith typed `mixed` values and explicit runtime validation. Invalid\nmessages and post-shutdown operations now throw, while shutdown reliably\nflushes queued messages even if cleanup fails.\n\nStrengthens the DevTools Bridge and Wall contracts:\n- Models event dictionaries as event-to-payload maps, using `void` for\nevents without payloads.\n- Types `send(event, payload?)` directly, eliminating runtime\npayload-arity handling.\n- Replaces broad `any` transport types with `mixed` and boundary\nvalidation.\n- Throws on invalid lifecycle usage instead of warning or silently\nreturning.\n- Ensures shutdown flushes queued messages even when Wall cleanup fails.\n  - Updates Wall implementations and adds Bridge lifecycle coverage.","tree":{"sha":"8bb08e990e21521290d9ffc3ae99a5257aeeda4b","url":"https://api.github.com/repos/react/react/git/trees/8bb08e990e21521290d9ffc3ae99a5257aeeda4b"},"url":"https://api.github.com/repos/react/react/git/commits/fc08438abd8fe11f819f609fefc39f06a279ef5b","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqYeFDCRC1aQ7uu5UhlAAAnKoQADmeWzignQe2mQ01IwwOT4R7\nEyVm1ht33QY8AjiDeKHC4AtIncI8CSuAJTtAzrsc4rHejyG8FH8Y3AwlSPdLz0TF\nLeEZQQ/J1Q2RkrhqghrNkjWRrhi2hJUXK2bbnfJu4KJKyBryOrZgML7JNLFQ6meX\nLsss2U52nY0sIWm7wtOsKPbQXGxX6C8nJv50DDVOSM9iICt41JfFRou5Fffc9OZy\nnhCi9XzmhBPfkdZXheEZoyi/tOGTnakNiwN2F2XEZLLfjn/LMWHRMHBoQRHisAmX\n2862yrjZz6Tw3wFrtMEzESBO/F3tgijoAAiZ24ZzCSGdQC0cC+5FxtCfVz7QK+C3\nKoODT+HKW40rBC3OCGI+z6JFPvYV4sDhxMTCG+CIZ9SnFeOPsDUKmLeROkBFph5r\n2Dqh/kXn9oPLH82cHpIDhOPfZQhvVLIyH/cDUazlSeRMdQx+JcN2JiIZ9D5qmNvh\naJ5Au8mCrzpLgAfq5eLtl8n26iGYD4sHBC+b+SfD5PxbkNu03WlQAMRet3HWv2x/\nDbz9afGIghIZIIa2V2uJw6l6+yb/jKTJyRUKQavTjMI/29J23vb05KbV/d7lTZqn\n2oLf6cj3t1xji68xB5V+oXz2pLow8VGFQk4ZqGQ0ZvOpjUNA7IjBL0y2MsN7K9NG\neM+0yZq5skWRRl8siKEa\n=pLO+\n-----END PGP SIGNATURE-----\n","payload":"tree 8bb08e990e21521290d9ffc3ae99a5257aeeda4b\nparent 218efce013b05907e05ee80ab5d848f990fcf6b9\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1784799555 +0100\ncommitter GitHub <noreply@github.com> 1784799555 +0100\n\n[DevTools] Harden Bridge and Wall lifecycle types (#37049)\n\nBuilds on #37048 by replacing `any`-based Bridge and Wall boundaries\nwith typed `mixed` values and explicit runtime validation. Invalid\nmessages and post-shutdown operations now throw, while shutdown reliably\nflushes queued messages even if cleanup fails.\n\nStrengthens the DevTools Bridge and Wall contracts:\n- Models event dictionaries as event-to-payload maps, using `void` for\nevents without payloads.\n- Types `send(event, payload?)` directly, eliminating runtime\npayload-arity handling.\n- Replaces broad `any` transport types with `mixed` and boundary\nvalidation.\n- Throws on invalid lifecycle usage instead of warning or silently\nreturning.\n- Ensures shutdown flushes queued messages even when Wall cleanup fails.\n  - Updates Wall implementations and adds Bridge lifecycle coverage.","verified_at":"2026-07-23T09:39:16Z"}},"url":"https://api.github.com/repos/react/react/commits/fc08438abd8fe11f819f609fefc39f06a279ef5b","html_url":"https://github.com/react/react/commit/fc08438abd8fe11f819f609fefc39f06a279ef5b","comments_url":"https://api.github.com/repos/react/react/commits/fc08438abd8fe11f819f609fefc39f06a279ef5b/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"218efce013b05907e05ee80ab5d848f990fcf6b9","url":"https://api.github.com/repos/react/react/commits/218efce013b05907e05ee80ab5d848f990fcf6b9","html_url":"https://github.com/react/react/commit/218efce013b05907e05ee80ab5d848f990fcf6b9"}]},{"sha":"218efce013b05907e05ee80ab5d848f990fcf6b9","node_id":"C_kwDOAJy2KtoAKDIxOGVmY2UwMTNiMDU5MDdlMDVlZTgwYWI1ZDg0OGY5OTBmY2Y2Yjk","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-07-23T09:39:15Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-23T09:39:15Z"},"message":"[DevTools] Shut down standalone Bridge on socket close (#37076)\n\nEnsures the standalone DevTools Bridge fully shuts down when its\nWebSocket closes, with re-entrancy protection. Adds tests confirming\nevent-only shutdown leaves the Bridge active while socket closure shuts\nit down.","tree":{"sha":"a3694bded171d86a4c24dd0f9dbc53d517b2f087","url":"https://api.github.com/repos/react/react/git/trees/a3694bded171d86a4c24dd0f9dbc53d517b2f087"},"url":"https://api.github.com/repos/react/react/git/commits/218efce013b05907e05ee80ab5d848f990fcf6b9","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqYeFDCRC1aQ7uu5UhlAAARh8QAJ2YRtU2W287x+fe0rfzk1nm\na7LR6ezowkl4me6YAh+yKYQfnvSpqnPIdJ09dApuSvJDUG5eS4T6vsE9Vl4pRuV0\ngUiyrtuEuHo8edUanC9Q5AxKzBWjYdyr5/hhNBOFz447HqJuUKJo8t3HMnb+1XhP\nEiSnJsM3uoiV+vBhskmmEf2VO/KaE5AAHm1o5PR1Oax5oyJeuWQF41PjAWycuJfl\n6hFqBsxosKOayjnm9ogiOwHXp1cN3TjCgY7oUK6TL/YKuqsx7/Y/1C25sh5m1T2f\n38p0pdSyZTWgJrCwXSOEwfFSx2lSVedP3kpJGmiqqXsKzyzU1QBDzky2GsXEcKNP\nqyizGdqR5tdGoPyyV6V01EwOnp7EfUdfTvJXZOt1ziVSt3Ubqp803kpL0woAhPWn\nVBf9YYuzbCT33olHG6fSSuCG0ZDFpqyjvNrO7+IpP28tuVn/C6fR8gc9WizxA+Ea\nM2z2jONSg/5kzYeBtAgQQ7MHWCKRRDv8Y+C9khJA33giiH3eBjDC7ZAeq/DWms+W\nNMw8tt5bTO4hgAw5371HizYTQoO8CGxLymXZztrkqhqG+aSwYAiO8TFtX0BzX1rr\n18Vchpx/oEFM6/H28R/2QcHb0jjm/Gv3uCaR2GjC9U7jcY5kstLjDafN5lZM5ZMv\nvS59hkuivLzmUtuOW2vW\n=jn70\n-----END PGP SIGNATURE-----\n","payload":"tree a3694bded171d86a4c24dd0f9dbc53d517b2f087\nparent 8d30cc968b6715b4d2aa8b5aca1503b5e2854c6d\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1784799555 +0100\ncommitter GitHub <noreply@github.com> 1784799555 +0100\n\n[DevTools] Shut down standalone Bridge on socket close (#37076)\n\nEnsures the standalone DevTools Bridge fully shuts down when its\nWebSocket closes, with re-entrancy protection. Adds tests confirming\nevent-only shutdown leaves the Bridge active while socket closure shuts\nit down.","verified_at":"2026-07-23T09:39:16Z"}},"url":"https://api.github.com/repos/react/react/commits/218efce013b05907e05ee80ab5d848f990fcf6b9","html_url":"https://github.com/react/react/commit/218efce013b05907e05ee80ab5d848f990fcf6b9","comments_url":"https://api.github.com/repos/react/react/commits/218efce013b05907e05ee80ab5d848f990fcf6b9/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"8d30cc968b6715b4d2aa8b5aca1503b5e2854c6d","url":"https://api.github.com/repos/react/react/commits/8d30cc968b6715b4d2aa8b5aca1503b5e2854c6d","html_url":"https://github.com/react/react/commit/8d30cc968b6715b4d2aa8b5aca1503b5e2854c6d"}]},{"sha":"8d30cc968b6715b4d2aa8b5aca1503b5e2854c6d","node_id":"C_kwDOAJy2KtoAKDhkMzBjYzk2OGI2NzE1YjRkMmFhOGI1YWNhMTUwM2I1ZTI4NTRjNmQ","commit":{"author":{"name":"Ruslan Lesiutin","email":"28902667+hoxyq@users.noreply.github.com","date":"2026-07-23T09:39:15Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-23T09:39:15Z"},"message":"[DevTools] Type EventEmitter error handling (#37048)\n\nTightens `EventEmitter` listener types and fixes error handling so the\nfirst thrown value is preserved while subsequent errors are reported\ninstead of swallowed. Adds regression coverage for listener failures.","tree":{"sha":"573bf8cbaec9047449d4dc4f40d58c037559e744","url":"https://api.github.com/repos/react/react/git/trees/573bf8cbaec9047449d4dc4f40d58c037559e744"},"url":"https://api.github.com/repos/react/react/git/commits/8d30cc968b6715b4d2aa8b5aca1503b5e2854c6d","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqYeFDCRC1aQ7uu5UhlAAAWaUQAAijYds1ChUcbtGldn1WIa/u\nOr9THDCexBmhCivYmfHzjTUlMjwJ984XRpNfua6HX+sokrbxMDEsflRbYeqrit14\nupQcgZI8Jku3sw4d7Ow3chC/d8/N3MClW+ocl3iPUhhRkAvaO/z31U5HB5hW9zaU\nL4c8LeyD+aal1PLe4VmgKPsrsvCkzJAevsCdnAvCBAmfvUwiaY+rxcknXyXEf1Hy\nZkDNe7Sms3BqD6K7oVt4r1KIKtdGdxy2JUzA1AL3NxnibV2FGKP1QWYjxrLi1S1n\nFTgNFUVqqrIUqRh4FabJgIuyBPSEKP+2pubCXaT2T01plMtb/a7dvV5L3uHWXFrn\nZG5Bp+ExCkpQF8JAuVA8h56kwdEUb7ScFvs8C4FCq6WOLYnJR67I9Ugi59A8E0QQ\n+7dphmdBB47vsQcgQCqtPnU5+tWKXoT0rTdxrREh+Yax6k5I9mf9L6TJ0N2HAaS2\n5SeGTX1hhN75N36qALkKFnIhOH0WcIEyuOUwJYiKFGrf4AXOWjxInbPJTa8xqlUb\naKabY4qOvdilxAf2+8a35D8N+TTpVxmnE+U59HLDoVW2BTRxCoq6ysZbPzDXtGoI\n24UhelbFVCGUa70j8eZJ5sTBCXmNavw/JiYbTFb/ZF1bWXSK6iMLil2x7UyAEfRF\n0BYhZVf/GYVmxcrOnlLI\n=hPQ7\n-----END PGP SIGNATURE-----\n","payload":"tree 573bf8cbaec9047449d4dc4f40d58c037559e744\nparent 32b1fbad6fd1fc34ef361dcf06bcfb1ae3fed5f3\nauthor Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> 1784799555 +0100\ncommitter GitHub <noreply@github.com> 1784799555 +0100\n\n[DevTools] Type EventEmitter error handling (#37048)\n\nTightens `EventEmitter` listener types and fixes error handling so the\nfirst thrown value is preserved while subsequent errors are reported\ninstead of swallowed. Adds regression coverage for listener failures.","verified_at":"2026-07-23T09:39:15Z"}},"url":"https://api.github.com/repos/react/react/commits/8d30cc968b6715b4d2aa8b5aca1503b5e2854c6d","html_url":"https://github.com/react/react/commit/8d30cc968b6715b4d2aa8b5aca1503b5e2854c6d","comments_url":"https://api.github.com/repos/react/react/commits/8d30cc968b6715b4d2aa8b5aca1503b5e2854c6d/comments","author":{"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","html_url":"https://github.com/hoxyq","followers_url":"https://api.github.com/users/hoxyq/followers","following_url":"https://api.github.com/users/hoxyq/following{/other_user}","gists_url":"https://api.github.com/users/hoxyq/gists{/gist_id}","starred_url":"https://api.github.com/users/hoxyq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoxyq/subscriptions","organizations_url":"https://api.github.com/users/hoxyq/orgs","repos_url":"https://api.github.com/users/hoxyq/repos","events_url":"https://api.github.com/users/hoxyq/events{/privacy}","received_events_url":"https://api.github.com/users/hoxyq/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"32b1fbad6fd1fc34ef361dcf06bcfb1ae3fed5f3","url":"https://api.github.com/repos/react/react/commits/32b1fbad6fd1fc34ef361dcf06bcfb1ae3fed5f3","html_url":"https://github.com/react/react/commit/32b1fbad6fd1fc34ef361dcf06bcfb1ae3fed5f3"}]},{"sha":"32b1fbad6fd1fc34ef361dcf06bcfb1ae3fed5f3","node_id":"C_kwDOAJy2KtoAKDMyYjFmYmFkNmZkMWZjMzRlZjM2MWRjZjA2YmNmYjFhZTNmZWQ1ZjM","commit":{"author":{"name":"Sam Poder","email":"sam.r.poder@gmail.com","date":"2026-07-22T21:56:50Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-22T21:56:50Z"},"message":"[react-server-dom-turbopack] Support experimental array format for chunks (#37095)\n\n\n\nTurbopack has introduced a new format for chunks (experimental):\n\n```typescript\ntype ChunkUrlOrMerged = ChunkUrl | [ChunkUrl, ChunkPath[], number[]]\n```\n\nThis will allow us to dynamically choose to merge / unmerge chunks based\non already loaded chunks. See\nhttps://github.com/vercel/next.js/pull/95261 for more context behind\nthese feature.\n\nHowever, we noticed that this breaks `prepareDestinationWithChunks()` on\nserver-side renders. The prepared chunk script tags were a stringified\nversion of this array:\n\n<img width=\"1758\" height=\"474\" alt=\"Screenshot 2026-07-22 at 9 37 06 am\"\nsrc=\"https://github.com/user-attachments/assets/fa273b44-5942-4037-b955-4338472242fe\"\n/>\n\nInstead, we should prepare the merged chunk as these SSR-d pages would\nnot have any loaded chunks tracked in memory (that happens on the\nclient).\n\nThis PR brings back this optimisation and also would remove the\nconsole-logged errors associated with them.\n\n\n---------\n\nCo-authored-by: Sebastian \"Sebbie\" Silbermann <silbermann.sebastian@gmail.com>","tree":{"sha":"8c15cd00bfeebe07b1aa69088ff3cdad4932195e","url":"https://api.github.com/repos/react/react/git/trees/8c15cd00bfeebe07b1aa69088ff3cdad4932195e"},"url":"https://api.github.com/repos/react/react/git/commits/32b1fbad6fd1fc34ef361dcf06bcfb1ae3fed5f3","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqYTyiCRC1aQ7uu5UhlAAA0ugQAEtWMj3nIFErhNVjPIJbNh9K\n5/46lh17JVTMyp2l41RQFNZVFApeHD2NaZFfzOqrkg3jTQBGsLPZ2vZbIztUI0Am\npoH4g6ffLICRwb8TyFAamxT5DAgtI4wrnAsD9rz7kwFPk98X6xw2rGAoYuXbp7cg\n3joK9L7XasmM4MjlgXSnOtvDpnnkaZG+3F1C2nBZXS0hOaVmP8UH4xxzgu8w2XKf\nWgnOF5BBxFsqkwWkYIMU6fW5lcP6Qs0iTVeQ6IAkIspFE81O8C3HlegCBi8098Wq\nQ+yM0l1XHoWhF7yzc/e44IFMDWecEKQ/qtrC/3tR/Z2jo4WvQ/tp70nzXsrFoQpg\nsJLlMpN/9mQW+A2w8RC+5x+SaDk0WC6p5Go3ogZ1B28Y+PuwqGWNP3n0ZR4FdiCo\n6sbPej4YhFa4QMNCfvj+YM1MOdBIOuaM7J2MxZ5y5G3lA1xvA8NRhUlbK/dxxBOc\nJZKdF0Q2mVBhJBuqJl/u8IeaSKIYY9uh20+6Hn39IB/UWsTDxK9hiBQoLAIvbt2h\nch5TfTCn3ebuFOOIl8BS5zq+2igx+AN4ztLtFbR9E/tgSTxFdyz4BIUo55FYU0Bg\nIWMX/xeqP7hTpWNK9ErCzyJRVvTeNRKCdQUPaNGNp33S++U3DVLt9EaQNNm6wL/U\n1LC/5qQKk0DQK/qcJ1YO\n=26OQ\n-----END PGP SIGNATURE-----\n","payload":"tree 8c15cd00bfeebe07b1aa69088ff3cdad4932195e\nparent 711c445bccc331b3ef85a793feb8e13dcf968fc3\nauthor Sam Poder <sam.r.poder@gmail.com> 1784757410 -0700\ncommitter GitHub <noreply@github.com> 1784757410 +0200\n\n[react-server-dom-turbopack] Support experimental array format for chunks (#37095)\n\n\n\nTurbopack has introduced a new format for chunks (experimental):\n\n```typescript\ntype ChunkUrlOrMerged = ChunkUrl | [ChunkUrl, ChunkPath[], number[]]\n```\n\nThis will allow us to dynamically choose to merge / unmerge chunks based\non already loaded chunks. See\nhttps://github.com/vercel/next.js/pull/95261 for more context behind\nthese feature.\n\nHowever, we noticed that this breaks `prepareDestinationWithChunks()` on\nserver-side renders. The prepared chunk script tags were a stringified\nversion of this array:\n\n<img width=\"1758\" height=\"474\" alt=\"Screenshot 2026-07-22 at 9 37 06 am\"\nsrc=\"https://github.com/user-attachments/assets/fa273b44-5942-4037-b955-4338472242fe\"\n/>\n\nInstead, we should prepare the merged chunk as these SSR-d pages would\nnot have any loaded chunks tracked in memory (that happens on the\nclient).\n\nThis PR brings back this optimisation and also would remove the\nconsole-logged errors associated with them.\n\n\n---------\n\nCo-authored-by: Sebastian \"Sebbie\" Silbermann <silbermann.sebastian@gmail.com>","verified_at":"2026-07-22T21:56:50Z"}},"url":"https://api.github.com/repos/react/react/commits/32b1fbad6fd1fc34ef361dcf06bcfb1ae3fed5f3","html_url":"https://github.com/react/react/commit/32b1fbad6fd1fc34ef361dcf06bcfb1ae3fed5f3","comments_url":"https://api.github.com/repos/react/react/commits/32b1fbad6fd1fc34ef361dcf06bcfb1ae3fed5f3/comments","author":{"login":"sampoder","id":39828164,"node_id":"MDQ6VXNlcjM5ODI4MTY0","avatar_url":"https://avatars.githubusercontent.com/u/39828164?v=4","gravatar_id":"","url":"https://api.github.com/users/sampoder","html_url":"https://github.com/sampoder","followers_url":"https://api.github.com/users/sampoder/followers","following_url":"https://api.github.com/users/sampoder/following{/other_user}","gists_url":"https://api.github.com/users/sampoder/gists{/gist_id}","starred_url":"https://api.github.com/users/sampoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sampoder/subscriptions","organizations_url":"https://api.github.com/users/sampoder/orgs","repos_url":"https://api.github.com/users/sampoder/repos","events_url":"https://api.github.com/users/sampoder/events{/privacy}","received_events_url":"https://api.github.com/users/sampoder/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"711c445bccc331b3ef85a793feb8e13dcf968fc3","url":"https://api.github.com/repos/react/react/commits/711c445bccc331b3ef85a793feb8e13dcf968fc3","html_url":"https://github.com/react/react/commit/711c445bccc331b3ef85a793feb8e13dcf968fc3"}]},{"sha":"711c445bccc331b3ef85a793feb8e13dcf968fc3","node_id":"C_kwDOAJy2KtoAKDcxMWM0NDViY2NjMzMxYjNlZjg1YTc5M2ZlYjhlMTNkY2Y5NjhmYzM","commit":{"author":{"name":"Tim Neutkens","email":"tim@timneutkens.nl","date":"2026-07-22T10:29:45Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-07-22T10:29:45Z"},"message":"[Flight] Limit fake JSX call site stacks to 10 frames (#37086)","tree":{"sha":"36c218f885808cf9834561cd870bc73995bf9807","url":"https://api.github.com/repos/react/react/git/trees/36c218f885808cf9834561cd870bc73995bf9807"},"url":"https://api.github.com/repos/react/react/git/commits/711c445bccc331b3ef85a793feb8e13dcf968fc3","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJqYJuZCRC1aQ7uu5UhlAAAqD0QAFfHhvoP1MZ+SbKPTAWWzSLp\nt/apCuov34CmabjKbvi5hXYoR/5Lsm9Iogmr/JrKFXR9iTKku6zqJ5QYRSb4I9+k\nH5C08YngOIAAAhuFgHaHPzEl/0Rk46BzqdaOXHT/xmcrzthb0flJE9xm2saT32Qj\n1A3BFkomDo74180hJETk/d0+7Ycws4qWiC/hCS/76gTf9kDR+wdxtlfYZkwIPwmZ\n0tti9uEjkzAtL8eg6tTpYYIZkhJ6vqyUN+3D3XUPqAO3Lo4Dg+fH4CwLY8FXeysi\niu8zEbmwxkvuP/cj2B2xyPRnttpRQGw/dEVZxTO9ofybkc0wOCFAFSPMp06kP9Xj\nejxWuASD7V79z68/4OuIPTp8vvC/fIid6J9MoWjsUBtFL7adjy/kFpcueKFwDnf3\nXpHJ+/gmytRSkbMhmf9G7ICub519HMUK1r5GJhKd/oCstnNAfnbVrI66vedzj+Xm\nuwicsFjQLlioRvxdcvvHHhFkeI1+ELUaErSW0Y3dPtP6mCzJc636Mq51w2u904ya\npsqkHiK9woKuNBg81p4jI0+Pimd6X0hYjUoqKlKhUy4C1tEUii2Dn3kR9PFMZKWQ\nBQevAJ3E/eeT+XWPx/lzxboIrwKhtnnS0/6cubSsG6pNcEjeTeBkUha1ZNo4Uj6V\nT/9GfYlLxhOetMHqICX6\n=ThTj\n-----END PGP SIGNATURE-----\n","payload":"tree 36c218f885808cf9834561cd870bc73995bf9807\nparent 81e442eaf3fbfabd2367a0d8691ec0df13a3add0\nauthor Tim Neutkens <tim@timneutkens.nl> 1784716185 +0200\ncommitter GitHub <noreply@github.com> 1784716185 +0200\n\n[Flight] Limit fake JSX call site stacks to 10 frames (#37086)","verified_at":"2026-07-22T10:29:45Z"}},"url":"https://api.github.com/repos/react/react/commits/711c445bccc331b3ef85a793feb8e13dcf968fc3","html_url":"https://github.com/react/react/commit/711c445bccc331b3ef85a793feb8e13dcf968fc3","comments_url":"https://api.github.com/repos/react/react/commits/711c445bccc331b3ef85a793feb8e13dcf968fc3/comments","author":{"login":"timneutkens","id":6324199,"node_id":"MDQ6VXNlcjYzMjQxOTk=","avatar_url":"https://avatars.githubusercontent.com/u/6324199?v=4","gravatar_id":"","url":"https://api.github.com/users/timneutkens","html_url":"https://github.com/timneutkens","followers_url":"https://api.github.com/users/timneutkens/followers","following_url":"https://api.github.com/users/timneutkens/following{/other_user}","gists_url":"https://api.github.com/users/timneutkens/gists{/gist_id}","starred_url":"https://api.github.com/users/timneutkens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timneutkens/subscriptions","organizations_url":"https://api.github.com/users/timneutkens/orgs","repos_url":"https://api.github.com/users/timneutkens/repos","events_url":"https://api.github.com/users/timneutkens/events{/privacy}","received_events_url":"https://api.github.com/users/timneutkens/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"81e442eaf3fbfabd2367a0d8691ec0df13a3add0","url":"https://api.github.com/repos/react/react/commits/81e442eaf3fbfabd2367a0d8691ec0df13a3add0","html_url":"https://github.com/react/react/commit/81e442eaf3fbfabd2367a0d8691ec0df13a3add0"}]}]