From 6be8139964f1969a5a8cfe8a103fbec10ac1ab78 Mon Sep 17 00:00:00 2001
From: seonghobae <8172694+seonghobae@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:15:08 +0000
Subject: [PATCH 1/2] =?UTF-8?q?=E2=9A=A1=20Bolt:=20[=EC=84=B1=EB=8A=A5=20?=
=?UTF-8?q?=EA=B0=9C=EC=84=A0]=20=EB=82=B4=20=EC=9E=91=EC=97=85=20?=
=?UTF-8?q?=EB=AA=A9=EB=A1=9D=EC=97=90=20useMemo=20=EC=A0=81=EC=9A=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
불필요한 리렌더링을 방지하기 위해 내 작업 목록 매핑에 useMemo를 적용했습니다.
---
frontend/src/components/TasksLayout.tsx | 35 +++++++++++++++----------
1 file changed, 21 insertions(+), 14 deletions(-)
diff --git a/frontend/src/components/TasksLayout.tsx b/frontend/src/components/TasksLayout.tsx
index 034aa6911..cd98657c0 100644
--- a/frontend/src/components/TasksLayout.tsx
+++ b/frontend/src/components/TasksLayout.tsx
@@ -367,7 +367,27 @@ export function TasksLayout() {
), [currentColumns, tasksByStatus, taskSearch, priorityFilter, setSelectedTaskId, setViewMode]);
+
+ // ⚡ Bolt: Wrap My Tasks list in useMemo to prevent O(N) re-renders
+ // 🎯 Why: Mapping over potentially large lists of filtered tasks blocks the main thread during unrelated state updates.
+ const myTasksList = useMemo(() => (
+ filteredTicketTasks.length > 0 ? filteredTicketTasks.map(task => (
+
+ )) : (
+
서명 세션에 연결된 내 작업이 없습니다.
+ )
+ ), [filteredTicketTasks, setSelectedTaskId, setViewMode]);
const handleViewModeKeyDown = (event: KeyboardEvent, mode: TaskViewMode) => {
+
const currentIndex = TASK_VIEW_MODES.indexOf(mode);
const lastIndex = TASK_VIEW_MODES.length - 1;
let nextIndex: number;
@@ -684,20 +704,7 @@ export function TasksLayout() {
{viewMode === '내 작업' && (
내 작업
- {filteredTicketTasks.length > 0 ? filteredTicketTasks.map(task => (
-
- )) : (
-
서명 세션에 연결된 내 작업이 없습니다.
- )}
+ {myTasksList}
)}
From d3e4cd710f7f118fa8a73d247e29a7dadf8bcb99 Mon Sep 17 00:00:00 2001
From: Seongho Bae
Date: Tue, 11 Aug 2026 17:20:02 +0900
Subject: [PATCH 2/2] fix(tasks): skip hidden task-list materialization
---
frontend/src/components/TasksLayout.tsx | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/frontend/src/components/TasksLayout.tsx b/frontend/src/components/TasksLayout.tsx
index cd98657c0..e2f94a027 100644
--- a/frontend/src/components/TasksLayout.tsx
+++ b/frontend/src/components/TasksLayout.tsx
@@ -370,8 +370,9 @@ export function TasksLayout() {
// ⚡ Bolt: Wrap My Tasks list in useMemo to prevent O(N) re-renders
// 🎯 Why: Mapping over potentially large lists of filtered tasks blocks the main thread during unrelated state updates.
- const myTasksList = useMemo(() => (
- filteredTicketTasks.length > 0 ? filteredTicketTasks.map(task => (
+ const myTasksList = useMemo(() => {
+ if (viewMode !== '내 작업') return null;
+ return filteredTicketTasks.length > 0 ? filteredTicketTasks.map(task => (