Skip to content

Commit 63d673c

Browse files
authored
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.
1 parent 8fd963a commit 63d673c

File tree

2 files changed

+2
-0
lines changed

2 files changed

+2
-0
lines changed

packages/react/src/ReactForwardRef.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ export function forwardRef<Props, ElementType: React$ElementType>(
7171
Object.defineProperty(render, 'name', {
7272
value: name,
7373
});
74+
render.displayName = name;
7475
}
7576
},
7677
});

packages/react/src/ReactMemo.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export function memo<Props>(
5151
Object.defineProperty(type, 'name', {
5252
value: name,
5353
});
54+
type.displayName = name;
5455
}
5556
},
5657
});

0 commit comments

Comments
 (0)