-
Notifications
You must be signed in to change notification settings - Fork 46.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix use of stale props in Fabric events #26408
Fix use of stale props in Fabric events #26408
Conversation
This was originally written in 051637d, so you can see how we test this kind of stuff here: react/packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js Lines 586 to 637 in 9941cba
Would it be possible to write a similar regression test at this level? |
I've only now seen #26321. I'm a bit concerned about it. This These are extremely hot paths and commonly used objects. Have we verified that this change does not change the perf in a meaningful way, including memory usage on a large tree or perf on a constrained device? I'm a little uneasy about such a significant change to our most common data structure. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These changes seems reasonable to address the bug you describe, but it sounds we may want to have another round of discussion on #26321 to review whether there's any performance concerns.
Any chance we could cover this behaviour with a new unit test?
That's the test I tried to modify to test this behavior.
Yes, I'll give it another try. |
Thanks for the review, @gaearon and @javache !
I think the important part of this is the removal from the public class, which I'd expect to be neutral for performance and way better for encapsulation.
This is only used for host instances, not all fibers in the tree. I don't think having 3 additional properties in an object is going to make that much a difference, especially considering the logic we have around prop diffing that's an order of magnitude more complex. I'm also planning to make |
cf729bf
to
ce6cc19
Compare
I ended up doing a partial revert of my refactor in #26321. I preserved the concept of I think the main problem with my previous approach was that some things that were meant to be shared by all fibers was moved to the fiber itself, and that introduced the series of issues we've seen. This new version should make that right while accomplishing the goal of decoupling that internal state from the public instance provided to users via refs. |
@@ -222,8 +226,8 @@ export function getChildHostContext( | |||
} | |||
|
|||
export function getPublicInstance(instance: Instance): null | PublicInstance { | |||
if (instance.publicInstance != null) { | |||
return instance.publicInstance; | |||
if (instance.canonical != null && instance.canonical.publicInstance != null) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we need a null-check here? The types claim these are all non-nullable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't remember why I did the original check (should've added a comment) but there's some code like this for compatibility with Paper, so types don't match 1:1. I'll double check.
@@ -26,8 +26,9 @@ function getTagFromInstance(inst) { | |||
let tag = nativeInstance._nativeTag; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we rename these methods? It's already exported as getNodeFromInstance
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still need to do some more work on the react repo for this. Can do that in a following PR.
@@ -223,10 +223,11 @@ function getInspectorDataForViewAtPoint( | |||
} | |||
|
|||
closestInstance = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was previously using a private property on ReactFabricHostComponent
, right? This seems to be the only place we need to access internalInstanceHandle
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was previously using a private property on ReactFabricHostComponent, right?
Yeah.
This seems to be the only place we need to access internalInstanceHandle.
There's another one in ReactFabricComponentTree
. What are you suggesting?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just trying to see if we can avoid the prop and re-use the existing one, but since this is now on canonical, it probably doesn't matter as much.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could use symbol properties on the public instance to avoid creating new properties and keep encapsulation, but I want to make public instances lazy and that would prevent me from doing it.
ce6cc19
to
90087f0
Compare
Comparing: eaccf27...abf3094 Critical size changesIncludes critical production bundles, as well as any change greater than 2%:
Significant size changesIncludes any change greater than 0.2%: (No significant changes) |
90087f0
to
abf3094
Compare
@@ -26,8 +26,9 @@ function getTagFromInstance(inst) { | |||
let tag = nativeInstance._nativeTag; | |||
if (tag === undefined) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if (tag === undefined) { | |
if (tag === undefined && nativeInstance.canonical) { |
…rate module in Fabric (facebook#26321)" This reverts commit f828bad.
…ule in Fabric (v2)
abf3094
to
7f86a0c
Compare
@gaearon please feel free to still comment here. I can open a follow-up PR in case you have any more concerns after my last changes. |
Summary: This sync includes the following changes: - **[3554c8852](facebook/react@3554c8852 )**: Clean interface for public instances between React and React Native ([#26416](facebook/react#26416)) //<Rubén Norte>// - **[db281b3d9](facebook/react@db281b3d9 )**: Feature: Suspend commit without blocking render ([#26398](facebook/react#26398)) //<Andrew Clark>// - **[55308554e](facebook/react@55308554e )**: [www] enable enableFilterEmptyStringAttributesDOM flag ([#26410](facebook/react#26410)) //<Jan Kassens>// - **[163d86e19](facebook/react@163d86e19 )**: Updated comment message ([#26158](facebook/react#26158)) //<Ibrahim Amin>// - **[108aed083](facebook/react@108aed083 )**: Fix use of stale props in Fabric events ([#26408](facebook/react#26408)) //<Rubén Norte>// - **[8fa41ffa2](facebook/react@8fa41ffa2 )**: Don't "fix up" mismatched text content with suppressedHydrationWarning ([#26391](facebook/react#26391)) //<Sebastian Markbåge>// - **[05777ffb0](facebook/react@05777ffb0 )**: Setting transition pending flag shouldn't be part of a surrounding transition ([#26243](facebook/react#26243)) //<Sophie Alpert>// - **[99aa082be](facebook/react@99aa082be )**: Remove unstable_flushControlled ([#26397](facebook/react#26397)) //<Jan Kassens>// - **[47cf4e578](facebook/react@47cf4e578 )**: Restore some guards in ReactFabricGlobalResponderHandler after refactor ([#26394](facebook/react#26394)) //<Rubén Norte>// - **[cfc1274e3](facebook/react@cfc1274e3 )**: Disable IE innerHTML workaround behind a flag ([#26390](facebook/react#26390)) //<Sebastian Markbåge>// - **[a57f40d83](facebook/react@a57f40d83 )**: Undo dependency injection of batching ([#26389](facebook/react#26389)) //<Sebastian Markbåge>// - **[d310d654a](facebook/react@d310d654a )**: Avoid meta programming to initialize functions in module scope ([#26388](facebook/react#26388)) //<Sebastian Markbåge>// - **[21aee59e4](facebook/react@21aee59e4 )**: Delete unused DOM files ([#26387](facebook/react#26387)) //<Sebastian Markbåge>// - **[6bd53a5bd](facebook/react@6bd53a5bd )**: Remove FeatureFlags fork for `react-dom/unstable_testing` ([#26383](facebook/react#26383)) //<Sebastian Markbåge>// - **[2788d0d8d](facebook/react@2788d0d8d )**: Allow empty string to be passed to formAction ([#26379](facebook/react#26379)) //<Sebastian Markbåge>// - **[f828bad38](facebook/react@f828bad38 )**: Extracted definition and access to public instances to a separate module in Fabric ([#26321](facebook/react#26321)) //<Rubén Norte>// - **[131768166](facebook/react@131768166 )**: Support Context as renderable node ([#25641](facebook/react#25641)) //<Andrew Clark>// - **[d4f58c3b8](facebook/react@d4f58c3b8 )**: Support Promise as a renderable node ([#25634](facebook/react#25634)) //<Andrew Clark>// - **[633461486](facebook/react@633461486 )**: Add disableLegacyContext test gates where needed ([#26371](facebook/react#26371)) //<Andrew Clark>// - **[432ffc9d0](facebook/react@432ffc9d0 )**: Convert more Scheduler.unstable_flushAll in tests to new test utils ([#26369](facebook/react#26369)) //<Tianyu Yao>// - **[69fd78fe3](facebook/react@69fd78fe3 )**: Update Float tests to check for specific errors ([#26367](facebook/react#26367)) //<Andrew Clark>// - **[93c10dfa6](facebook/react@93c10dfa6 )**: flushSync: Exhaust queue even if something throws ([#26366](facebook/react#26366)) //<Andrew Clark>// - **[be353d251](facebook/react@be353d251 )**: [Flight Reply] Add undefined and Iterable Support ([#26365](facebook/react#26365)) //<Sebastian Markbåge>// - **[ef8bdbecb](facebook/react@ef8bdbecb )**: [Flight Reply] Add Reply Encoding ([#26360](facebook/react#26360)) //<Sebastian Markbåge>// - **[a8875eab7](facebook/react@a8875eab7 )**: Update more tests to not rely on sync queuing ([#26358](facebook/react#26358)) //<Andrew Clark>// - **[d1ad984db](facebook/react@d1ad984db )**: [Flight] Add support for returning `undefined` from render ([#26349](facebook/react#26349)) //<Sebastian Silbermann>// - **[39d4b9365](facebook/react@39d4b9365 )**: [Internal tests] Close MessageChannel port to prevent leak ([#26357](facebook/react#26357)) //<Andrew Clark>// - **[3706edb81](facebook/react@3706edb81 )**: [Float][Fizz]: Don't preload nomodule scripts ([#26353](facebook/react#26353)) //<Josh Story>// - **[2b003a5cc](facebook/react@2b003a5cc )**: Split out ServerReferenceMetadata into Id and Bound Arguments ([#26351](facebook/react#26351)) //<Sebastian Markbåge>// - **[62cd5af08](facebook/react@62cd5af08 )**: Codemod redundant async act scopes ([#26350](facebook/react#26350)) //<Andrew Clark>// - **[037378202](facebook/react@037378202 )**: Internal `act`: Call scope function after an async gap ([#26347](facebook/react#26347)) //<Andrew Clark>// - **[d8e49f2af](facebook/react@d8e49f2af )**: Use setTimeout to schedule work on the server in Edge environments ([#26348](facebook/react#26348)) //<Sebastian Markbåge>// - **[83643778b](facebook/react@83643778b )**: Internal test helpers: Use Node's MessageChannel to queue task ([#26345](facebook/react#26345)) //<Andrew Clark>// - **[44d380794](facebook/react@44d380794 )**: Move internalAct to internal-test-utils package ([#26344](facebook/react#26344)) //<Andrew Clark>// - **[d81447304](facebook/react@d81447304 )**: [Internal API only] Delete non-awaited form of act ([#26339](facebook/react#26339)) //<Andrew Clark>// - **[702fc984e](facebook/react@702fc984e )**: Codemod act -> await act (4/?) ([#26338](facebook/react#26338)) //<Andrew Clark>// - **[9fb2469a6](facebook/react@9fb2469a6 )**: Restore definition of NativeMethods as an object for React Native ([#26341](facebook/react#26341)) //<Rubén Norte>// - **[161f6ae42](facebook/react@161f6ae42 )**: Codemod act -> await act (3/?) ([#26336](facebook/react#26336)) //<Andrew Clark>// - **[58605f798](facebook/react@58605f798 )**: Codemod act -> await act (2/?) ([#26335](facebook/react#26335)) //<Andrew Clark>// - **[703c67560](facebook/react@703c67560 )**: Codemod act -> await act (1/?) ([#26334](facebook/react#26334)) //<Andrew Clark>// - **[b380c2485](facebook/react@b380c2485 )**: Convert class equivlance tests to flushSync ([#26333](facebook/react#26333)) //<Andrew Clark>// - **[8f812e75d](facebook/react@8f812e75d )**: Refactor ReactFabricHostComponent ([#26323](facebook/react#26323)) //<Rubén Norte>// - **[978fae4b4](facebook/react@978fae4b4 )**: [Float][Fiber] implement a faster hydration match for hoistable elements ([#26154](facebook/react#26154)) //<Josh Story>// - **[8a9f82ed5](facebook/react@8a9f82ed5 )**: [Float][Fizz][Fiber] - Do not hoist elements with `itemProp` & hydrate more tolerantly in hoist contexts ([#26256](facebook/react#26256)) //<Josh Story>// - **[3cad3a54e](facebook/react@3cad3a54e )**: Use content hash for facebook-www builds ([#26331](facebook/react#26331)) //<Jan Kassens>// - **[ba353a50a](facebook/react@ba353a50a )**: Build: make version in build artifacts match ([#26329](facebook/react#26329)) //<Jan Kassens>// - **[6e1756a5a](facebook/react@6e1756a5a )**: Move suspended render logic to ensureRootIsScheduled ([#26328](facebook/react#26328)) //<Andrew Clark>// - **[1528c5ccd](facebook/react@1528c5ccd )**: SchedulerMock.unstable_yieldValue -> SchedulerMock.log ([#26312](facebook/react#26312)) //<Andrew Clark>// - **[4bbac04cd](facebook/react@4bbac04cd )**: Upgrade Flow to 0.201 ([#26326](facebook/react#26326)) //<Jan Kassens>// - **[eb616a12f](facebook/react@eb616a12f )**: Extract duplicated methods in Fabric and the legacy renderer to a shared module ([#26319](facebook/react#26319)) //<Rubén Norte>// - **[49f741046](facebook/react@49f741046 )**: Fix: Infinite act loop caused by wrong shouldYield ([#26317](facebook/react#26317)) //<Andrew Clark>// - **[106ea1c58](facebook/react@106ea1c58 )**: Support Iterables in Flight ([#26313](facebook/react#26313)) //<Sebastian Markbåge>// - **[f905da227](facebook/react@f905da227 )**: [Flight] Send server reference error chunks to the client ([#26293](facebook/react#26293)) //<Hendrik Liebau>// - **[e0241b660](facebook/react@e0241b660 )**: Simplify Webpack References by encoding file path + export name as single id ([#26300](facebook/react#26300)) //<Sebastian Markbåge>// - **[25685d8a9](facebook/react@25685d8a9 )**: Codemod tests to waitFor pattern (9/?) ([#26309](facebook/react#26309)) //<Andrew Clark>// - **[64dde7082](facebook/react@64dde7082 )**: Codemod tests to waitFor pattern (8/?) ([#26308](facebook/react#26308)) //<Andrew Clark>// - **[3cb5afb82](facebook/react@3cb5afb82 )**: Codemod tests to waitFor pattern (7/?) ([#26307](facebook/react#26307)) //<Andrew Clark>// - **[e98695db9](facebook/react@e98695db9 )**: Codemod tests to waitFor pattern (6/?) ([#26305](facebook/react#26305)) //<Andrew Clark>// - **[9a52cc8bc](facebook/react@9a52cc8bc )**: Convert ReactLazy-test to waitFor pattern ([#26304](facebook/react#26304)) //<Andrew Clark>// - **[03462cfc7](facebook/react@03462cfc7 )**: [Fizz] External runtime: fix bug in processing existing elements ([#26303](facebook/react#26303)) //<mofeiZ>// - **[faacefb4d](facebook/react@faacefb4d )**: Codemod tests to waitFor pattern (4/?) ([#26302](facebook/react#26302)) //<Andrew Clark>// - **[06460b6fb](facebook/react@06460b6fb )**: Remove unnecessary (and incorrect) code for compatibility with Paper in the Fabric version of GlobalResponderHandler ([#26290](facebook/react#26290)) //<Rubén Norte>// - **[ce8a72fd4](facebook/react@ce8a72fd4 )**: Codemod tests to waitFor pattern (2/?) ([#26296](facebook/react#26296)) //<Andrew Clark>// - **[1f1f8eb55](facebook/react@1f1f8eb55 )**: [Float][Fizz][Fiber]: Refactor <style> Resource implementation to group on flush ([#26280](facebook/react#26280)) //<Josh Story>// - **[5c633a48f](facebook/react@5c633a48f )**: Add back accidentally deleted test comments ([#26294](facebook/react#26294)) //<Andrew Clark>// - **[b72ed698f](facebook/react@b72ed698f )**: Fixed incorrect value returned as public instance from reconciler ([#26283](facebook/react#26283)) //<Rubén Norte>// - **[25a8b9735](facebook/react@25a8b9735 )**: Codemod tests to waitFor pattern (1/?) ([#26288](facebook/react#26288)) //<Andrew Clark>// - **[e52446733](facebook/react@e52446733 )**: New internal testing helpers: waitFor, waitForAll, waitForPaint ([#26285](facebook/react#26285)) //<Andrew Clark>// - **[d49e0e0be](facebook/react@d49e0e0be )**: Removed unused imperative events implementation from React Native renderer ([#26282](facebook/react#26282)) //<Rubén Norte>// - **[41110021f](facebook/react@41110021f )**: Fix: Selective hydration causing incorrect thenable type passed to DevTools ([#26275](facebook/react#26275)) //<Andrew Clark>// - **[67a61d5bd](facebook/react@67a61d5bd )**: [Flight Fixture] Show SSR Support with CSS ([#26263](facebook/react#26263)) //<Sebastian Markbåge>// - **[40755c01a](facebook/react@40755c01a )**: [Flight Fixture] Proxy requests through the global server instead of directly ([#26257](facebook/react#26257)) //<Sebastian Markbåge>// - **[b2ae9ddb3](facebook/react@b2ae9ddb3 )**: Cleanup enableSyncDefaultUpdate flag ([#26236](facebook/react#26236)) //<Jan Kassens>// - **[6ff1733e6](facebook/react@6ff1733e6 )**: [Float][Fizz][Fiber] support type for ReactDOM.preload() options ([#26239](facebook/react#26239)) //<Josh Story>// - **[1173a17e6](facebook/react@1173a17e6 )**: [Float][Fizz][Fiber] implement preconnect and prefetchDNS float methods ([#26237](facebook/react#26237)) //<Josh Story>// - **[a8f971b7a](facebook/react@a8f971b7a )**: Switch to mount dispatcher after use() when needed ([#26232](facebook/react#26232)) //<Sophie Alpert>// - **[96cdeaf89](facebook/react@96cdeaf89 )**: [Fizz Node] Fix null bytes written at text chunk boundaries ([#26228](facebook/react#26228)) //<Sophie Alpert>// - **[c04b18070](facebook/react@c04b18070 )**: Remove eventTime field from class Update type ([#26219](facebook/react#26219)) //<Andrew Clark>// - **[60144a04d](facebook/react@60144a04d )**: Split out Edge and Node implementations of the Flight Client ([#26187](facebook/react#26187)) //<Sebastian Markbåge>// - **[70b0bbda7](facebook/react@70b0bbda7 )**: [fizz][external-runtime] Fix: process mutation records before disconnecting ([#26169](facebook/react#26169)) //<mofeiZ>// - **[c7967b194](facebook/react@c7967b194 )**: Distribute bundles more evenly into CI shards ([#26208](facebook/react#26208)) //<Sebastian Silbermann>// - **[bb1e3d0e1](facebook/react@bb1e3d0e1 )**: Fail yarn build if any bundle fails to build ([#26207](facebook/react#26207)) //<Sebastian Silbermann>// - **[62e6c4612](facebook/react@62e6c4612 )**: Move Mutation/Persistence fork inline into the functions ([#26206](facebook/react#26206)) //<Sebastian Markbåge>// - **[80cf4a099](facebook/react@80cf4a099 )**: Update Closure Compiler ([#26205](facebook/react#26205)) //<Sebastian Markbåge>// - **[6b6d0617e](facebook/react@6b6d0617e )**: Update Rollup and related plugins to their most recent versions ([#24916](facebook/react#24916)) //<Glenn 'devalias' Grant>// - **[bc38a3dfa](facebook/react@bc38a3dfa )**: Update rollup config to use moduleSideEffects ([#26199](facebook/react#26199)) //<Ming Ye>// - **[c9d9f524d](facebook/react@c9d9f524d )**: Make enableCustomElementPropertySupport a dynamic flag in www build ([#26194](facebook/react#26194)) //<Andrew Clark>// - **[189f70e17](facebook/react@189f70e17 )**: Create a bunch of custom webpack vs unbundled node bundles ([#26172](facebook/react#26172)) //<Sebastian Markbåge>// - **[fbf3bc315](facebook/react@fbf3bc315 )**: Add `scale` as a unitless property ([#25601](facebook/react#25601)) //<Jonny Burger>// Changelog: [General][Changed] - React Native sync for revisions fccf3a9...3554c88 jest_e2e[run_all_tests] bypass-github-export-checks @public Fixes tests for current React version. Reviewed By: sammy-SC Differential Revision: D44216371 fbshipit-source-id: a569c9aeaf2d96d150219e148f06dcde9ba6f7cd
Summary: This sync includes the following changes: - **[3554c8852](facebook/react@3554c8852 )**: Clean interface for public instances between React and React Native ([#26416](facebook/react#26416)) //<Rubén Norte>// - **[db281b3d9](facebook/react@db281b3d9 )**: Feature: Suspend commit without blocking render ([#26398](facebook/react#26398)) //<Andrew Clark>// - **[55308554e](facebook/react@55308554e )**: [www] enable enableFilterEmptyStringAttributesDOM flag ([#26410](facebook/react#26410)) //<Jan Kassens>// - **[163d86e19](facebook/react@163d86e19 )**: Updated comment message ([#26158](facebook/react#26158)) //<Ibrahim Amin>// - **[108aed083](facebook/react@108aed083 )**: Fix use of stale props in Fabric events ([#26408](facebook/react#26408)) //<Rubén Norte>// - **[8fa41ffa2](facebook/react@8fa41ffa2 )**: Don't "fix up" mismatched text content with suppressedHydrationWarning ([#26391](facebook/react#26391)) //<Sebastian Markbåge>// - **[05777ffb0](facebook/react@05777ffb0 )**: Setting transition pending flag shouldn't be part of a surrounding transition ([#26243](facebook/react#26243)) //<Sophie Alpert>// - **[99aa082be](facebook/react@99aa082be )**: Remove unstable_flushControlled ([#26397](facebook/react#26397)) //<Jan Kassens>// - **[47cf4e578](facebook/react@47cf4e578 )**: Restore some guards in ReactFabricGlobalResponderHandler after refactor ([#26394](facebook/react#26394)) //<Rubén Norte>// - **[cfc1274e3](facebook/react@cfc1274e3 )**: Disable IE innerHTML workaround behind a flag ([#26390](facebook/react#26390)) //<Sebastian Markbåge>// - **[a57f40d83](facebook/react@a57f40d83 )**: Undo dependency injection of batching ([#26389](facebook/react#26389)) //<Sebastian Markbåge>// - **[d310d654a](facebook/react@d310d654a )**: Avoid meta programming to initialize functions in module scope ([#26388](facebook/react#26388)) //<Sebastian Markbåge>// - **[21aee59e4](facebook/react@21aee59e4 )**: Delete unused DOM files ([#26387](facebook/react#26387)) //<Sebastian Markbåge>// - **[6bd53a5bd](facebook/react@6bd53a5bd )**: Remove FeatureFlags fork for `react-dom/unstable_testing` ([#26383](facebook/react#26383)) //<Sebastian Markbåge>// - **[2788d0d8d](facebook/react@2788d0d8d )**: Allow empty string to be passed to formAction ([#26379](facebook/react#26379)) //<Sebastian Markbåge>// - **[f828bad38](facebook/react@f828bad38 )**: Extracted definition and access to public instances to a separate module in Fabric ([#26321](facebook/react#26321)) //<Rubén Norte>// - **[131768166](facebook/react@131768166 )**: Support Context as renderable node ([#25641](facebook/react#25641)) //<Andrew Clark>// - **[d4f58c3b8](facebook/react@d4f58c3b8 )**: Support Promise as a renderable node ([#25634](facebook/react#25634)) //<Andrew Clark>// - **[633461486](facebook/react@633461486 )**: Add disableLegacyContext test gates where needed ([#26371](facebook/react#26371)) //<Andrew Clark>// - **[432ffc9d0](facebook/react@432ffc9d0 )**: Convert more Scheduler.unstable_flushAll in tests to new test utils ([#26369](facebook/react#26369)) //<Tianyu Yao>// - **[69fd78fe3](facebook/react@69fd78fe3 )**: Update Float tests to check for specific errors ([#26367](facebook/react#26367)) //<Andrew Clark>// - **[93c10dfa6](facebook/react@93c10dfa6 )**: flushSync: Exhaust queue even if something throws ([#26366](facebook/react#26366)) //<Andrew Clark>// - **[be353d251](facebook/react@be353d251 )**: [Flight Reply] Add undefined and Iterable Support ([#26365](facebook/react#26365)) //<Sebastian Markbåge>// - **[ef8bdbecb](facebook/react@ef8bdbecb )**: [Flight Reply] Add Reply Encoding ([#26360](facebook/react#26360)) //<Sebastian Markbåge>// - **[a8875eab7](facebook/react@a8875eab7 )**: Update more tests to not rely on sync queuing ([#26358](facebook/react#26358)) //<Andrew Clark>// - **[d1ad984db](facebook/react@d1ad984db )**: [Flight] Add support for returning `undefined` from render ([#26349](facebook/react#26349)) //<Sebastian Silbermann>// - **[39d4b9365](facebook/react@39d4b9365 )**: [Internal tests] Close MessageChannel port to prevent leak ([#26357](facebook/react#26357)) //<Andrew Clark>// - **[3706edb81](facebook/react@3706edb81 )**: [Float][Fizz]: Don't preload nomodule scripts ([#26353](facebook/react#26353)) //<Josh Story>// - **[2b003a5cc](facebook/react@2b003a5cc )**: Split out ServerReferenceMetadata into Id and Bound Arguments ([#26351](facebook/react#26351)) //<Sebastian Markbåge>// - **[62cd5af08](facebook/react@62cd5af08 )**: Codemod redundant async act scopes ([#26350](facebook/react#26350)) //<Andrew Clark>// - **[037378202](facebook/react@037378202 )**: Internal `act`: Call scope function after an async gap ([#26347](facebook/react#26347)) //<Andrew Clark>// - **[d8e49f2af](facebook/react@d8e49f2af )**: Use setTimeout to schedule work on the server in Edge environments ([#26348](facebook/react#26348)) //<Sebastian Markbåge>// - **[83643778b](facebook/react@83643778b )**: Internal test helpers: Use Node's MessageChannel to queue task ([#26345](facebook/react#26345)) //<Andrew Clark>// - **[44d380794](facebook/react@44d380794 )**: Move internalAct to internal-test-utils package ([#26344](facebook/react#26344)) //<Andrew Clark>// - **[d81447304](facebook/react@d81447304 )**: [Internal API only] Delete non-awaited form of act ([#26339](facebook/react#26339)) //<Andrew Clark>// - **[702fc984e](facebook/react@702fc984e )**: Codemod act -> await act (4/?) ([#26338](facebook/react#26338)) //<Andrew Clark>// - **[9fb2469a6](facebook/react@9fb2469a6 )**: Restore definition of NativeMethods as an object for React Native ([#26341](facebook/react#26341)) //<Rubén Norte>// - **[161f6ae42](facebook/react@161f6ae42 )**: Codemod act -> await act (3/?) ([#26336](facebook/react#26336)) //<Andrew Clark>// - **[58605f798](facebook/react@58605f798 )**: Codemod act -> await act (2/?) ([#26335](facebook/react#26335)) //<Andrew Clark>// - **[703c67560](facebook/react@703c67560 )**: Codemod act -> await act (1/?) ([#26334](facebook/react#26334)) //<Andrew Clark>// - **[b380c2485](facebook/react@b380c2485 )**: Convert class equivlance tests to flushSync ([#26333](facebook/react#26333)) //<Andrew Clark>// - **[8f812e75d](facebook/react@8f812e75d )**: Refactor ReactFabricHostComponent ([#26323](facebook/react#26323)) //<Rubén Norte>// - **[978fae4b4](facebook/react@978fae4b4 )**: [Float][Fiber] implement a faster hydration match for hoistable elements ([#26154](facebook/react#26154)) //<Josh Story>// - **[8a9f82ed5](facebook/react@8a9f82ed5 )**: [Float][Fizz][Fiber] - Do not hoist elements with `itemProp` & hydrate more tolerantly in hoist contexts ([#26256](facebook/react#26256)) //<Josh Story>// - **[3cad3a54e](facebook/react@3cad3a54e )**: Use content hash for facebook-www builds ([#26331](facebook/react#26331)) //<Jan Kassens>// - **[ba353a50a](facebook/react@ba353a50a )**: Build: make version in build artifacts match ([#26329](facebook/react#26329)) //<Jan Kassens>// - **[6e1756a5a](facebook/react@6e1756a5a )**: Move suspended render logic to ensureRootIsScheduled ([#26328](facebook/react#26328)) //<Andrew Clark>// - **[1528c5ccd](facebook/react@1528c5ccd )**: SchedulerMock.unstable_yieldValue -> SchedulerMock.log ([#26312](facebook/react#26312)) //<Andrew Clark>// - **[4bbac04cd](facebook/react@4bbac04cd )**: Upgrade Flow to 0.201 ([#26326](facebook/react#26326)) //<Jan Kassens>// - **[eb616a12f](facebook/react@eb616a12f )**: Extract duplicated methods in Fabric and the legacy renderer to a shared module ([#26319](facebook/react#26319)) //<Rubén Norte>// - **[49f741046](facebook/react@49f741046 )**: Fix: Infinite act loop caused by wrong shouldYield ([#26317](facebook/react#26317)) //<Andrew Clark>// - **[106ea1c58](facebook/react@106ea1c58 )**: Support Iterables in Flight ([#26313](facebook/react#26313)) //<Sebastian Markbåge>// - **[f905da227](facebook/react@f905da227 )**: [Flight] Send server reference error chunks to the client ([#26293](facebook/react#26293)) //<Hendrik Liebau>// - **[e0241b660](facebook/react@e0241b660 )**: Simplify Webpack References by encoding file path + export name as single id ([#26300](facebook/react#26300)) //<Sebastian Markbåge>// - **[25685d8a9](facebook/react@25685d8a9 )**: Codemod tests to waitFor pattern (9/?) ([#26309](facebook/react#26309)) //<Andrew Clark>// - **[64dde7082](facebook/react@64dde7082 )**: Codemod tests to waitFor pattern (8/?) ([#26308](facebook/react#26308)) //<Andrew Clark>// - **[3cb5afb82](facebook/react@3cb5afb82 )**: Codemod tests to waitFor pattern (7/?) ([#26307](facebook/react#26307)) //<Andrew Clark>// - **[e98695db9](facebook/react@e98695db9 )**: Codemod tests to waitFor pattern (6/?) ([#26305](facebook/react#26305)) //<Andrew Clark>// - **[9a52cc8bc](facebook/react@9a52cc8bc )**: Convert ReactLazy-test to waitFor pattern ([#26304](facebook/react#26304)) //<Andrew Clark>// - **[03462cfc7](facebook/react@03462cfc7 )**: [Fizz] External runtime: fix bug in processing existing elements ([#26303](facebook/react#26303)) //<mofeiZ>// - **[faacefb4d](facebook/react@faacefb4d )**: Codemod tests to waitFor pattern (4/?) ([#26302](facebook/react#26302)) //<Andrew Clark>// - **[06460b6fb](facebook/react@06460b6fb )**: Remove unnecessary (and incorrect) code for compatibility with Paper in the Fabric version of GlobalResponderHandler ([#26290](facebook/react#26290)) //<Rubén Norte>// - **[ce8a72fd4](facebook/react@ce8a72fd4 )**: Codemod tests to waitFor pattern (2/?) ([#26296](facebook/react#26296)) //<Andrew Clark>// - **[1f1f8eb55](facebook/react@1f1f8eb55 )**: [Float][Fizz][Fiber]: Refactor <style> Resource implementation to group on flush ([#26280](facebook/react#26280)) //<Josh Story>// - **[5c633a48f](facebook/react@5c633a48f )**: Add back accidentally deleted test comments ([#26294](facebook/react#26294)) //<Andrew Clark>// - **[b72ed698f](facebook/react@b72ed698f )**: Fixed incorrect value returned as public instance from reconciler ([#26283](facebook/react#26283)) //<Rubén Norte>// - **[25a8b9735](facebook/react@25a8b9735 )**: Codemod tests to waitFor pattern (1/?) ([#26288](facebook/react#26288)) //<Andrew Clark>// - **[e52446733](facebook/react@e52446733 )**: New internal testing helpers: waitFor, waitForAll, waitForPaint ([#26285](facebook/react#26285)) //<Andrew Clark>// - **[d49e0e0be](facebook/react@d49e0e0be )**: Removed unused imperative events implementation from React Native renderer ([#26282](facebook/react#26282)) //<Rubén Norte>// - **[41110021f](facebook/react@41110021f )**: Fix: Selective hydration causing incorrect thenable type passed to DevTools ([#26275](facebook/react#26275)) //<Andrew Clark>// - **[67a61d5bd](facebook/react@67a61d5bd )**: [Flight Fixture] Show SSR Support with CSS ([#26263](facebook/react#26263)) //<Sebastian Markbåge>// - **[40755c01a](facebook/react@40755c01a )**: [Flight Fixture] Proxy requests through the global server instead of directly ([#26257](facebook/react#26257)) //<Sebastian Markbåge>// - **[b2ae9ddb3](facebook/react@b2ae9ddb3 )**: Cleanup enableSyncDefaultUpdate flag ([#26236](facebook/react#26236)) //<Jan Kassens>// - **[6ff1733e6](facebook/react@6ff1733e6 )**: [Float][Fizz][Fiber] support type for ReactDOM.preload() options ([#26239](facebook/react#26239)) //<Josh Story>// - **[1173a17e6](facebook/react@1173a17e6 )**: [Float][Fizz][Fiber] implement preconnect and prefetchDNS float methods ([#26237](facebook/react#26237)) //<Josh Story>// - **[a8f971b7a](facebook/react@a8f971b7a )**: Switch to mount dispatcher after use() when needed ([#26232](facebook/react#26232)) //<Sophie Alpert>// - **[96cdeaf89](facebook/react@96cdeaf89 )**: [Fizz Node] Fix null bytes written at text chunk boundaries ([#26228](facebook/react#26228)) //<Sophie Alpert>// - **[c04b18070](facebook/react@c04b18070 )**: Remove eventTime field from class Update type ([#26219](facebook/react#26219)) //<Andrew Clark>// - **[60144a04d](facebook/react@60144a04d )**: Split out Edge and Node implementations of the Flight Client ([#26187](facebook/react#26187)) //<Sebastian Markbåge>// - **[70b0bbda7](facebook/react@70b0bbda7 )**: [fizz][external-runtime] Fix: process mutation records before disconnecting ([#26169](facebook/react#26169)) //<mofeiZ>// - **[c7967b194](facebook/react@c7967b194 )**: Distribute bundles more evenly into CI shards ([#26208](facebook/react#26208)) //<Sebastian Silbermann>// - **[bb1e3d0e1](facebook/react@bb1e3d0e1 )**: Fail yarn build if any bundle fails to build ([#26207](facebook/react#26207)) //<Sebastian Silbermann>// - **[62e6c4612](facebook/react@62e6c4612 )**: Move Mutation/Persistence fork inline into the functions ([#26206](facebook/react#26206)) //<Sebastian Markbåge>// - **[80cf4a099](facebook/react@80cf4a099 )**: Update Closure Compiler ([#26205](facebook/react#26205)) //<Sebastian Markbåge>// - **[6b6d0617e](facebook/react@6b6d0617e )**: Update Rollup and related plugins to their most recent versions ([#24916](facebook/react#24916)) //<Glenn 'devalias' Grant>// - **[bc38a3dfa](facebook/react@bc38a3dfa )**: Update rollup config to use moduleSideEffects ([#26199](facebook/react#26199)) //<Ming Ye>// - **[c9d9f524d](facebook/react@c9d9f524d )**: Make enableCustomElementPropertySupport a dynamic flag in www build ([#26194](facebook/react#26194)) //<Andrew Clark>// - **[189f70e17](facebook/react@189f70e17 )**: Create a bunch of custom webpack vs unbundled node bundles ([#26172](facebook/react#26172)) //<Sebastian Markbåge>// - **[fbf3bc315](facebook/react@fbf3bc315 )**: Add `scale` as a unitless property ([#25601](facebook/react#25601)) //<Jonny Burger>// Changelog: [General][Changed] - React Native sync for revisions fccf3a9...3554c88 jest_e2e[run_all_tests] bypass-github-export-checks Fixes tests for current React version. Reviewed By: sammy-SC Differential Revision: D44216371 fbshipit-source-id: a569c9aeaf2d96d150219e148f06dcde9ba6f7cd
Summary: This sync includes the following changes: - **[3554c8852](facebook/react@3554c8852 )**: Clean interface for public instances between React and React Native ([facebook#26416](facebook/react#26416)) //<Rubén Norte>// - **[db281b3d9](facebook/react@db281b3d9 )**: Feature: Suspend commit without blocking render ([facebook#26398](facebook/react#26398)) //<Andrew Clark>// - **[55308554e](facebook/react@55308554e )**: [www] enable enableFilterEmptyStringAttributesDOM flag ([facebook#26410](facebook/react#26410)) //<Jan Kassens>// - **[163d86e19](facebook/react@163d86e19 )**: Updated comment message ([facebook#26158](facebook/react#26158)) //<Ibrahim Amin>// - **[108aed083](facebook/react@108aed083 )**: Fix use of stale props in Fabric events ([facebook#26408](facebook/react#26408)) //<Rubén Norte>// - **[8fa41ffa2](facebook/react@8fa41ffa2 )**: Don't "fix up" mismatched text content with suppressedHydrationWarning ([facebook#26391](facebook/react#26391)) //<Sebastian Markbåge>// - **[05777ffb0](facebook/react@05777ffb0 )**: Setting transition pending flag shouldn't be part of a surrounding transition ([facebook#26243](facebook/react#26243)) //<Sophie Alpert>// - **[99aa082be](facebook/react@99aa082be )**: Remove unstable_flushControlled ([facebook#26397](facebook/react#26397)) //<Jan Kassens>// - **[47cf4e578](facebook/react@47cf4e578 )**: Restore some guards in ReactFabricGlobalResponderHandler after refactor ([facebook#26394](facebook/react#26394)) //<Rubén Norte>// - **[cfc1274e3](facebook/react@cfc1274e3 )**: Disable IE innerHTML workaround behind a flag ([facebook#26390](facebook/react#26390)) //<Sebastian Markbåge>// - **[a57f40d83](facebook/react@a57f40d83 )**: Undo dependency injection of batching ([facebook#26389](facebook/react#26389)) //<Sebastian Markbåge>// - **[d310d654a](facebook/react@d310d654a )**: Avoid meta programming to initialize functions in module scope ([facebook#26388](facebook/react#26388)) //<Sebastian Markbåge>// - **[21aee59e4](facebook/react@21aee59e4 )**: Delete unused DOM files ([facebook#26387](facebook/react#26387)) //<Sebastian Markbåge>// - **[6bd53a5bd](facebook/react@6bd53a5bd )**: Remove FeatureFlags fork for `react-dom/unstable_testing` ([facebook#26383](facebook/react#26383)) //<Sebastian Markbåge>// - **[2788d0d8d](facebook/react@2788d0d8d )**: Allow empty string to be passed to formAction ([facebook#26379](facebook/react#26379)) //<Sebastian Markbåge>// - **[f828bad38](facebook/react@f828bad38 )**: Extracted definition and access to public instances to a separate module in Fabric ([facebook#26321](facebook/react#26321)) //<Rubén Norte>// - **[131768166](facebook/react@131768166 )**: Support Context as renderable node ([facebook#25641](facebook/react#25641)) //<Andrew Clark>// - **[d4f58c3b8](facebook/react@d4f58c3b8 )**: Support Promise as a renderable node ([facebook#25634](facebook/react#25634)) //<Andrew Clark>// - **[633461486](facebook/react@633461486 )**: Add disableLegacyContext test gates where needed ([facebook#26371](facebook/react#26371)) //<Andrew Clark>// - **[432ffc9d0](facebook/react@432ffc9d0 )**: Convert more Scheduler.unstable_flushAll in tests to new test utils ([facebook#26369](facebook/react#26369)) //<Tianyu Yao>// - **[69fd78fe3](facebook/react@69fd78fe3 )**: Update Float tests to check for specific errors ([facebook#26367](facebook/react#26367)) //<Andrew Clark>// - **[93c10dfa6](facebook/react@93c10dfa6 )**: flushSync: Exhaust queue even if something throws ([facebook#26366](facebook/react#26366)) //<Andrew Clark>// - **[be353d251](facebook/react@be353d251 )**: [Flight Reply] Add undefined and Iterable Support ([facebook#26365](facebook/react#26365)) //<Sebastian Markbåge>// - **[ef8bdbecb](facebook/react@ef8bdbecb )**: [Flight Reply] Add Reply Encoding ([facebook#26360](facebook/react#26360)) //<Sebastian Markbåge>// - **[a8875eab7](facebook/react@a8875eab7 )**: Update more tests to not rely on sync queuing ([facebook#26358](facebook/react#26358)) //<Andrew Clark>// - **[d1ad984db](facebook/react@d1ad984db )**: [Flight] Add support for returning `undefined` from render ([facebook#26349](facebook/react#26349)) //<Sebastian Silbermann>// - **[39d4b9365](facebook/react@39d4b9365 )**: [Internal tests] Close MessageChannel port to prevent leak ([facebook#26357](facebook/react#26357)) //<Andrew Clark>// - **[3706edb81](facebook/react@3706edb81 )**: [Float][Fizz]: Don't preload nomodule scripts ([facebook#26353](facebook/react#26353)) //<Josh Story>// - **[2b003a5cc](facebook/react@2b003a5cc )**: Split out ServerReferenceMetadata into Id and Bound Arguments ([facebook#26351](facebook/react#26351)) //<Sebastian Markbåge>// - **[62cd5af08](facebook/react@62cd5af08 )**: Codemod redundant async act scopes ([facebook#26350](facebook/react#26350)) //<Andrew Clark>// - **[037378202](facebook/react@037378202 )**: Internal `act`: Call scope function after an async gap ([facebook#26347](facebook/react#26347)) //<Andrew Clark>// - **[d8e49f2af](facebook/react@d8e49f2af )**: Use setTimeout to schedule work on the server in Edge environments ([facebook#26348](facebook/react#26348)) //<Sebastian Markbåge>// - **[83643778b](facebook/react@83643778b )**: Internal test helpers: Use Node's MessageChannel to queue task ([facebook#26345](facebook/react#26345)) //<Andrew Clark>// - **[44d380794](facebook/react@44d380794 )**: Move internalAct to internal-test-utils package ([facebook#26344](facebook/react#26344)) //<Andrew Clark>// - **[d81447304](facebook/react@d81447304 )**: [Internal API only] Delete non-awaited form of act ([facebook#26339](facebook/react#26339)) //<Andrew Clark>// - **[702fc984e](facebook/react@702fc984e )**: Codemod act -> await act (4/?) ([facebook#26338](facebook/react#26338)) //<Andrew Clark>// - **[9fb2469a6](facebook/react@9fb2469a6 )**: Restore definition of NativeMethods as an object for React Native ([facebook#26341](facebook/react#26341)) //<Rubén Norte>// - **[161f6ae42](facebook/react@161f6ae42 )**: Codemod act -> await act (3/?) ([facebook#26336](facebook/react#26336)) //<Andrew Clark>// - **[58605f798](facebook/react@58605f798 )**: Codemod act -> await act (2/?) ([facebook#26335](facebook/react#26335)) //<Andrew Clark>// - **[703c67560](facebook/react@703c67560 )**: Codemod act -> await act (1/?) ([facebook#26334](facebook/react#26334)) //<Andrew Clark>// - **[b380c2485](facebook/react@b380c2485 )**: Convert class equivlance tests to flushSync ([facebook#26333](facebook/react#26333)) //<Andrew Clark>// - **[8f812e75d](facebook/react@8f812e75d )**: Refactor ReactFabricHostComponent ([facebook#26323](facebook/react#26323)) //<Rubén Norte>// - **[978fae4b4](facebook/react@978fae4b4 )**: [Float][Fiber] implement a faster hydration match for hoistable elements ([facebook#26154](facebook/react#26154)) //<Josh Story>// - **[8a9f82ed5](facebook/react@8a9f82ed5 )**: [Float][Fizz][Fiber] - Do not hoist elements with `itemProp` & hydrate more tolerantly in hoist contexts ([facebook#26256](facebook/react#26256)) //<Josh Story>// - **[3cad3a54e](facebook/react@3cad3a54e )**: Use content hash for facebook-www builds ([facebook#26331](facebook/react#26331)) //<Jan Kassens>// - **[ba353a50a](facebook/react@ba353a50a )**: Build: make version in build artifacts match ([facebook#26329](facebook/react#26329)) //<Jan Kassens>// - **[6e1756a5a](facebook/react@6e1756a5a )**: Move suspended render logic to ensureRootIsScheduled ([facebook#26328](facebook/react#26328)) //<Andrew Clark>// - **[1528c5ccd](facebook/react@1528c5ccd )**: SchedulerMock.unstable_yieldValue -> SchedulerMock.log ([facebook#26312](facebook/react#26312)) //<Andrew Clark>// - **[4bbac04cd](facebook/react@4bbac04cd )**: Upgrade Flow to 0.201 ([facebook#26326](facebook/react#26326)) //<Jan Kassens>// - **[eb616a12f](facebook/react@eb616a12f )**: Extract duplicated methods in Fabric and the legacy renderer to a shared module ([facebook#26319](facebook/react#26319)) //<Rubén Norte>// - **[49f741046](facebook/react@49f741046 )**: Fix: Infinite act loop caused by wrong shouldYield ([facebook#26317](facebook/react#26317)) //<Andrew Clark>// - **[106ea1c58](facebook/react@106ea1c58 )**: Support Iterables in Flight ([facebook#26313](facebook/react#26313)) //<Sebastian Markbåge>// - **[f905da227](facebook/react@f905da227 )**: [Flight] Send server reference error chunks to the client ([facebook#26293](facebook/react#26293)) //<Hendrik Liebau>// - **[e0241b660](facebook/react@e0241b660 )**: Simplify Webpack References by encoding file path + export name as single id ([facebook#26300](facebook/react#26300)) //<Sebastian Markbåge>// - **[25685d8a9](facebook/react@25685d8a9 )**: Codemod tests to waitFor pattern (9/?) ([facebook#26309](facebook/react#26309)) //<Andrew Clark>// - **[64dde7082](facebook/react@64dde7082 )**: Codemod tests to waitFor pattern (8/?) ([facebook#26308](facebook/react#26308)) //<Andrew Clark>// - **[3cb5afb82](facebook/react@3cb5afb82 )**: Codemod tests to waitFor pattern (7/?) ([facebook#26307](facebook/react#26307)) //<Andrew Clark>// - **[e98695db9](facebook/react@e98695db9 )**: Codemod tests to waitFor pattern (6/?) ([facebook#26305](facebook/react#26305)) //<Andrew Clark>// - **[9a52cc8bc](facebook/react@9a52cc8bc )**: Convert ReactLazy-test to waitFor pattern ([facebook#26304](facebook/react#26304)) //<Andrew Clark>// - **[03462cfc7](facebook/react@03462cfc7 )**: [Fizz] External runtime: fix bug in processing existing elements ([facebook#26303](facebook/react#26303)) //<mofeiZ>// - **[faacefb4d](facebook/react@faacefb4d )**: Codemod tests to waitFor pattern (4/?) ([facebook#26302](facebook/react#26302)) //<Andrew Clark>// - **[06460b6fb](facebook/react@06460b6fb )**: Remove unnecessary (and incorrect) code for compatibility with Paper in the Fabric version of GlobalResponderHandler ([facebook#26290](facebook/react#26290)) //<Rubén Norte>// - **[ce8a72fd4](facebook/react@ce8a72fd4 )**: Codemod tests to waitFor pattern (2/?) ([facebook#26296](facebook/react#26296)) //<Andrew Clark>// - **[1f1f8eb55](facebook/react@1f1f8eb55 )**: [Float][Fizz][Fiber]: Refactor <style> Resource implementation to group on flush ([facebook#26280](facebook/react#26280)) //<Josh Story>// - **[5c633a48f](facebook/react@5c633a48f )**: Add back accidentally deleted test comments ([facebook#26294](facebook/react#26294)) //<Andrew Clark>// - **[b72ed698f](facebook/react@b72ed698f )**: Fixed incorrect value returned as public instance from reconciler ([facebook#26283](facebook/react#26283)) //<Rubén Norte>// - **[25a8b9735](facebook/react@25a8b9735 )**: Codemod tests to waitFor pattern (1/?) ([facebook#26288](facebook/react#26288)) //<Andrew Clark>// - **[e52446733](facebook/react@e52446733 )**: New internal testing helpers: waitFor, waitForAll, waitForPaint ([facebook#26285](facebook/react#26285)) //<Andrew Clark>// - **[d49e0e0be](facebook/react@d49e0e0be )**: Removed unused imperative events implementation from React Native renderer ([facebook#26282](facebook/react#26282)) //<Rubén Norte>// - **[41110021f](facebook/react@41110021f )**: Fix: Selective hydration causing incorrect thenable type passed to DevTools ([facebook#26275](facebook/react#26275)) //<Andrew Clark>// - **[67a61d5bd](facebook/react@67a61d5bd )**: [Flight Fixture] Show SSR Support with CSS ([facebook#26263](facebook/react#26263)) //<Sebastian Markbåge>// - **[40755c01a](facebook/react@40755c01a )**: [Flight Fixture] Proxy requests through the global server instead of directly ([facebook#26257](facebook/react#26257)) //<Sebastian Markbåge>// - **[b2ae9ddb3](facebook/react@b2ae9ddb3 )**: Cleanup enableSyncDefaultUpdate flag ([facebook#26236](facebook/react#26236)) //<Jan Kassens>// - **[6ff1733e6](facebook/react@6ff1733e6 )**: [Float][Fizz][Fiber] support type for ReactDOM.preload() options ([facebook#26239](facebook/react#26239)) //<Josh Story>// - **[1173a17e6](facebook/react@1173a17e6 )**: [Float][Fizz][Fiber] implement preconnect and prefetchDNS float methods ([facebook#26237](facebook/react#26237)) //<Josh Story>// - **[a8f971b7a](facebook/react@a8f971b7a )**: Switch to mount dispatcher after use() when needed ([facebook#26232](facebook/react#26232)) //<Sophie Alpert>// - **[96cdeaf89](facebook/react@96cdeaf89 )**: [Fizz Node] Fix null bytes written at text chunk boundaries ([facebook#26228](facebook/react#26228)) //<Sophie Alpert>// - **[c04b18070](facebook/react@c04b18070 )**: Remove eventTime field from class Update type ([facebook#26219](facebook/react#26219)) //<Andrew Clark>// - **[60144a04d](facebook/react@60144a04d )**: Split out Edge and Node implementations of the Flight Client ([facebook#26187](facebook/react#26187)) //<Sebastian Markbåge>// - **[70b0bbda7](facebook/react@70b0bbda7 )**: [fizz][external-runtime] Fix: process mutation records before disconnecting ([facebook#26169](facebook/react#26169)) //<mofeiZ>// - **[c7967b194](facebook/react@c7967b194 )**: Distribute bundles more evenly into CI shards ([facebook#26208](facebook/react#26208)) //<Sebastian Silbermann>// - **[bb1e3d0e1](facebook/react@bb1e3d0e1 )**: Fail yarn build if any bundle fails to build ([facebook#26207](facebook/react#26207)) //<Sebastian Silbermann>// - **[62e6c4612](facebook/react@62e6c4612 )**: Move Mutation/Persistence fork inline into the functions ([facebook#26206](facebook/react#26206)) //<Sebastian Markbåge>// - **[80cf4a099](facebook/react@80cf4a099 )**: Update Closure Compiler ([facebook#26205](facebook/react#26205)) //<Sebastian Markbåge>// - **[6b6d0617e](facebook/react@6b6d0617e )**: Update Rollup and related plugins to their most recent versions ([facebook#24916](facebook/react#24916)) //<Glenn 'devalias' Grant>// - **[bc38a3dfa](facebook/react@bc38a3dfa )**: Update rollup config to use moduleSideEffects ([facebook#26199](facebook/react#26199)) //<Ming Ye>// - **[c9d9f524d](facebook/react@c9d9f524d )**: Make enableCustomElementPropertySupport a dynamic flag in www build ([facebook#26194](facebook/react#26194)) //<Andrew Clark>// - **[189f70e17](facebook/react@189f70e17 )**: Create a bunch of custom webpack vs unbundled node bundles ([facebook#26172](facebook/react#26172)) //<Sebastian Markbåge>// - **[fbf3bc315](facebook/react@fbf3bc315 )**: Add `scale` as a unitless property ([facebook#25601](facebook/react#25601)) //<Jonny Burger>// Changelog: [General][Changed] - React Native sync for revisions fccf3a9...3554c88 jest_e2e[run_all_tests] bypass-github-export-checks @public Fixes tests for current React version. Reviewed By: sammy-SC Differential Revision: D44216371 fbshipit-source-id: a569c9aeaf2d96d150219e148f06dcde9ba6f7cd
Summary: This sync includes the following changes: - **[3554c8852](facebook/react@3554c8852 )**: Clean interface for public instances between React and React Native ([facebook#26416](facebook/react#26416)) //<Rubén Norte>// - **[db281b3d9](facebook/react@db281b3d9 )**: Feature: Suspend commit without blocking render ([facebook#26398](facebook/react#26398)) //<Andrew Clark>// - **[55308554e](facebook/react@55308554e )**: [www] enable enableFilterEmptyStringAttributesDOM flag ([facebook#26410](facebook/react#26410)) //<Jan Kassens>// - **[163d86e19](facebook/react@163d86e19 )**: Updated comment message ([facebook#26158](facebook/react#26158)) //<Ibrahim Amin>// - **[108aed083](facebook/react@108aed083 )**: Fix use of stale props in Fabric events ([facebook#26408](facebook/react#26408)) //<Rubén Norte>// - **[8fa41ffa2](facebook/react@8fa41ffa2 )**: Don't "fix up" mismatched text content with suppressedHydrationWarning ([facebook#26391](facebook/react#26391)) //<Sebastian Markbåge>// - **[05777ffb0](facebook/react@05777ffb0 )**: Setting transition pending flag shouldn't be part of a surrounding transition ([facebook#26243](facebook/react#26243)) //<Sophie Alpert>// - **[99aa082be](facebook/react@99aa082be )**: Remove unstable_flushControlled ([facebook#26397](facebook/react#26397)) //<Jan Kassens>// - **[47cf4e578](facebook/react@47cf4e578 )**: Restore some guards in ReactFabricGlobalResponderHandler after refactor ([facebook#26394](facebook/react#26394)) //<Rubén Norte>// - **[cfc1274e3](facebook/react@cfc1274e3 )**: Disable IE innerHTML workaround behind a flag ([facebook#26390](facebook/react#26390)) //<Sebastian Markbåge>// - **[a57f40d83](facebook/react@a57f40d83 )**: Undo dependency injection of batching ([facebook#26389](facebook/react#26389)) //<Sebastian Markbåge>// - **[d310d654a](facebook/react@d310d654a )**: Avoid meta programming to initialize functions in module scope ([facebook#26388](facebook/react#26388)) //<Sebastian Markbåge>// - **[21aee59e4](facebook/react@21aee59e4 )**: Delete unused DOM files ([facebook#26387](facebook/react#26387)) //<Sebastian Markbåge>// - **[6bd53a5bd](facebook/react@6bd53a5bd )**: Remove FeatureFlags fork for `react-dom/unstable_testing` ([facebook#26383](facebook/react#26383)) //<Sebastian Markbåge>// - **[2788d0d8d](facebook/react@2788d0d8d )**: Allow empty string to be passed to formAction ([facebook#26379](facebook/react#26379)) //<Sebastian Markbåge>// - **[f828bad38](facebook/react@f828bad38 )**: Extracted definition and access to public instances to a separate module in Fabric ([facebook#26321](facebook/react#26321)) //<Rubén Norte>// - **[131768166](facebook/react@131768166 )**: Support Context as renderable node ([facebook#25641](facebook/react#25641)) //<Andrew Clark>// - **[d4f58c3b8](facebook/react@d4f58c3b8 )**: Support Promise as a renderable node ([facebook#25634](facebook/react#25634)) //<Andrew Clark>// - **[633461486](facebook/react@633461486 )**: Add disableLegacyContext test gates where needed ([facebook#26371](facebook/react#26371)) //<Andrew Clark>// - **[432ffc9d0](facebook/react@432ffc9d0 )**: Convert more Scheduler.unstable_flushAll in tests to new test utils ([facebook#26369](facebook/react#26369)) //<Tianyu Yao>// - **[69fd78fe3](facebook/react@69fd78fe3 )**: Update Float tests to check for specific errors ([facebook#26367](facebook/react#26367)) //<Andrew Clark>// - **[93c10dfa6](facebook/react@93c10dfa6 )**: flushSync: Exhaust queue even if something throws ([facebook#26366](facebook/react#26366)) //<Andrew Clark>// - **[be353d251](facebook/react@be353d251 )**: [Flight Reply] Add undefined and Iterable Support ([facebook#26365](facebook/react#26365)) //<Sebastian Markbåge>// - **[ef8bdbecb](facebook/react@ef8bdbecb )**: [Flight Reply] Add Reply Encoding ([facebook#26360](facebook/react#26360)) //<Sebastian Markbåge>// - **[a8875eab7](facebook/react@a8875eab7 )**: Update more tests to not rely on sync queuing ([facebook#26358](facebook/react#26358)) //<Andrew Clark>// - **[d1ad984db](facebook/react@d1ad984db )**: [Flight] Add support for returning `undefined` from render ([facebook#26349](facebook/react#26349)) //<Sebastian Silbermann>// - **[39d4b9365](facebook/react@39d4b9365 )**: [Internal tests] Close MessageChannel port to prevent leak ([facebook#26357](facebook/react#26357)) //<Andrew Clark>// - **[3706edb81](facebook/react@3706edb81 )**: [Float][Fizz]: Don't preload nomodule scripts ([facebook#26353](facebook/react#26353)) //<Josh Story>// - **[2b003a5cc](facebook/react@2b003a5cc )**: Split out ServerReferenceMetadata into Id and Bound Arguments ([facebook#26351](facebook/react#26351)) //<Sebastian Markbåge>// - **[62cd5af08](facebook/react@62cd5af08 )**: Codemod redundant async act scopes ([facebook#26350](facebook/react#26350)) //<Andrew Clark>// - **[037378202](facebook/react@037378202 )**: Internal `act`: Call scope function after an async gap ([facebook#26347](facebook/react#26347)) //<Andrew Clark>// - **[d8e49f2af](facebook/react@d8e49f2af )**: Use setTimeout to schedule work on the server in Edge environments ([facebook#26348](facebook/react#26348)) //<Sebastian Markbåge>// - **[83643778b](facebook/react@83643778b )**: Internal test helpers: Use Node's MessageChannel to queue task ([facebook#26345](facebook/react#26345)) //<Andrew Clark>// - **[44d380794](facebook/react@44d380794 )**: Move internalAct to internal-test-utils package ([facebook#26344](facebook/react#26344)) //<Andrew Clark>// - **[d81447304](facebook/react@d81447304 )**: [Internal API only] Delete non-awaited form of act ([facebook#26339](facebook/react#26339)) //<Andrew Clark>// - **[702fc984e](facebook/react@702fc984e )**: Codemod act -> await act (4/?) ([facebook#26338](facebook/react#26338)) //<Andrew Clark>// - **[9fb2469a6](facebook/react@9fb2469a6 )**: Restore definition of NativeMethods as an object for React Native ([facebook#26341](facebook/react#26341)) //<Rubén Norte>// - **[161f6ae42](facebook/react@161f6ae42 )**: Codemod act -> await act (3/?) ([facebook#26336](facebook/react#26336)) //<Andrew Clark>// - **[58605f798](facebook/react@58605f798 )**: Codemod act -> await act (2/?) ([facebook#26335](facebook/react#26335)) //<Andrew Clark>// - **[703c67560](facebook/react@703c67560 )**: Codemod act -> await act (1/?) ([facebook#26334](facebook/react#26334)) //<Andrew Clark>// - **[b380c2485](facebook/react@b380c2485 )**: Convert class equivlance tests to flushSync ([facebook#26333](facebook/react#26333)) //<Andrew Clark>// - **[8f812e75d](facebook/react@8f812e75d )**: Refactor ReactFabricHostComponent ([facebook#26323](facebook/react#26323)) //<Rubén Norte>// - **[978fae4b4](facebook/react@978fae4b4 )**: [Float][Fiber] implement a faster hydration match for hoistable elements ([facebook#26154](facebook/react#26154)) //<Josh Story>// - **[8a9f82ed5](facebook/react@8a9f82ed5 )**: [Float][Fizz][Fiber] - Do not hoist elements with `itemProp` & hydrate more tolerantly in hoist contexts ([facebook#26256](facebook/react#26256)) //<Josh Story>// - **[3cad3a54e](facebook/react@3cad3a54e )**: Use content hash for facebook-www builds ([facebook#26331](facebook/react#26331)) //<Jan Kassens>// - **[ba353a50a](facebook/react@ba353a50a )**: Build: make version in build artifacts match ([facebook#26329](facebook/react#26329)) //<Jan Kassens>// - **[6e1756a5a](facebook/react@6e1756a5a )**: Move suspended render logic to ensureRootIsScheduled ([facebook#26328](facebook/react#26328)) //<Andrew Clark>// - **[1528c5ccd](facebook/react@1528c5ccd )**: SchedulerMock.unstable_yieldValue -> SchedulerMock.log ([facebook#26312](facebook/react#26312)) //<Andrew Clark>// - **[4bbac04cd](facebook/react@4bbac04cd )**: Upgrade Flow to 0.201 ([facebook#26326](facebook/react#26326)) //<Jan Kassens>// - **[eb616a12f](facebook/react@eb616a12f )**: Extract duplicated methods in Fabric and the legacy renderer to a shared module ([facebook#26319](facebook/react#26319)) //<Rubén Norte>// - **[49f741046](facebook/react@49f741046 )**: Fix: Infinite act loop caused by wrong shouldYield ([facebook#26317](facebook/react#26317)) //<Andrew Clark>// - **[106ea1c58](facebook/react@106ea1c58 )**: Support Iterables in Flight ([facebook#26313](facebook/react#26313)) //<Sebastian Markbåge>// - **[f905da227](facebook/react@f905da227 )**: [Flight] Send server reference error chunks to the client ([facebook#26293](facebook/react#26293)) //<Hendrik Liebau>// - **[e0241b660](facebook/react@e0241b660 )**: Simplify Webpack References by encoding file path + export name as single id ([facebook#26300](facebook/react#26300)) //<Sebastian Markbåge>// - **[25685d8a9](facebook/react@25685d8a9 )**: Codemod tests to waitFor pattern (9/?) ([facebook#26309](facebook/react#26309)) //<Andrew Clark>// - **[64dde7082](facebook/react@64dde7082 )**: Codemod tests to waitFor pattern (8/?) ([facebook#26308](facebook/react#26308)) //<Andrew Clark>// - **[3cb5afb82](facebook/react@3cb5afb82 )**: Codemod tests to waitFor pattern (7/?) ([facebook#26307](facebook/react#26307)) //<Andrew Clark>// - **[e98695db9](facebook/react@e98695db9 )**: Codemod tests to waitFor pattern (6/?) ([facebook#26305](facebook/react#26305)) //<Andrew Clark>// - **[9a52cc8bc](facebook/react@9a52cc8bc )**: Convert ReactLazy-test to waitFor pattern ([facebook#26304](facebook/react#26304)) //<Andrew Clark>// - **[03462cfc7](facebook/react@03462cfc7 )**: [Fizz] External runtime: fix bug in processing existing elements ([facebook#26303](facebook/react#26303)) //<mofeiZ>// - **[faacefb4d](facebook/react@faacefb4d )**: Codemod tests to waitFor pattern (4/?) ([facebook#26302](facebook/react#26302)) //<Andrew Clark>// - **[06460b6fb](facebook/react@06460b6fb )**: Remove unnecessary (and incorrect) code for compatibility with Paper in the Fabric version of GlobalResponderHandler ([facebook#26290](facebook/react#26290)) //<Rubén Norte>// - **[ce8a72fd4](facebook/react@ce8a72fd4 )**: Codemod tests to waitFor pattern (2/?) ([facebook#26296](facebook/react#26296)) //<Andrew Clark>// - **[1f1f8eb55](facebook/react@1f1f8eb55 )**: [Float][Fizz][Fiber]: Refactor <style> Resource implementation to group on flush ([facebook#26280](facebook/react#26280)) //<Josh Story>// - **[5c633a48f](facebook/react@5c633a48f )**: Add back accidentally deleted test comments ([facebook#26294](facebook/react#26294)) //<Andrew Clark>// - **[b72ed698f](facebook/react@b72ed698f )**: Fixed incorrect value returned as public instance from reconciler ([facebook#26283](facebook/react#26283)) //<Rubén Norte>// - **[25a8b9735](facebook/react@25a8b9735 )**: Codemod tests to waitFor pattern (1/?) ([facebook#26288](facebook/react#26288)) //<Andrew Clark>// - **[e52446733](facebook/react@e52446733 )**: New internal testing helpers: waitFor, waitForAll, waitForPaint ([facebook#26285](facebook/react#26285)) //<Andrew Clark>// - **[d49e0e0be](facebook/react@d49e0e0be )**: Removed unused imperative events implementation from React Native renderer ([facebook#26282](facebook/react#26282)) //<Rubén Norte>// - **[41110021f](facebook/react@41110021f )**: Fix: Selective hydration causing incorrect thenable type passed to DevTools ([facebook#26275](facebook/react#26275)) //<Andrew Clark>// - **[67a61d5bd](facebook/react@67a61d5bd )**: [Flight Fixture] Show SSR Support with CSS ([facebook#26263](facebook/react#26263)) //<Sebastian Markbåge>// - **[40755c01a](facebook/react@40755c01a )**: [Flight Fixture] Proxy requests through the global server instead of directly ([facebook#26257](facebook/react#26257)) //<Sebastian Markbåge>// - **[b2ae9ddb3](facebook/react@b2ae9ddb3 )**: Cleanup enableSyncDefaultUpdate flag ([facebook#26236](facebook/react#26236)) //<Jan Kassens>// - **[6ff1733e6](facebook/react@6ff1733e6 )**: [Float][Fizz][Fiber] support type for ReactDOM.preload() options ([facebook#26239](facebook/react#26239)) //<Josh Story>// - **[1173a17e6](facebook/react@1173a17e6 )**: [Float][Fizz][Fiber] implement preconnect and prefetchDNS float methods ([facebook#26237](facebook/react#26237)) //<Josh Story>// - **[a8f971b7a](facebook/react@a8f971b7a )**: Switch to mount dispatcher after use() when needed ([facebook#26232](facebook/react#26232)) //<Sophie Alpert>// - **[96cdeaf89](facebook/react@96cdeaf89 )**: [Fizz Node] Fix null bytes written at text chunk boundaries ([facebook#26228](facebook/react#26228)) //<Sophie Alpert>// - **[c04b18070](facebook/react@c04b18070 )**: Remove eventTime field from class Update type ([facebook#26219](facebook/react#26219)) //<Andrew Clark>// - **[60144a04d](facebook/react@60144a04d )**: Split out Edge and Node implementations of the Flight Client ([facebook#26187](facebook/react#26187)) //<Sebastian Markbåge>// - **[70b0bbda7](facebook/react@70b0bbda7 )**: [fizz][external-runtime] Fix: process mutation records before disconnecting ([facebook#26169](facebook/react#26169)) //<mofeiZ>// - **[c7967b194](facebook/react@c7967b194 )**: Distribute bundles more evenly into CI shards ([facebook#26208](facebook/react#26208)) //<Sebastian Silbermann>// - **[bb1e3d0e1](facebook/react@bb1e3d0e1 )**: Fail yarn build if any bundle fails to build ([facebook#26207](facebook/react#26207)) //<Sebastian Silbermann>// - **[62e6c4612](facebook/react@62e6c4612 )**: Move Mutation/Persistence fork inline into the functions ([facebook#26206](facebook/react#26206)) //<Sebastian Markbåge>// - **[80cf4a099](facebook/react@80cf4a099 )**: Update Closure Compiler ([facebook#26205](facebook/react#26205)) //<Sebastian Markbåge>// - **[6b6d0617e](facebook/react@6b6d0617e )**: Update Rollup and related plugins to their most recent versions ([facebook#24916](facebook/react#24916)) //<Glenn 'devalias' Grant>// - **[bc38a3dfa](facebook/react@bc38a3dfa )**: Update rollup config to use moduleSideEffects ([facebook#26199](facebook/react#26199)) //<Ming Ye>// - **[c9d9f524d](facebook/react@c9d9f524d )**: Make enableCustomElementPropertySupport a dynamic flag in www build ([facebook#26194](facebook/react#26194)) //<Andrew Clark>// - **[189f70e17](facebook/react@189f70e17 )**: Create a bunch of custom webpack vs unbundled node bundles ([facebook#26172](facebook/react#26172)) //<Sebastian Markbåge>// - **[fbf3bc315](facebook/react@fbf3bc315 )**: Add `scale` as a unitless property ([facebook#25601](facebook/react#25601)) //<Jonny Burger>// Changelog: [General][Changed] - React Native sync for revisions fccf3a9...3554c88 jest_e2e[run_all_tests] bypass-github-export-checks @public Fixes tests for current React version. Reviewed By: sammy-SC Differential Revision: D44216371 fbshipit-source-id: a569c9aeaf2d96d150219e148f06dcde9ba6f7cd
Summary
We had to revert the last React sync to React Native because we saw issues with Responder events using stale event handlers instead of recent versions.
I reviewed the merged PRs and realized the problem was in the refactor I did in #26321. In that PR, we moved
currentProps
fromcanonical
, which is a singleton referenced by all versions of the same fiber, to the fiber itself. This is causing the staleness we observed in events.This PR does a partial revert of the refactor in #26321, bringing back the
canonical
object but movingpublicInstance
to one of its fields, instead of being thecanonical
object itself.How did you test this change?
Existing unit tests continue working (I didn't manage to get a repro using the test renderer).
I manually tested this change in Meta infra and saw the problem was fixed.