From f34c9e3519401f0e50658b1583457a02bda303d3 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Sat, 11 Apr 2026 23:51:51 +0530 Subject: [PATCH] perf: memoize icon, label, and badge rendering in Button component to prevent unnecessary re-renders --- components/lib/button/Button.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/lib/button/Button.js b/components/lib/button/Button.js index 01aeae0e08..52caf9b5b8 100644 --- a/components/lib/button/Button.js +++ b/components/lib/button/Button.js @@ -107,9 +107,9 @@ export const Button = React.memo( }; const size = sizeMapping[props.size]; - const icon = createIcon(); - const label = createLabel(); - const badge = createBadge(); + const icon = React.useMemo(() => createIcon(), [props.icon, props.loading, props.iconPos, props.label, props.loadingIcon]); + const label = React.useMemo(() => createLabel(), [props.label, props.children]); + const badge = React.useMemo(() => createBadge(), [props.badge, props.badgeClassName, props.unstyled]); const defaultAriaLabel = props.label ? props.label + (props.badge ? ' ' + props.badge : '') : props['aria-label']; const rootProps = mergeProps(