dillon1000/react
Commit
Browse files `act` should work without mock Scheduler (#21714)
Currently, in a React 18 root, `act` only works if you mock the Scheduler package. This was because we didn't want to add additional checks at runtime. But now that the `act` testing API is dev-only, we can simplify its implementation. Now when an update is wrapped with `act`, React will bypass Scheduler entirely and push its tasks onto a special internal queue. Then, when the outermost `act` scope exists, we'll flush that queue. I also removed the "wrong act" warning, because the plan is to move `act` to an isomorphic entry point, simlar to `startTransition`. That's not directly related to this PR, but I didn't want to bother re-implementing that warning only to immediately remove it. I'll add the isomorphic API in a follow up. Note that the internal version of `act` that we use in our own tests still depends on mocking the Scheduler package, because it needs to work in production. I'm planning to move that implementation to a shared (internal) module, too.
Changed paths44 files
First-parent comparisonfixtures/dom/src/__tests__/nested-act-test.js ModifiedD fixtures/dom/src/__tests__/wrong-act-test.js DeletedM packages/react-dom/src/__tests__/ReactDOMTestSelectors-test.internal.js ModifiedM packages/react-dom/src/__tests__/ReactTestUtilsAct-test.js ModifiedD packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.internal.js DeletedD packages/react-dom/src/__tests__/ReactUnmockedSchedulerWarning-test.js DeletedM packages/react-dom/src/client/ReactDOM.js ModifiedM packages/react-dom/src/test-utils/ReactTestUtils.js ModifiedM packages/react-dom/src/test-utils/ReactTestUtilsInternalAct.js ModifiedM packages/react-dom/testing.classic.fb.js ModifiedM packages/react-dom/testing.experimental.js ModifiedM packages/react-dom/testing.js ModifiedM packages/react-dom/testing.modern.fb.js ModifiedM packages/react-dom/testing.stable.js ModifiedM packages/react-noop-renderer/src/createReactNoop.js ModifiedM packages/react-reconciler/src/ReactFiberHooks.new.js ModifiedM packages/react-reconciler/src/ReactFiberHooks.old.js ModifiedM packages/react-reconciler/src/ReactFiberReconciler.js ModifiedM packages/react-reconciler/src/ReactFiberReconciler.new.js ModifiedM packages/react-reconciler/src/ReactFiberReconciler.old.js ModifiedM packages/react-reconciler/src/ReactFiberWorkLoop.new.js ModifiedM packages/react-reconciler/src/ReactFiberWorkLoop.old.js ModifiedM packages/react-reconciler/src/__tests__/ReactFiberHostContext-test.internal.js ModifiedM packages/react-test-renderer/src/ReactTestRenderer.js ModifiedM packages/react-test-renderer/src/__tests__/ReactTestRendererAct-test.js ModifiedM packages/react/index.classic.fb.js ModifiedM packages/react/index.experimental.js ModifiedM packages/react/index.js ModifiedM packages/react/index.modern.fb.js ModifiedM packages/react/index.stable.js ModifiedM packages/react/src/React.js ModifiedA packages/react/src/ReactAct.js AddedA packages/react/src/ReactCurrentActQueue.js AddedM packages/react/src/ReactSharedInternals.js ModifiedM packages/shared/ReactFeatureFlags.js ModifiedM packages/shared/forks/ReactFeatureFlags.native-fb.js ModifiedM packages/shared/forks/ReactFeatureFlags.native-oss.js ModifiedM packages/shared/forks/ReactFeatureFlags.test-renderer.js ModifiedM packages/shared/forks/ReactFeatureFlags.test-renderer.native.js ModifiedM packages/shared/forks/ReactFeatureFlags.test-renderer.www.js ModifiedM packages/shared/forks/ReactFeatureFlags.testing.js ModifiedM packages/shared/forks/ReactFeatureFlags.testing.www.js ModifiedM packages/shared/forks/ReactFeatureFlags.www.js ModifiedM scripts/jest/setupTests.www.js ModifiedPatch
Files changed
Rendering syntax-highlighted changes…