Skip to content

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Oct 6, 2025

Bumps eslint-plugin-react-hooks from 5.2.0 to 6.1.1.

Changelog

Sourced from eslint-plugin-react-hooks's changelog.

6.1.1

Note: 6.1.0 accidentally allowed use of recommended without flat config, causing errors when used with ESLint v9's defineConfig() helper. This has been fixed in 6.1.1.

6.1.0

Note: Version 6.0.0 was mistakenly released and immediately deprecated and untagged on npm. This is the first official 6.x major release and includes breaking changes.

  • Breaking: Require Node.js 18 or newer. (@​michaelfaith in #32458)
  • Breaking: Flat config is now the default recommended preset. Legacy config moved to recommended-legacy. (@​michaelfaith in #32457)
  • New Violations: Disallow calling use within try/catch blocks. (@​poteto in #34040)
  • New Violations: Disallow calling useEffectEvent functions in arbitrary closures. (@​jbrown215 in #33544)
  • Handle React.useEffect in addition to useEffect in rules-of-hooks. (@​Ayc0 in #34076)
  • Added react-hooks settings config option that to accept additionalEffectHooks that are used across exhaustive-deps and rules-of-hooks rules. (@​jbrown215) in #34497

6.0.0

Accidentally released. See 6.1.0 for the actual changes.

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Summary by CodeRabbit

  • New Features
    • 드래그 중 임시 정렬(미리보기)과 안정적인 되돌리기 도입; 재정렬 실패 시 토스트 알림 제공(프로젝트/드로어/작업).
  • Bug Fixes
    • 메모/댓글 편집 내용 동기화 개선, 제출 조건 엄격화(변경 없음·진행 중 차단).
    • 텍스트 영역 자동 높이 계산 정확도 향상.
    • 알림 목록 날짜 구분 렌더링 안정화 및 로딩/페이징 표시 개선.
  • Refactor
    • 데이터 파생·메모이제이션 기반 렌더링으로 드래그앤드롭 및 목록 처리 성능·안정성 개선.
    • 알림 설정 UI 흐름 재구성으로 구독/예외 관리 신뢰성 향상.
  • Chores
    • ESLint 구성 업데이트 및 React Hooks 플러그인 버전 업그레이드.

@dependabot dependabot bot added dependencies Pull requests that update a dependency file javascript Pull requests that update Javascript code labels Oct 6, 2025
@coderabbitai
Copy link

coderabbitai bot commented Oct 6, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

React Hooks ESLint 플러그인과 구성 업데이트를 적용하고, 여러 컴포넌트/페이지에서 드래그 앤 드롭 재정렬 흐름을 임시 순서 상태와 useMemo 기반 파생 데이터로 재구성했다. 일부 효과 등록을 useEffect로 이동했으며, 알림/프로필 설정 화면의 내부 데이터 흐름과 상태 초기화 방식을 리팩터링했다. 여럿 파일에 린트 억제 주석이 추가되었다.

Changes

Cohort / File(s) Summary
ESLint 설정 및 플러그인 버전
frontend/eslint.config.js, frontend/package.json
React Hooks 규칙셋 참조를 reactHooks.configs.flat.recommended로 변경. eslint-plugin-react-hooks^7.0.0으로 업그레이드.
D&D 훅 바인딩을 useEffect로 이전
frontend/src/components/project/ProjectName.tsx, frontend/src/components/tasks/DrawerTask.tsx
drag(drop(ref))를 렌더 중 호출에서 효과로 이동하여 마운트 후 바인딩.
드로어/인박스/프로젝트 재정렬 워크플로우 재구성
frontend/src/components/drawers/DrawerBlock.tsx, frontend/src/components/drawers/InboxDrawer.tsx, frontend/src/pages/ProjectListPage.tsx, frontend/src/pages/ProjectPage.tsx
useMemo로 파생 리스트 생성 + temp*Order 도입. 이동 시 임시 순서 갱신, 드롭 시 변경분 계산 후 뮤테이션, 오류 토스트 및 임시 상태 초기화. 렌더는 display* 사용.
소셜 영역 메모화/효과 조정
frontend/src/components/social/RecordContainer.tsx, frontend/src/components/social/RemarkContainer.tsx, frontend/src/pages/NotificationsPage.tsx
목록/구분선/아이템 파생 구조를 useMemo로 구성. 로컬 상태 동기화와 textarea autosize 계산 보정. 날짜 구분 로직을 메모화된 플랫 리스트로 대체.
리액션 애니메이션/동기화 정리
frontend/src/components/social/reactions/AnimatedCount.tsx, frontend/src/components/social/reactions/ReactionButton.tsx
타이머를 useRef로 전환, 의존성/클린업 정리. 선택 상태 동기화 효과에 주석 추가.
린트 억제 주석 추가(행동 불변)
frontend/src/components/project/edit/ProjectEdit.tsx, frontend/src/components/social/common/DateBar.tsx, frontend/src/components/tasks/TaskFrame.tsx, frontend/src/components/tasks/TaskNameInput.tsx, frontend/src/components/today/ImportantTasks.tsx, frontend/src/pages/SignPage.jsx
특정 효과 내 set-state 호출 등에 대해 ESLint 억제 주석 추가. 런타임 동작 변화 없음.
알림 설정 리팩터링
frontend/src/pages/settings/Notifications.tsx
화면을 SectionNotification/SectionAllowList로 분리. urlB64ToUint8Array, subscribePush 내부화. React Query 클라이언트로 쿼리 무효화. 데이터 흐름을 쿼리 기반 초기화/뮤테이션으로 재구성.
프로필 헤더 색상 선택 흐름 조정
frontend/src/pages/settings/Profile.tsx
기본 색상 상수 추가. 사용자 선택 색상 상태 도입, useMemo로 표시 색상 파생. 모달에 setUserSelectedColor 전달. 불필요한 동기화 효과 제거.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User as User
  participant UI as Component (List with DnD)
  participant Temp as Temp Order State
  participant API as Reorder Mutation
  participant QC as QueryClient

  User->>UI: Drag item A over item B
  UI->>Temp: moveTask/moveProject (reorder in-memory)
  Note right of Temp: display* = tempOrder || derived

  User->>UI: Drop
  UI->>UI: Compute changed* from display*
  alt has changes
    UI->>API: PATCH reorder(changed*)
    API-->>UI: success
    UI->>QC: invalidate related query
    UI->>Temp: reset tempOrder
  else no changes
    UI->>Temp: reset tempOrder
  end

  rect rgb(245,248,255)
  Note over UI,Temp: Error path
  API-->>UI: error
  UI->>UI: show toast(error)
  UI->>Temp: reset tempOrder
  end
Loading
sequenceDiagram
  autonumber
  actor User as User
  participant Notif as Settings/Notifications
  participant SW as Service Worker
  participant Srv as Server
  participant QC as QueryClient

  User->>Notif: Toggle Push ON
  Notif->>SW: subscribePush(urlB64ToUint8Array)
  SW-->>Notif: PushSubscription
  Notif->>Srv: Register subscription
  Srv-->>Notif: 200 OK
  Notif->>QC: invalidate(subscriptions/excluded_types)
  Note over Notif: Toast on success/error
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested reviewers

  • minyoy

Poem

줄 맞춤 바람 타고, 리스트가 움직인다
임시의 질서로, 화면은 숨을 고른다
드롭 한 번, 변화만 추려 담아 보내고
응답 돌아오면, 조용히 자리 잡는다
규칙은 갱신되고, 설정은 더 또렷해진다
오늘의 코드, 내일의 질서가 된다

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed 제목은 eslint-plugin-react-hooks를 7.0.0으로 업데이트하고 그로 인해 발생한 모든 React 관련 린트 오류를 수정했다는 변경의 핵심을 명확하고 간결하게 요약하고 있어 PR의 주요 목적을 잘 전달합니다.

Comment @coderabbitai help to get the list of available commands and usage tips.

@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/frontend/eslint-plugin-react-hooks-6.1.1 branch from e82faa9 to b55a0fd Compare October 9, 2025 04:05
Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 5.2.0 to 6.1.1.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks)

---
updated-dependencies:
- dependency-name: eslint-plugin-react-hooks
  dependency-version: 6.1.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/frontend/eslint-plugin-react-hooks-6.1.1 branch from b55a0fd to abb5e31 Compare October 9, 2025 04:09
@JedBeom JedBeom changed the title Bump eslint-plugin-react-hooks from 5.2.0 to 6.1.1 in /frontend Bump eslint-plugin-react-hooks from 5.2.0 to 7.0.0 in /frontend Oct 9, 2025
@JedBeom
Copy link
Contributor

JedBeom commented Oct 9, 2025

The following lint rules were added:

      'react-hooks/config': 'error',
      'react-hooks/error-boundaries': 'error',
      'react-hooks/component-hook-factories': 'error',
      'react-hooks/gating': 'error',
      'react-hooks/globals': 'error',
      'react-hooks/immutability': 'error',
      'react-hooks/preserve-manual-memoization': 'error',
      'react-hooks/purity': 'error',
      'react-hooks/refs': 'error',
      'react-hooks/set-state-in-effect': 'error',
      'react-hooks/set-state-in-render': 'error',
      'react-hooks/static-components': 'error',
      'react-hooks/unsupported-syntax': 'warn',
      'react-hooks/use-memo': 'error',
      'react-hooks/incompatible-library': 'warn',

@JedBeom JedBeom self-assigned this Oct 9, 2025
@JedBeom JedBeom self-requested a review October 9, 2025 06:12
@JedBeom JedBeom changed the title Bump eslint-plugin-react-hooks from 5.2.0 to 7.0.0 in /frontend Bump eslint-plugin-react-hooks to 7.0.0 and fix all react compiler lint errors Oct 9, 2025
@JedBeom
Copy link
Contributor

JedBeom commented Oct 9, 2025

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Oct 9, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@JedBeom
Copy link
Contributor

JedBeom commented Oct 9, 2025

변경사항

  • eslint-plugin-react-hooks가 업데이트 되면서 React Compiler 관련 lint 규칙이 대거 추가되었습니다. (위 코멘트 참고)
  • 우리 코드에서 새로 위반사항이 발견하는 규칙은 set-state-in-effectref입니다.
  • 해결할 수 있는 코드는 (Claude의 도움을 받아) 리팩토링 하였고, 해결하기 어렵거나 예외사항 중 하나인 '로컬 상태를 외부 상태에 동기화'하는 부분은 ignore 시켰습니다.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (9)
frontend/src/components/social/reactions/AnimatedCount.tsx (1)

27-28: eslint-disable 주석 사용이 적절하지만 패턴 재검토를 권장합니다.

react-hooks/set-state-in-effect 규칙을 비활성화한 것은 이 컨텍스트에서 적절합니다. effect 내에서 setDir 호출이 의도적이며 count/prev 변경에 대한 응답으로 방향 상태를 설정합니다.

그러나 effect 내 setState는 React Compiler의 새 규칙에서 플래그되는 패턴입니다. 향후 리팩터링 시 다음을 고려하세요:

  • countprev의 차이에서 dir를 직접 파생시키는 방법
  • 또는 타이머 완료 시에만 상태를 업데이트하는 구조

현재 구현은 동작하며 명시적으로 문서화되어 있으므로 승인합니다.

frontend/src/components/tasks/TaskNameInput.tsx (1)

49-50: 비활성화 주석에 의도 문구 추가 제안

Line 49에서 ESLint 억제 사유를 함께 적어 두면 후속 유지보수자가 맥락을 즉시 파악할 수 있습니다.

-        // eslint-disable-next-line react-hooks/set-state-in-effect
+        // eslint-disable-next-line react-hooks/set-state-in-effect -- 상위 Task 갱신 시 로딩 상태 초기화
frontend/src/components/drawers/DrawerBlock.tsx (3)

145-150: 임시 정렬 상태 관리 접근 OK

tempTaskOrder와 displayTasks로 파생 리스트를 분리한 구조가 명확합니다.

정렬 기준(ordering) 또는 데이터 페이지가 바뀔 때도 잔여 tempTaskOrder가 남지 않도록, ordering이나 data 변경 시 tempTaskOrder를 비우는 효과를 추가하는 것을 고려해 주세요.


157-167: 인덱스 vs order 혼용 가능성

현재 moveTask는 배열 인덱스를 기대하지만, DrawerTask 쪽에서 전달되는 값이 Task.order(서버 상태 기반)라면 다중 hover/이동 시 인덱스와 order가 어긋날 수 있습니다. hover 단계에서 기준으로 사용할 값은 “현재 렌더 배열의 인덱스”가 더 안전합니다.

아래 렌더 구간에서 DrawerTask에 index를 넘기고, DrawerTask가 해당 index를 기준으로 dragIndex/hoverIndex를 계산하도록 바꾸면 안정성이 좋아집니다. 적용 예시는 하단 렌더 코멘트에 diff로 제안합니다.


276-285: DrawerTask에 index/canReorder를 전달해 드래그 안정화

현재 task.order 의존 대신, 렌더 인덱스를 전달해 드래그/호버 인덱스를 일관되게 유지하세요. 또한 order 정렬일 때만 드래그 가능하도록 게이트를 추가하세요.

위의 diff를 적용하면 moveTask 시 인덱스 불일치 가능성을 줄이고, 정렬 기준에 따른 오작동을 방지할 수 있습니다.

frontend/src/pages/settings/Notifications.tsx (1)

158-167: 초기 선택값 파생 로직의 동기화 제안

selectedItems를 items/query/setting에서 초기화만 하고 이후 쿼리 갱신과 동기화하지 않습니다. 최초 페치 완료 시점에 초기 선택값이 뒤늦게 반영되길 원한다면 sync 효과를 추가하세요(사용자 편집이 시작되기 전까지만 동기화).

예: query.isSuccess && !사용자편집중 일 때 setSelectedItems(...) 재계산.

frontend/src/components/tasks/DrawerTask.tsx (1)

94-97: 정렬 기준 게이트와 인덱스 기반 드래그로 보강 제안

현재는 항상 drag(drop(ref))를 바인딩합니다. 부모에서 canReorder를 전달받아 정렬 기준이 'order'일 때만 바인딩하고, 드래그/호버 인덱스는 렌더 인덱스를 사용하면 안정적입니다.

예시:

  • props 추가: index: number, canReorder?: boolean
  • useDrop.canDrop: canReorder && !isPending && 동일 drawer
  • useDrag.canDrag: canReorder && !isPending
  • hover: const dragIndex = item.index; const hoverIndex = index; ... moveTask(dragIndex, hoverIndex); item.index = hoverIndex;
  • effect deps: [drag, drop, canReorder]

추가 구현 예시는 상위 파일 코멘트의 diff를 참고해 주세요.

frontend/src/components/drawers/InboxDrawer.tsx (2)

71-79: 인덱스 기반으로 move 처리 권장

displayTasks를 기준으로 스플라이스하므로, DrawerTask에서 현재 렌더 인덱스를 전달받아 사용하는 편이 안전합니다(주문 값과 인덱스 분리).

아래 렌더 코멘트에 index 전달 예시를 첨부했습니다.


125-133: DrawerTask에 index/canReorder 전달 권장

렌더 인덱스 전달 및 정렬 기준 게이트를 통해 드래그 안정성과 데이터 무결성을 함께 확보할 수 있습니다.

위 diff를 적용해 주세요.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1600891 and 7880f54.

⛔ Files ignored due to path filters (1)
  • frontend/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (21)
  • frontend/eslint.config.js (1 hunks)
  • frontend/package.json (1 hunks)
  • frontend/src/components/drawers/DrawerBlock.tsx (3 hunks)
  • frontend/src/components/drawers/InboxDrawer.tsx (5 hunks)
  • frontend/src/components/project/ProjectName.tsx (2 hunks)
  • frontend/src/components/project/edit/ProjectEdit.tsx (1 hunks)
  • frontend/src/components/social/RecordContainer.tsx (4 hunks)
  • frontend/src/components/social/RemarkContainer.tsx (1 hunks)
  • frontend/src/components/social/common/DateBar.tsx (1 hunks)
  • frontend/src/components/social/reactions/AnimatedCount.tsx (2 hunks)
  • frontend/src/components/social/reactions/ReactionButton.tsx (1 hunks)
  • frontend/src/components/tasks/DrawerTask.tsx (2 hunks)
  • frontend/src/components/tasks/TaskFrame.tsx (1 hunks)
  • frontend/src/components/tasks/TaskNameInput.tsx (1 hunks)
  • frontend/src/components/today/ImportantTasks.tsx (1 hunks)
  • frontend/src/pages/NotificationsPage.tsx (3 hunks)
  • frontend/src/pages/ProjectListPage.tsx (4 hunks)
  • frontend/src/pages/ProjectPage.tsx (4 hunks)
  • frontend/src/pages/SignPage.jsx (1 hunks)
  • frontend/src/pages/settings/Notifications.tsx (6 hunks)
  • frontend/src/pages/settings/Profile.tsx (4 hunks)
🔇 Additional comments (19)
frontend/src/components/social/reactions/AnimatedCount.tsx (3)

1-1: useRef를 사용한 타이머 관리 리팩터링이 올바릅니다.

이전에 useMemo(() => ({ id: null }), [])로 mutable 객체를 생성하던 패턴을 useRef<number | null>(null)로 변경한 것은 정확합니다. useMemo는 계산 비용이 높은 값을 메모이제이션하기 위한 것이며, mutable 값을 저장하는 용도로는 useRef가 적절합니다.

Also applies to: 16-16


23-33: 타이머 관리 로직이 정확하게 구현되었습니다.

timerRef.current를 통한 타이머 접근 및 관리가 올바르게 구현되었습니다:

  • 새 타이머 설정 전 기존 타이머 정리 (lines 23-26)
  • 타임아웃 완료 후 참조 초기화 (line 32)
  • 언마운트 시 정리 (lines 36-38)

이 패턴은 빠른 연속 변경 시 애니메이션을 올바르게 재시작하도록 보장합니다.

Also applies to: 36-38


40-40: 의존성 배열에서 timerRef 제거가 올바릅니다.

ref 객체는 안정적인 참조이며 의존성 배열에 포함되어서는 안 됩니다. 이 변경은 불필요한 effect 재실행을 방지하고 React 모범 사례를 따릅니다.

frontend/src/pages/NotificationsPage.tsx (1)

1-1: 리팩터링이 올바르게 구현되었습니다.

날짜 구분선 로직을 명령형 ref 기반 추적에서 선언적 메모이제이션 방식으로 변경한 것이 적절합니다. 이 접근 방식은 다음과 같은 이점을 제공합니다:

  • 순수 계산: useMemo 내부의 로직이 부수 효과 없이 데이터를 변환합니다.
  • 적절한 메모이제이션: datalocale이 변경될 때만 재계산되어 불필요한 연산을 방지합니다.
  • React Compiler 호환성: useRef를 사용한 렌더링 중 상태 추적 대신 메모이제이션된 파생 상태를 사용하여 React Compiler 규칙을 준수합니다.
  • 단순화된 렌더링 로직: 중첩된 맵핑과 조건부 로직을 평탄화된 배열 구조로 대체했습니다.

의존성 배열 [data, locale]이 정확하며, 날짜 구분선 표시 로직(i === 0 && j === 0 || thisDate !== lastDate)도 올바릅니다.

Also applies to: 73-105, 141-154

frontend/package.json (1)

62-62: eslint-plugin-react-hooks 7.0.0 업그레이드 확인

Line 62에서 새 규칙 세트를 쓰기 위해 버전 범위를 7.x로 맞춘 선택이 적절합니다.

frontend/src/components/social/common/DateBar.tsx (1)

30-32: 의도 설명 주석이 명확합니다

Line 31에서 규칙 비활성화 사유를 함께 남겨 두어, 필요 시 다시 검토하기 쉽겠습니다.

frontend/src/components/today/ImportantTasks.tsx (1)

103-107: 필요한 비활성화 주석으로 보입니다

Line 105에서 최초 비어 있지 않은 필터를 자동 선택하려는 의도가 주석으로 명확히 설명되어 있어 유지보수에 도움이 됩니다.

frontend/src/components/social/reactions/ReactionButton.tsx (1)

33-35: 동기화 목적 주석이 적절합니다

Line 34에서 외부 반응 상태와 로컬 상태를 맞추기 위한 예외 처리 이유가 잘 드러나 있습니다.

frontend/src/components/drawers/DrawerBlock.tsx (2)

82-86: 데이터 플래트닝 메모이제이션 적절

무한 페이지 데이터를 안전하게 평탄화하고 메모이제이션한 점 좋습니다.


140-143: drag/drop 바인딩을 useEffect로 이동한 점 적절

ref 안정화 이후에 핸들러를 연결해 DnD 오동작을 줄입니다.

frontend/src/pages/settings/Notifications.tsx (3)

28-36: 화면 분할 구성(Section)로의 리팩터링 적절*

상태와 UI를 분리하고 조건부 렌더링으로 가독성과 유지보수성이 개선되었습니다.


185-191: 쿼리 무효화(invalidate) 위치 적절

수정 후 excluded_types 쿼리를 명시적 키로 무효화하는 흐름이 명확합니다.


247-260: task_reaction 타입 지원 확인 완료 Notification 타입 정의(frontend/api 및 backend 모델·마이그레이션)에 task_reaction이 포함되어 있으며 서버 API도 정상 처리됩니다.

frontend/src/components/tasks/DrawerTask.tsx (1)

1-1: useEffect 도입으로 DnD 바인딩 안정화

렌더 시점 호출을 피하고 효과로 지연시킨 점 좋습니다.

frontend/src/components/project/ProjectName.tsx (2)

1-1: useEffect 도입 적절

DnD 바인딩을 효과로 옮겨 안정성을 확보했습니다.


97-102: Inbox 예외 처리와 바인딩 조건부 적용 적절

inbox는 드래그 비활성화, 그 외에만 drag(drop(ref)) 바인딩하는 로직이 명확합니다.

frontend/src/components/drawers/InboxDrawer.tsx (3)

13-13: type-only import로의 전환 좋습니다

빌드 트리 쉐이킹과 타입 분리를 명확히 합니다.


54-58: 파생 tasks 메모이제이션 적절

무한 스크롤 결과를 안전하게 평탄화/메모이즈합니다.


59-64: 임시 정렬 상태와 displayTasks 분리 OK

로컬 UI 반응성을 높이는 구성입니다.

@JedBeom JedBeom removed their request for review October 9, 2025 07:52
@JedBeom JedBeom requested a review from minyoy October 9, 2025 07:52
@JedBeom JedBeom assigned minyoy and unassigned JedBeom Oct 9, 2025
@JedBeom JedBeom requested a review from minyoy October 11, 2025 11:58
@minyoy minyoy merged commit a9db924 into main Oct 11, 2025
20 checks passed
@minyoy minyoy deleted the dependabot/npm_and_yarn/frontend/eslint-plugin-react-hooks-6.1.1 branch October 11, 2025 13:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update Javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants