dillon1000/react
Commit
Browse files Split cross-package types from implementation
Some of our internal reconciler types have leaked into other packages. Usually, these types are treated as opaque; we don't read and write to its fields. This is good. However, the type is often passed back to a reconciler method. For example, React DOM creates a FiberRoot with `createContainer`, then passes that root to `updateContainer`. It doesn't do anything with the root except pass it through, but because `updateContainer` expects a full FiberRoot, React DOM is still coupled to all its fields. I don't know if there's an idiomatic way to handle this in Flow. Opaque types are simlar, but those only work within a single file. AFAIK, there's no way to use a package as the boundary for opaqueness. The immediate problem this presents is that the reconciler refactor will involve changes to our internal data structures. I don't want to have to fork every single package that happens to pass through a Fiber or FiberRoot, or access any one of its fields. So my current plan is to share the same Flow type across both forks. The shared type will be a superset of each implementation's type, e.g. Fiber will have both an `expirationTime` field and a `lanes` field. The implementations will diverge, but not the types. To do this, I lifted the type definitions into a separate module.
Changed paths69 files
First-parent comparisonpackages/legacy-events/PluginModuleType.js ModifiedM packages/legacy-events/ReactSyntheticEventType.js ModifiedM packages/react-debug-tools/src/ReactDebugHooks.js ModifiedM packages/react-devtools-shared/src/backend/console.js ModifiedM packages/react-devtools-shared/src/backend/renderer.js ModifiedM packages/react-devtools-shared/src/backend/types.js ModifiedM packages/react-dom/src/client/ReactDOMComponentTree.js ModifiedM packages/react-dom/src/client/ReactDOMRoot.js ModifiedM packages/react-dom/src/events/DOMLegacyEventPluginSystem.js ModifiedM packages/react-dom/src/events/DOMModernPluginEventSystem.js ModifiedM packages/react-dom/src/events/DeprecatedDOMEventResponderSystem.js ModifiedM packages/react-dom/src/events/ReactDOMEventListener.js ModifiedM packages/react-dom/src/events/ReactDOMEventReplaying.js ModifiedM packages/react-dom/src/events/SimpleEventPlugin.js ModifiedM packages/react-dom/src/events/accumulateEnterLeaveListeners.js ModifiedM packages/react-dom/src/events/accumulateEventTargetListeners.js ModifiedM packages/react-dom/src/events/accumulateTwoPhaseListeners.js ModifiedM packages/react-dom/src/events/getListener.js ModifiedM packages/react-dom/src/server/ReactPartialRendererHooks.js ModifiedM packages/react-native-renderer/src/ReactFabricEventEmitter.js ModifiedM packages/react-native-renderer/src/ReactNativeEventEmitter.js ModifiedM packages/react-native-renderer/src/ReactNativeFiberInspector.js ModifiedM packages/react-native-renderer/src/ReactNativeGetListener.js ModifiedM packages/react-noop-renderer/src/createReactNoop.js ModifiedM packages/react-reconciler/src/ReactCapturedValue.js ModifiedM packages/react-reconciler/src/ReactChildFiber.old.js ModifiedM packages/react-reconciler/src/ReactCurrentFiber.js ModifiedM packages/react-reconciler/src/ReactFiber.old.js ModifiedM packages/react-reconciler/src/ReactFiberBeginWork.old.js ModifiedM packages/react-reconciler/src/ReactFiberClassComponent.old.js ModifiedM packages/react-reconciler/src/ReactFiberCommitWork.old.js ModifiedM packages/react-reconciler/src/ReactFiberCompleteWork.old.js ModifiedM packages/react-reconciler/src/ReactFiberComponentStack.js ModifiedM packages/react-reconciler/src/ReactFiberContext.old.js ModifiedM packages/react-reconciler/src/ReactFiberDeprecatedEvents.old.js ModifiedM packages/react-reconciler/src/ReactFiberDevToolsHook.old.js ModifiedM packages/react-reconciler/src/ReactFiberErrorDialog.js ModifiedM packages/react-reconciler/src/ReactFiberErrorLogger.js ModifiedR packages/react-reconciler/src/ReactFiberExpirationTime.old.js →packages/react-reconciler/src/ReactFiberExpirationTime.js RenamedM packages/react-reconciler/src/ReactFiberFundamental.old.js ModifiedM packages/react-reconciler/src/ReactFiberHooks.old.js ModifiedM packages/react-reconciler/src/ReactFiberHostContext.old.js ModifiedM packages/react-reconciler/src/ReactFiberHotReloading.old.js ModifiedM packages/react-reconciler/src/ReactFiberHydrationContext.old.js ModifiedM packages/react-reconciler/src/ReactFiberNewContext.old.js ModifiedM packages/react-reconciler/src/ReactFiberReconciler.old.js ModifiedM packages/react-reconciler/src/ReactFiberRoot.old.js ModifiedM packages/react-reconciler/src/ReactFiberScope.old.js ModifiedM packages/react-reconciler/src/ReactFiberStack.old.js ModifiedM packages/react-reconciler/src/ReactFiberSuspenseComponent.old.js ModifiedR packages/react-reconciler/src/ReactFiberSuspenseConfig.old.js →packages/react-reconciler/src/ReactFiberSuspenseConfig.js RenamedM packages/react-reconciler/src/ReactFiberSuspenseContext.old.js ModifiedM packages/react-reconciler/src/ReactFiberThrow.old.js ModifiedM packages/react-reconciler/src/ReactFiberTreeReflection.js ModifiedM packages/react-reconciler/src/ReactFiberUnwindWork.old.js ModifiedM packages/react-reconciler/src/ReactFiberWorkLoop.old.js ModifiedA packages/react-reconciler/src/ReactInternalTypes.js AddedM packages/react-reconciler/src/ReactMutableSource.old.js ModifiedM packages/react-reconciler/src/ReactProfilerTimer.old.js ModifiedM packages/react-reconciler/src/ReactStrictModeWarnings.old.js ModifiedM packages/react-reconciler/src/ReactUpdateQueue.old.js ModifiedM packages/react-reconciler/src/SchedulerWithReactIntegration.old.js ModifiedM packages/react-refresh/src/ReactFreshRuntime.js ModifiedM packages/react-test-renderer/src/ReactTestRenderer.js ModifiedM packages/react/src/ReactBatchConfig.js ModifiedM packages/react/src/ReactCurrentBatchConfig.js ModifiedM packages/react/src/ReactCurrentDispatcher.js ModifiedM packages/react/src/ReactCurrentOwner.js ModifiedM scripts/flow/react-native-host-hooks.js ModifiedPatch
Files changed
Rendering syntax-highlighted changes…