@samitouri / QOS-React / commits / a69b80d07e

[crud] Remove useResourceEffect (#32206)

Removes useResourceEffect. --- [//]: # (BEGIN SAPLING FOOTER) Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/32206). * __->__ #32206 * #32205

lauren committed Feb 11, 2025 at 14:19 UTC a69b80d07e5d1bf363ed15d6209a55b35e0765c2
9 files changed +1 -227
packages/react-debug-tools/src/ReactDebugHooks.js
-22
@@ -128,9 +128,6 @@ function getPrimitiveStackCache(): Map<string, Array<any>> {
128
129 Dispatcher.useId();
130
131 - if (typeof Dispatcher.useResourceEffect === 'function') {
132 - Dispatcher.useResourceEffect(() => ({}), []);
133 - }
131 if (typeof Dispatcher.useEffectEvent === 'function') {
132 Dispatcher.useEffectEvent((args: empty) => {});
133 }
@@ -741,24 +738,6 @@ function useHostTransitionStatus(): TransitionStatus {
738 return status;
739 }
740
744 -function useResourceEffect(
745 - create: () => {...} | void | null,
746 - createDeps: Array<mixed> | void | null,
747 - update: ((resource: {...} | void | null) => void) | void,
748 - updateDeps: Array<mixed> | void | null,
749 - destroy: ((resource: {...} | void | null) => void) | void,
750 -) {
751 - nextHook();
752 - hookLog.push({
753 - displayName: null,
754 - primitive: 'ResourceEffect',
755 - stackError: new Error(),
756 - value: create,
757 - debugInfo: null,
758 - dispatcherHookName: 'ResourceEffect',
759 - });
760 -}
761 -
741 function useEffectEvent<Args, F: (...Array<Args>) => mixed>(callback: F): F {
742 nextHook();
743 hookLog.push({
@@ -798,7 +777,6 @@ const Dispatcher: DispatcherType = {
777 useActionState,
778 useHostTransitionStatus,
779 useEffectEvent,
801 - useResourceEffect,
780 };
781
782 // create a proxy to throw a custom error
packages/react-reconciler/src/ReactFiberHooks.js
-158
@@ -3989,9 +3989,6 @@ export const ContextOnlyDispatcher: Dispatcher = {
3989 if (enableUseEffectEventHook) {
3990 (ContextOnlyDispatcher: Dispatcher).useEffectEvent = throwInvalidHookError;
3991 }
3992 -if (enableUseEffectCRUDOverload) {
3993 - (ContextOnlyDispatcher: Dispatcher).useResourceEffect = throwInvalidHookError;
3994 -}
3992
3993 const HooksDispatcherOnMount: Dispatcher = {
3994 readContext,
@@ -4022,9 +4019,6 @@ const HooksDispatcherOnMount: Dispatcher = {
4019 if (enableUseEffectEventHook) {
4020 (HooksDispatcherOnMount: Dispatcher).useEffectEvent = mountEvent;
4021 }
4025 -if (enableUseEffectCRUDOverload) {
4026 - (HooksDispatcherOnMount: Dispatcher).useResourceEffect = mountResourceEffect;
4027 -}
4022
4023 const HooksDispatcherOnUpdate: Dispatcher = {
4024 readContext,
@@ -4055,10 +4049,6 @@ const HooksDispatcherOnUpdate: Dispatcher = {
4049 if (enableUseEffectEventHook) {
4050 (HooksDispatcherOnUpdate: Dispatcher).useEffectEvent = updateEvent;
4051 }
4058 -if (enableUseEffectCRUDOverload) {
4059 - (HooksDispatcherOnUpdate: Dispatcher).useResourceEffect =
4060 - updateResourceEffect;
4061 -}
4052
4053 const HooksDispatcherOnRerender: Dispatcher = {
4054 readContext,
@@ -4089,10 +4079,6 @@ const HooksDispatcherOnRerender: Dispatcher = {
4079 if (enableUseEffectEventHook) {
4080 (HooksDispatcherOnRerender: Dispatcher).useEffectEvent = updateEvent;
4081 }
4092 -if (enableUseEffectCRUDOverload) {
4093 - (HooksDispatcherOnRerender: Dispatcher).useResourceEffect =
4094 - updateResourceEffect;
4095 -}
4082
4083 let HooksDispatcherOnMountInDEV: Dispatcher | null = null;
4084 let HooksDispatcherOnMountWithHookTypesInDEV: Dispatcher | null = null;
@@ -4310,27 +4296,6 @@ if (__DEV__) {
4296 return mountEvent(callback);
4297 };
4298 }
4313 - if (enableUseEffectCRUDOverload) {
4314 - (HooksDispatcherOnMountInDEV: Dispatcher).useResourceEffect =
4315 - function useResourceEffect(
4316 - create: () => {...} | void | null,
4317 - createDeps: Array<mixed> | void | null,
4318 - update: ((resource: {...} | void | null) => void) | void,
4319 - updateDeps: Array<mixed> | void | null,
4320 - destroy: ((resource: {...} | void | null) => void) | void,
4321 - ): void {
4322 - currentHookNameInDev = 'useResourceEffect';
4323 - mountHookTypesDev();
4324 - checkDepsAreNonEmptyArrayDev(updateDeps);
4325 - return mountResourceEffect(
4326 - create,
4327 - createDeps,
4328 - update,
4329 - updateDeps,
4330 - destroy,
4331 - );
4332 - };
4333 - }
4299
4300 HooksDispatcherOnMountWithHookTypesInDEV = {
4301 readContext<T>(context: ReactContext<T>): T {
@@ -4514,26 +4479,6 @@ if (__DEV__) {
4479 return mountEvent(callback);
4480 };
4481 }
4517 - if (enableUseEffectCRUDOverload) {
4518 - (HooksDispatcherOnMountWithHookTypesInDEV: Dispatcher).useResourceEffect =
4519 - function useResourceEffect(
4520 - create: () => {...} | void | null,
4521 - createDeps: Array<mixed> | void | null,
4522 - update: ((resource: {...} | void | null) => void) | void,
4523 - updateDeps: Array<mixed> | void | null,
4524 - destroy: ((resource: {...} | void | null) => void) | void,
4525 - ): void {
4526 - currentHookNameInDev = 'useResourceEffect';
4527 - updateHookTypesDev();
4528 - return mountResourceEffect(
4529 - create,
4530 - createDeps,
4531 - update,
4532 - updateDeps,
4533 - destroy,
4534 - );
4535 - };
4536 - }
4482
4483 HooksDispatcherOnUpdateInDEV = {
4484 readContext<T>(context: ReactContext<T>): T {
@@ -4717,26 +4662,6 @@ if (__DEV__) {
4662 return updateEvent(callback);
4663 };
4664 }
4720 - if (enableUseEffectCRUDOverload) {
4721 - (HooksDispatcherOnUpdateInDEV: Dispatcher).useResourceEffect =
4722 - function useResourceEffect(
4723 - create: () => {...} | void | null,
4724 - createDeps: Array<mixed> | void | null,
4725 - update: ((resource: {...} | void | null) => void) | void,
4726 - updateDeps: Array<mixed> | void | null,
4727 - destroy: ((resource: {...} | void | null) => void) | void,
4728 - ) {
4729 - currentHookNameInDev = 'useResourceEffect';
4730 - updateHookTypesDev();
4731 - return updateResourceEffect(
4732 - create,
4733 - createDeps,
4734 - update,
4735 - updateDeps,
4736 - destroy,
4737 - );
4738 - };
4739 - }
4665
4666 HooksDispatcherOnRerenderInDEV = {
4667 readContext<T>(context: ReactContext<T>): T {
@@ -4920,26 +4845,6 @@ if (__DEV__) {
4845 return updateEvent(callback);
4846 };
4847 }
4923 - if (enableUseEffectCRUDOverload) {
4924 - (HooksDispatcherOnRerenderInDEV: Dispatcher).useResourceEffect =
4925 - function useResourceEffect(
4926 - create: () => {...} | void | null,
4927 - createDeps: Array<mixed> | void | null,
4928 - update: ((resource: {...} | void | null) => void) | void,
4929 - updateDeps: Array<mixed> | void | null,
4930 - destroy: ((resource: {...} | void | null) => void) | void,
4931 - ) {
4932 - currentHookNameInDev = 'useResourceEffect';
4933 - updateHookTypesDev();
4934 - return updateResourceEffect(
4935 - create,
4936 - createDeps,
4937 - update,
4938 - updateDeps,
4939 - destroy,
4940 - );
4941 - };
4942 - }
4848
4849 InvalidNestedHooksDispatcherOnMountInDEV = {
4850 readContext<T>(context: ReactContext<T>): T {
@@ -5148,27 +5053,6 @@ if (__DEV__) {
5053 return mountEvent(callback);
5054 };
5055 }
5151 - if (enableUseEffectCRUDOverload) {
5152 - (InvalidNestedHooksDispatcherOnMountInDEV: Dispatcher).useResourceEffect =
5153 - function useResourceEffect(
5154 - create: () => {...} | void | null,
5155 - createDeps: Array<mixed> | void | null,
5156 - update: ((resource: {...} | void | null) => void) | void,
5157 - updateDeps: Array<mixed> | void | null,
5158 - destroy: ((resource: {...} | void | null) => void) | void,
5159 - ): void {
5160 - currentHookNameInDev = 'useResourceEffect';
5161 - warnInvalidHookAccess();
5162 - mountHookTypesDev();
5163 - return mountResourceEffect(
5164 - create,
5165 - createDeps,
5166 - update,
5167 - updateDeps,
5168 - destroy,
5169 - );
5170 - };
5171 - }
5056
5057 InvalidNestedHooksDispatcherOnUpdateInDEV = {
5058 readContext<T>(context: ReactContext<T>): T {
@@ -5377,27 +5261,6 @@ if (__DEV__) {
5261 return updateEvent(callback);
5262 };
5263 }
5380 - if (enableUseEffectCRUDOverload) {
5381 - (InvalidNestedHooksDispatcherOnUpdateInDEV: Dispatcher).useResourceEffect =
5382 - function useResourceEffect(
5383 - create: () => {...} | void | null,
5384 - createDeps: Array<mixed> | void | null,
5385 - update: ((resource: {...} | void | null) => void) | void,
5386 - updateDeps: Array<mixed> | void | null,
5387 - destroy: ((resource: {...} | void | null) => void) | void,
5388 - ) {
5389 - currentHookNameInDev = 'useResourceEffect';
5390 - warnInvalidHookAccess();
5391 - updateHookTypesDev();
5392 - return updateResourceEffect(
5393 - create,
5394 - createDeps,
5395 - update,
5396 - updateDeps,
5397 - destroy,
5398 - );
5399 - };
5400 - }
5264
5265 InvalidNestedHooksDispatcherOnRerenderInDEV = {
5266 readContext<T>(context: ReactContext<T>): T {
@@ -5606,25 +5469,4 @@ if (__DEV__) {
5469 return updateEvent(callback);
5470 };
5471 }
5609 - if (enableUseEffectCRUDOverload) {
5610 - (InvalidNestedHooksDispatcherOnRerenderInDEV: Dispatcher).useResourceEffect =
5611 - function useResourceEffect(
5612 - create: () => {...} | void | null,
5613 - createDeps: Array<mixed> | void | null,
5614 - update: ((resource: {...} | void | null) => void) | void,
5615 - updateDeps: Array<mixed> | void | null,
5616 - destroy: ((resource: {...} | void | null) => void) | void,
5617 - ) {
5618 - currentHookNameInDev = 'useResourceEffect';
5619 - warnInvalidHookAccess();
5620 - updateHookTypesDev();
5621 - return updateResourceEffect(
5622 - create,
5623 - createDeps,
5624 - update,
5625 - updateDeps,
5626 - destroy,
5627 - );
5628 - };
5629 - }
5472 }
packages/react-reconciler/src/ReactInternalTypes.js
-9
@@ -47,7 +47,6 @@ export type HookType =
47 | 'useRef'
48 | 'useEffect'
49 | 'useEffectEvent'
50 - | 'useResourceEffect'
50 | 'useInsertionEffect'
51 | 'useLayoutEffect'
52 | 'useCallback'
@@ -399,14 +398,6 @@ export type Dispatcher = {
398 ): void,
399 // TODO: Non-nullable once `enableUseEffectEventHook` is on everywhere.
400 useEffectEvent?: <Args, F: (...Array<Args>) => mixed>(callback: F) => F,
402 - // TODO: Non-nullable once `enableUseEffectCRUDOverload` is on everywhere.
403 - useResourceEffect?: (
404 - create: () => {...} | void | null,
405 - createDeps: Array<mixed> | void | null,
406 - update: ((resource: {...} | void | null) => void) | void,
407 - updateDeps: Array<mixed> | void | null,
408 - destroy: ((resource: {...} | void | null) => void) | void,
409 - ) => void,
401 useInsertionEffect(
402 create: () => (() => void) | void,
403 deps: Array<mixed> | void | null,
packages/react-server/src/ReactFizzHooks.js
+1 -9
@@ -38,10 +38,7 @@ import {
38 } from './ReactFizzConfig';
39 import {createFastHash} from './ReactServerStreamConfig';
40
41 -import {
42 - enableUseEffectEventHook,
43 - enableUseEffectCRUDOverload,
44 -} from 'shared/ReactFeatureFlags';
41 +import {enableUseEffectEventHook} from 'shared/ReactFeatureFlags';
42 import is from 'shared/objectIs';
43 import {
44 REACT_CONTEXT_TYPE,
@@ -866,11 +863,6 @@ export const HooksDispatcher: Dispatcher = supportsClientAPIs
863 if (enableUseEffectEventHook) {
864 HooksDispatcher.useEffectEvent = useEffectEvent;
865 }
869 -if (enableUseEffectCRUDOverload) {
870 - HooksDispatcher.useResourceEffect = supportsClientAPIs
871 - ? noop
872 - : clientHookNotSupported;
873 -}
866
867 export let currentResumableState: null | ResumableState = (null: any);
868 export function setCurrentResumableState(
packages/react/index.development.js
-1
@@ -59,7 +59,6 @@ export {
59 useDeferredValue,
60 useEffect,
61 experimental_useEffectEvent,
62 - experimental_useResourceEffect,
62 useImperativeHandle,
63 useInsertionEffect,
64 useLayoutEffect,
packages/react/index.experimental.development.js
-1
@@ -42,7 +42,6 @@ export {
42 useDeferredValue,
43 useEffect,
44 experimental_useEffectEvent,
45 - experimental_useResourceEffect,
45 useImperativeHandle,
46 useInsertionEffect,
47 useLayoutEffect,
packages/react/index.fb.js
-1
@@ -21,7 +21,6 @@ export {
21 createElement,
22 createRef,
23 experimental_useEffectEvent,
24 - experimental_useResourceEffect,
24 forwardRef,
25 Fragment,
26 isValidElement,
packages/react/src/ReactClient.js
-5
@@ -41,7 +41,6 @@ import {
41 useContext,
42 useEffect,
43 useEffectEvent,
44 - useResourceEffect,
44 useImperativeHandle,
45 useDebugValue,
46 useInsertionEffect,
@@ -65,7 +64,6 @@ import {addTransitionType} from './ReactTransitionType';
64 import {act} from './ReactAct';
65 import {captureOwnerStack} from './ReactOwnerStack';
66 import * as ReactCompilerRuntime from './ReactCompilerRuntime';
68 -import {enableUseEffectCRUDOverload} from 'shared/ReactFeatureFlags';
67
68 const Children = {
69 map,
@@ -132,6 +130,3 @@ export {
130 act, // DEV-only
131 captureOwnerStack, // DEV-only
132 };
135 -
136 -export const experimental_useResourceEffect: typeof useResourceEffect | void =
137 - enableUseEffectCRUDOverload ? useResourceEffect : undefined;
packages/react/src/ReactHooks.js
-21
@@ -221,27 +221,6 @@ export function useEffectEvent<Args, F: (...Array<Args>) => mixed>(
221 return dispatcher.useEffectEvent(callback);
222 }
223
224 -export function useResourceEffect(
225 - create: () => {...} | void | null,
226 - createDeps: Array<mixed> | void | null,
227 - update: ((resource: {...} | void | null) => void) | void,
228 - updateDeps: Array<mixed> | void | null,
229 - destroy: ((resource: {...} | void | null) => void) | void,
230 -): void {
231 - if (!enableUseEffectCRUDOverload) {
232 - throw new Error('Not implemented.');
233 - }
234 - const dispatcher = resolveDispatcher();
235 - // $FlowFixMe[not-a-function] This is unstable, thus optional
236 - return dispatcher.useResourceEffect(
237 - create,
238 - createDeps,
239 - update,
240 - updateDeps,
241 - destroy,
242 - );
243 -}
244 -
224 export function useOptimistic<S, A>(
225 passthrough: S,
226 reducer: ?(S, A) => S,