Allow async blocks in to(Error|Warn)Dev#25338
Conversation
| }); | ||
| }).toWarnDev( | ||
| ReactFeatureFlags.enableUseRefAccessWarning | ||
| ? ['Warning: App: Unsafe read of a mutable value during render.'] |
There was a problem hiding this comment.
Intended or should this be a TODO?
|
Comparing: 15557fa...28a97ad 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) |
feadce1 to
a620062
Compare
| typeof result.then === 'function' | ||
| ) { | ||
| // `act` returns a thenable that can't be chained. | ||
| // Once `act(async () => {}).then(() => {}).then(() => {})` works |
There was a problem hiding this comment.
Should act() be chainable?
gnoff
left a comment
There was a problem hiding this comment.
fwiw I think this is a great change. maybe we should get someone else to also weigh in thought before merging?
Definitely. Code is a bit of a mess due to the nature of the change. So ideally either there is an existing pattern I should adhere to or others are fine with it. Also have some questions that are revealed by this change that I'd like to touch upon (chainable act, uSES warnings). |
a620062 to
28a97ad
Compare
|
Ok to merge as agreed during sync. |
Summary: Three problems popped up during the sync: - react/react@07f46ecf2 breaks breaks tests - react/react@6fb8133ed breaks fbsource tests. I added a workaround and created a test for the team that owns the test. - https://fb.workplace.com/groups/flowlang/permalink/1198137807458547/ enables local type interference in fbsource but not in github React repo and some code breaks. Addressed in react/react#26064 This sync includes the following changes: - **[17f6912](react/react@17f6912a4 )**: Add flow types to ReactFiberHooks ([#25752](react/react#25752)) //<Samuel Susla>// - **[f101c2d](react/react@f101c2d0d )**: Remove Reconciler fork (2/2) ([#25775](react/react#25775)) //<Jan Kassens>// - **[420f0b7](react/react@420f0b7fa )**: Remove Reconciler fork (1/2) ([#25774](react/react#25774)) //<Jan Kassens>// - **[3ba7add](react/react@3ba7add60 )**: Allow async blocks in `to(Error|Warn)Dev` ([#25338](react/react#25338)) //<Sebastian Silbermann>// - **[fa11bd6](react/react@fa11bd6ec )**: [ServerRenderer] Add option to send instructions as data attributes ([#25437](react/react#25437)) //<mofeiZ>// - **[e982254](react/react@e98225485 )**: Add ref cleanup function ([#25686](react/react#25686)) //<Samuel Susla>// - **[15557fa](react/react@15557fa67 )**: [Fix] properly track `useId` use in StrictMode in development ([#25713](react/react#25713)) //<Josh Story>// - **[8a23def](react/react@8a23def32 )**: Resubmit Add HydrationSyncLane ([#25711](react/react#25711)) //<Tianyu Yao>// - **[2655c93](react/react@2655c9354 )**: Fizz Browser: fix precomputed chunk being cleared on Node 18 ([#25645](react/react#25645)) //<Jimmy Lai>// - **[c08d8b8](react/react@c08d8b804 )**: Revert "Add SyncHydrationLane" ([#25708](react/react#25708)) //<Tianyu Yao>// - **[56ffca8](react/react@56ffca8b9 )**: Add Bun streaming server renderer ([#25597](react/react#25597)) //<Colin McDonnell>// - **[f31005d](react/react@f31005d6a )**: Add SyncHydrationLane ([#25698](react/react#25698)) //<Tianyu Yao>// - **[f284d9f](react/react@f284d9faf )**: Track ThenableState alongside other hooks //<Andrew Clark>// - **[6b4c031](react/react@6b4c0314e )**: Check thenable instead of thenableState //<Andrew Clark>// - **[33e3d28](react/react@33e3d2878 )**: Reuse hooks when replaying a suspended component //<Andrew Clark>// - **[4387d75](react/react@4387d752d )**: Allow more hooks to be added when replaying mount //<Andrew Clark>// - **[5eb78d0](react/react@5eb78d0a0 )**: Pass ThenableState to replaySuspendedUnitOfWork //<Andrew Clark>// - **[4a2d86b](react/react@4a2d86bdd )**: Don't reset work loop until stack is unwound //<Andrew Clark>// - **[9dfbd9f](react/react@9dfbd9fa9 )**: use: Don't suspend if there are pending updates //<Andrew Clark>// - **[44c4e6f](react/react@44c4e6f4d )**: Force unwind work loop during selective hydration ([#25695](react/react#25695)) //<Andrew Clark>// - **[7b17f7b](react/react@7b17f7bbf )**: Enable warning for defaultProps on function components for everyone ([#25699](react/react#25699)) //<Sebastian Markbåge>// - **[6fb8133](react/react@6fb8133ed )**: Turn on string ref deprecation warning for everybody (not codemoddable) ([#25383](react/react#25383)) //<Sebastian Silbermann>// - **[07f46ec](react/react@07f46ecf2 )**: Turn on key spread warning in jsx-runtime for everyone ([#25697](react/react#25697)) //<Sebastian Markbåge>// - **[d65b88d](react/react@d65b88d03 )**: Eagerly initialize an mutable object for instance.refs ([#25696](react/react#25696)) //<Sebastian Markbåge>// - **[c343f80](react/react@c343f8025 )**: [react-float] feature detect getRootNode ([#25689](react/react#25689)) //<Jan Kassens>// - **[e1dd0a2](react/react@e1dd0a2f5 )**: Remove recoverable error when a sync update flows into a dehydrated boundary ([#25692](react/react#25692)) //<Sebastian Markbåge>// - **[c54e354](react/react@c54e3541b )**: [DevTools] bug fix for Hydrating fibers ([#25663](react/react#25663)) //<Mengdi Chen>// Changelog: [General][Changed] - React Native sync for revisions d1e35c7...17f6912 jest_e2e[run_all_tests] Reviewed By: makovkastar Differential Revision: D42804802 fbshipit-source-id: 6a9f00724cc73378025bbd04edb2d17760a87280
Summary
Allows async blocks in
toWarnDevandtoErrorDevblocks e.g.Note that this means that
expect(() => act()).toWarnDevis now async and should be either voidedor awaited.
This will enable using
toErrorDevin ReactDOMServerIntegration tests and allows explicitly asserting a warning we previously ignored in tests foruseSyncExternalStorethat should probably not exist in the first place?How did you test this change?