From fe744c8d8d2c056c917a883ff85299e7429c2bf3 Mon Sep 17 00:00:00 2001 From: Universe Creator Date: Sat, 4 Apr 2026 05:44:17 +0300 Subject: [PATCH] fix: Memoize formatRelativeTime per thread item - Wrap formatRelativeTime call in useMemo with thread.updatedAt dependency - Prevents creating new Date() on every render for each thread item - Improves thread list rendering performance Fixes: #1100 --- surfsense_web/components/assistant-ui/thread-list.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/surfsense_web/components/assistant-ui/thread-list.tsx b/surfsense_web/components/assistant-ui/thread-list.tsx index f1d10ca16..cbf10a000 100644 --- a/surfsense_web/components/assistant-ui/thread-list.tsx +++ b/surfsense_web/components/assistant-ui/thread-list.tsx @@ -9,7 +9,7 @@ import { TrashIcon, } from "lucide-react"; import { useRouter } from "next/navigation"; -import { memo, useCallback, useEffect, useState } from "react"; +import { memo, useCallback, useEffect, useMemo, useState } from "react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, @@ -237,7 +237,10 @@ const ThreadListItemComponent = memo(function ThreadListItemComponent({

{thread.title || "New Chat"}

- {formatRelativeTime(new Date(thread.updatedAt))} + {useMemo( + () => formatRelativeTime(new Date(thread.updatedAt)), + [thread.updatedAt] + )}