From fae172e207820d340d5f2c1ee6a02929aec3a3b4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Mar 2026 07:47:30 +0000 Subject: [PATCH 1/2] Initial plan From 53b4a97c54d986756f1aa0f0c06776e3814c3af6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Mar 2026 07:56:15 +0000 Subject: [PATCH 2/2] Fix memory leak, unsafe non-null assertion, and stale useMemo dependencies Agent-Logs-Url: https://github.com/daihua2/material-react-table/sessions/5976911b-bb2b-4c39-92a2-a3f6da1a5579 Co-authored-by: daihua2 <126872871+daihua2@users.noreply.github.com> --- .../src/components/head/MRT_TableHeadCell.tsx | 2 +- .../material-react-table/src/hooks/useMRT_Effects.ts | 10 +++++----- .../src/hooks/useMRT_TableOptions.ts | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/material-react-table/src/components/head/MRT_TableHeadCell.tsx b/packages/material-react-table/src/components/head/MRT_TableHeadCell.tsx index 880826e83..2fa3959ba 100644 --- a/packages/material-react-table/src/components/head/MRT_TableHeadCell.tsx +++ b/packages/material-react-table/src/components/head/MRT_TableHeadCell.tsx @@ -326,7 +326,7 @@ export const MRT_TableHeadCell = ({ column={column} table={table} tableHeadCellRef={{ - current: tableHeadCellRefs.current?.[column.id]!, + current: tableHeadCellRefs.current?.[column.id] ?? null, }} /> )} diff --git a/packages/material-react-table/src/hooks/useMRT_Effects.ts b/packages/material-react-table/src/hooks/useMRT_Effects.ts index ce4ace2cf..6b2579c46 100644 --- a/packages/material-react-table/src/hooks/useMRT_Effects.ts +++ b/packages/material-react-table/src/hooks/useMRT_Effects.ts @@ -97,10 +97,10 @@ export const useMRT_Effects = ( //fix pinned row top style when density changes useEffect(() => { - if (enableRowPinning && getIsSomeRowsPinned()) { - setTimeout(() => { - rerender(); - }, 150); - } + if (!enableRowPinning || !getIsSomeRowsPinned()) return undefined; + const timeoutId = setTimeout(() => { + rerender(); + }, 150); + return () => clearTimeout(timeoutId); }, [density]); }; diff --git a/packages/material-react-table/src/hooks/useMRT_TableOptions.ts b/packages/material-react-table/src/hooks/useMRT_TableOptions.ts index 7bee63ec6..5802a02c9 100644 --- a/packages/material-react-table/src/hooks/useMRT_TableOptions.ts +++ b/packages/material-react-table/src/hooks/useMRT_TableOptions.ts @@ -127,10 +127,10 @@ export const useMRT_TableOptions: ( mrtTheme = useMemo(() => getMRTTheme(mrtTheme, theme), [mrtTheme, theme]); aggregationFns = useMemo( () => ({ ...MRT_AggregationFns, ...aggregationFns }), - [], + [aggregationFns], ); - filterFns = useMemo(() => ({ ...MRT_FilterFns, ...filterFns }), []); - sortingFns = useMemo(() => ({ ...MRT_SortingFns, ...sortingFns }), []); + filterFns = useMemo(() => ({ ...MRT_FilterFns, ...filterFns }), [filterFns]); + sortingFns = useMemo(() => ({ ...MRT_SortingFns, ...sortingFns }), [sortingFns]); defaultColumn = useMemo( () => ({ ...MRT_DefaultColumn, ...defaultColumn }), [defaultColumn],