dillon1000/react

Commit

`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.
Browse files
Changed paths44 files
First-parent comparison
M fixtures/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 Modified
Patch

Files changed

Rendering syntax-highlighted changes…