diff --git a/.changeset/perf-dialog-stable-context.md b/.changeset/perf-dialog-stable-context.md new file mode 100644 index 00000000000..d0ec3c95caf --- /dev/null +++ b/.changeset/perf-dialog-stable-context.md @@ -0,0 +1,5 @@ +--- +'@primer/react': patch +--- + +Use stable object reference for DialogContext value to prevent unnecessary re-renders diff --git a/packages/react/src/Dialog/Dialog.tsx b/packages/react/src/Dialog/Dialog.tsx index 2a070a88d66..5c5e4c2373a 100644 --- a/packages/react/src/Dialog/Dialog.tsx +++ b/packages/react/src/Dialog/Dialog.tsx @@ -242,6 +242,7 @@ const defaultFooterButtons: Array = [] // useful to determine whether we're inside a Dialog from a nested component export const DialogContext = React.createContext(undefined) +const DIALOG_CONTEXT_VALUE = Object.freeze({}) const _Dialog = React.forwardRef>((props, forwardedRef) => { const { @@ -348,7 +349,7 @@ const _Dialog = React.forwardRef +