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
});