Don't warn about concurrently rendering contexts if we finished rendering#22797
Conversation
| } else { | ||
| ReactNoop.render(<App value={1} />); | ||
| } | ||
| expect(Scheduler).toFlushAndYield(['Foo', 'Foo']); |
There was a problem hiding this comment.
The test above ("warns if multiple renderers concurrently render the same context") did not commit here. Without committing I would expect the warning. But here we actually commit so I don't think we should warn.
|
Comparing: 4cd788a...72bf322 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) |
bdf6797 to
e9bd500
Compare
| if (isPrimaryRenderer) { | ||
| context._currentValue = currentValue; | ||
| if (__DEV__) { | ||
| context._currentRenderer = null; |
There was a problem hiding this comment.
What I find odd is that ReactFizzNewContext does handle the _currentRenderer in popProvider but does not reset it but set it it to rendererSigil i.e. push and pop do the same things to _currentRenderer:
Maybe we should actually restore _currentRenderer and not just reset it?
There was a problem hiding this comment.
Maybe we should actually restore _currentRenderer and not just reset it?
Implemented in 04c19a8 (#22797)
294a975 to
04c19a8
Compare
| providerFiber: Fiber, | ||
| ): void { | ||
| const currentValue = valueCursor.current; | ||
| pop(valueCursor, providerFiber); |
There was a problem hiding this comment.
Moved down since we push(value) -> push(rendererN) so we need to pop(rendererN) -> pop(value)
04c19a8 to
42f964f
Compare
42f964f to
c9bf660
Compare
c9bf660 to
72bf322
Compare
72bf322 to
2ab9b80
Compare
gnoff
left a comment
There was a problem hiding this comment.
This seems correct. There is an equivalent implementation for ReactFizzNewContext which probably should get the same treatment
…ring (#22797) Closes #22796 DiffTrain build for [555ece0](555ece0) [View git log for this commit](https://github.com/facebook/react/commits/555ece0cd14779abd5a1fc50f71625f9ada42bef)
Summary: This sync includes the following changes: - **[48b687f](react/react@48b687fc9 )**: [trusted types][www] Add enableTrustedTypesIntegration flag back in ([#26016](react/react#26016)) //<an onion>// - **[9b1423c](react/react@9b1423cc0 )**: Revert "Hold host functions in var" ([#26079](react/react#26079)) //<Samuel Susla>// - **[ce09ace](react/react@ce09ace9a )**: Improve Error Messages when Access Client References ([#26059](react/react#26059)) //<Sebastian Markbåge>// - **[0652bdb](react/react@0652bdbd1 )**: Add flow types to Maps in ReactNativeViewConfigRegistry.js ([#26064](react/react#26064)) //<Samuel Susla>// - **[ee85098](react/react@ee8509801 )**: [cleanup] remove deletedTreeCleanUpLevel feature flag ([#25529](react/react#25529)) //<Jan Kassens>// - **[0e31dd0](react/react@0e31dd028 )**: Remove findDOMNode www shim ([#25998](react/react#25998)) //<Jan Kassens>// - **[379dd74](react/react@379dd741e )**: [www] set enableTrustedTypesIntegration to false ([#25997](react/react#25997)) //<Jan Kassens>// - **[555ece0](react/react@555ece0cd )**: Don't warn about concurrently rendering contexts if we finished rendering ([#22797](react/react#22797)) //<Sebastian Silbermann>// - **[0fce6bb](react/react@0fce6bb49 )**: [cleanup] remove feature flags warnAboutDefaultPropsOnFunctionComponents and warnAboutStringRefs ([#25980](react/react#25980)) //<Jan Kassens>// - **[7002a67](react/react@7002a6743 )**: [cleanup] remove unused values from ReactFeatureFlags.www-dynamic ([#25575](react/react#25575)) //<Jan Kassens>// - **[a48e54f](react/react@a48e54f2b )**: [cleanup] remove old feature flag warnAboutDeprecatedLifecycles ([#25978](react/react#25978)) //<Jan Kassens>// - **[0f4a835](react/react@0f4a83596 )**: Remove duplicate JSResourceReferenceImpl mock ([#25976](react/react#25976)) //<Jan Kassens>// - **[c491316](react/react@c49131669 )**: Remove unused Flow suppressions ([#25977](react/react#25977)) //<Jan Kassens>// - **[afe6521](react/react@afe6521e1 )**: Refactor: remove useless parameter ([#25923](react/react#25923)) //<Chris>// - **[34464fb](react/react@34464fb16 )**: Upgrade to Flow 0.196.3 ([#25974](react/react#25974)) //<Jan Kassens>// - **[e2424f3](react/react@e2424f33b )**: [flow] enable exact_empty_objects ([#25973](react/react#25973)) //<Jan Kassens>// - **[0b4f443](react/react@0b4f44302 )**: [flow] enable enforce_local_inference_annotations ([#25921](react/react#25921)) //<Jan Kassens>// - **[0b97441](react/react@0b974418c )**: [Fizz] Fork Fizz instruction set for inline script and external runtime ([#25862](react/react#25862)) //<mofeiZ>// - **[5379b61](react/react@5379b6123 )**: Batch sync, default and continuous lanes ([#25700](react/react#25700)) //<Tianyu Yao>// - **[bbf4d22](react/react@bbf4d2211 )**: Update import for babel-code-frame in build script ([#25963](react/react#25963)) //<Ming Ye>// - **[b83baf6](react/react@b83baf63f )**: Transform updates to support Flow this annotation syntax ([#25918](react/react#25918)) //<Jan Kassens>// - **[c2d6552](react/react@c2d655207 )**: Unify `use` and `renderDidSuspendDelayIfPossible` implementations ([#25922](react/react#25922)) //<Andrew Clark>// - **[48274a4](react/react@48274a43a )**: Remove vestigial Suspense batching logic ([#25861](react/react#25861)) //<Andrew Clark>// - **[de7d1c9](react/react@de7d1c907 )**: Add `fetchPriority` to `<img>` and `<link>` ([#25927](react/react#25927)) //<Steven>// - **[81d4ee9](react/react@81d4ee9ca )**: reconciler docs: fix small typo - "mode" (instead of "node") ([#25863](react/react#25863)) //<satelllte>// - **[5fcf1a4](react/react@5fcf1a4b4 )**: Bugfix: Synchronous ping during render phase sometimes unwinds the stack, leading to crash ([#25851](react/react#25851)) //<Andrew Clark>// - **[2b1fb91](react/react@2b1fb91a5 )**: ESLint upgrade to use hermes-eslint ([#25915](react/react#25915)) //<Jan Kassens>// - **[fabef7a](react/react@fabef7a6b )**: Resubmit Add HydrationSyncLane ([#25878](react/react#25878)) //<Tianyu Yao>// - **[7efa9e5](react/react@7efa9e597 )**: Fix unwinding context during selective hydration ([#25876](react/react#25876)) //<Tianyu Yao>// - **[84a0a17](react/react@84a0a171e )**: Rename experimental useEvent to useEffectEvent ([#25881](react/react#25881)) //<Sebastian Markbåge>// - **[4dda96a](react/react@4dda96a40 )**: [react-www] remove forked bundle ([#25866](react/react#25866)) //<Jan Kassens>// - **[9c09c1c](react/react@9c09c1cd6 )**: Revert "Fork ReactDOMSharedInternals for www ([#25791](react/react#25791))" ([#25864](react/react#25864)) //<lauren>// - **[996e4c0](react/react@996e4c0d5 )**: Offscreen add attach ([#25603](react/react#25603)) //<Samuel Susla>// - **[b14d7fa](react/react@b14d7fa4b )**: Add support for setNativeProps to Fabric ([#25737](react/react#25737)) //<Samuel Susla>// - **[8196872](react/react@819687279 )**: [Float] Fix typo in ReactDOMResourceValidation.js ([#25798](react/react#25798)) //<Ikko Ashimine>// - **[5dfc485](react/react@5dfc485f6 )**: fix tests for when float is off ([#25839](react/react#25839)) //<Josh Story>// - **[bfcbf33](react/react@bfcbf3306 )**: toString children of title ([#25838](react/react#25838)) //<Sebastian Markbåge>// - **[d4bc16a](react/react@d4bc16a7d )**: Revert "[react-www] remove forked bundle" ([#25837](react/react#25837)) //<Ricky>// - **[d69b2cf](react/react@d69b2cf82 )**: [bug fix] revert values in ReactFiberFlags to keep consistency for devtools ([#25832](react/react#25832)) //<Mengdi Chen>// - **[645ae26](react/react@645ae2686 )**: [react-www] remove forked bundle ([#25831](react/react#25831)) //<Jan Kassens>// - **[d807eb5](react/react@d807eb52c )**: Revert recent hydration changes ([#25812](react/react#25812)) //<Andrew Clark>// - **[2ccfa65](react/react@2ccfa657d )**: Fork ReactDOMSharedInternals for www ([#25791](react/react#25791)) //<lauren>// - **[f0534ae](react/react@f0534ae94 )**: Avoid replaying SelectiveHydrationException in dev ([#25754](react/react#25754)) //<Tianyu Yao>// - **[7fab379](react/react@7fab379d8 )**: fix link to ReactDOMHostconfig in reconciler docs ([#25788](react/react#25788)) //<Dmitry>// - **[500c8aa](react/react@500c8aa08 )**: Add component name to StrictMode error message ([#25718](react/react#25718)) //<Samuel Susla>// - **[353c302](react/react@353c30252 )**: Hold host functions in var ([#25741](react/react#25741)) //<Samuel Susla>// Changelog: [General][Changed] - React Native sync for revisions 17f6912...48b687f jest_e2e[run_all_tests] Reviewed By: rubennorte Differential Revision: D42855483 fbshipit-source-id: c244a595bb2d490a23b333c1b16d04a459ec94fc
|
I was expecting this to land in 18.3 or 19 but I'm still getting the warnings... Is that expected? |
|
Same here, here's a reproduction repo https://stackoverflow.com/q/78512399/4957288 Also, hii @iammerrick 😱 ❤️ Long time no see, how are you??? Never expected React warnings to be bringing people together like that 😂 |
|
18.3 only included deprecation warnings and no other changes such as this. It will be part of React 19 though. |
Summary
Closes #22796
How did you test this change?
[ ] codesandbox of linked issueCan't test codesandbox sincereact-test-rendererisn't built by Codesandbox CI. Though I tested it locally by addingcontext._currentRenderer2 = null;topopProviderinreact-test-renderer.development.js.