From 6ba9c2759d4de5a65f24c0cfe5e2d68d828dbfa5 Mon Sep 17 00:00:00 2001 From: hectahertz Date: Wed, 4 Mar 2026 13:28:50 +0100 Subject: [PATCH 1/3] perf(Dialog): use stable context value reference --- packages/react/src/Dialog/Dialog.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react/src/Dialog/Dialog.tsx b/packages/react/src/Dialog/Dialog.tsx index 2a070a88d66..43d9db6102d 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 = {} const _Dialog = React.forwardRef>((props, forwardedRef) => { const { @@ -348,7 +349,7 @@ const _Dialog = React.forwardRef +
Date: Wed, 4 Mar 2026 13:28:59 +0100 Subject: [PATCH 2/3] chore: changeset --- .changeset/perf-dialog-stable-context.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/perf-dialog-stable-context.md 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 From 91a3d587ee34c2288ba88c94a74d02df7bad611a Mon Sep 17 00:00:00 2001 From: hectahertz Date: Thu, 5 Mar 2026 10:05:04 +0100 Subject: [PATCH 3/3] fix: freeze DIALOG_CONTEXT_VALUE to prevent accidental mutation --- packages/react/src/Dialog/Dialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react/src/Dialog/Dialog.tsx b/packages/react/src/Dialog/Dialog.tsx index 43d9db6102d..5c5e4c2373a 100644 --- a/packages/react/src/Dialog/Dialog.tsx +++ b/packages/react/src/Dialog/Dialog.tsx @@ -242,7 +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 = {} +const DIALOG_CONTEXT_VALUE = Object.freeze({}) const _Dialog = React.forwardRef>((props, forwardedRef) => { const {