@samitouri / QOS-React-2 / commits / 63d673c676

Use both displayName and name in forwardRef/memo (#29625)

When defining a displayName on forwardRef/memo we forward that name to the inner function. We used to use displayName for this but in #29206 I switched this to use `"name"`. That's because V8 doesn't use displayName, it only uses the overridden name in stack traces. This is the only thing covered by our tests for component stacks. However, I realized that Safari only uses displayName and not the name. So this sets both.

Sebastian Markbåge committed May 31, 2024 at 00:22 UTC 63d673c67656390d776bfa082c6ab49f0c636582
2 files changed +2
packages/react/src/ReactForwardRef.js
+1
@@ -71,6 +71,7 @@ export function forwardRef<Props, ElementType: React$ElementType>(
71 Object.defineProperty(render, 'name', {
72 value: name,
73 });
74 + render.displayName = name;
75 }
76 },
77 });
packages/react/src/ReactMemo.js
+1
@@ -51,6 +51,7 @@ export function memo<Props>(
51 Object.defineProperty(type, 'name', {
52 value: name,
53 });
54 + type.displayName = name;
55 }
56 },
57 });