fix(CQ-WEB-8): Add React.memo to performance-sensitive components
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

Wrap 7 list-item/card components with React.memo to prevent unnecessary
re-renders when parent components update but props remain unchanged:
- TaskItem (task lists)
- EventCard (calendar views)
- EntryCard (knowledge base)
- WorkspaceCard (workspace list)
- TeamCard (team list)
- DomainItem (domain list)
- ConnectionCard (federation connections)

All are pure components rendered inside .map() loops that depend solely
on their props for rendering output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jason Woltje
2026-02-06 18:28:08 -06:00
parent 1005b7969c
commit 214139f4d5
7 changed files with 32 additions and 14 deletions

View File

@@ -1,4 +1,5 @@
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
import React from "react";
import type { Task } from "@mosaic/shared";
import { TaskStatus, TaskPriority } from "@mosaic/shared";
import { formatDate, isPastTarget, isApproachingTarget } from "@/lib/utils/date-format";
@@ -21,7 +22,7 @@ const priorityLabels: Record<TaskPriority, string> = {
[TaskPriority.LOW]: "Low priority",
};
export function TaskItem({ task }: TaskItemProps): React.JSX.Element {
export const TaskItem = React.memo(function TaskItem({ task }: TaskItemProps): React.JSX.Element {
const statusIcon = statusIcons[task.status];
const priorityLabel = priorityLabels[task.priority];
@@ -61,4 +62,4 @@ export function TaskItem({ task }: TaskItemProps): React.JSX.Element {
</div>
</div>
);
}
});