Skip to content

refactor(desktop): replace lucide-react with react-icons/lu#314

Merged
Kitenite merged 2 commits intomainfrom
replace-lucide-with-react-icons
Dec 10, 2025
Merged

refactor(desktop): replace lucide-react with react-icons/lu#314
Kitenite merged 2 commits intomainfrom
replace-lucide-with-react-icons

Conversation

@Kitenite
Copy link
Copy Markdown
Collaborator

@Kitenite Kitenite commented Dec 10, 2025

Summary

  • Replace all lucide-react icon imports with react-icons/lu equivalents in the desktop app
  • Remove lucide-react dependency from apps/desktop/package.json
  • Update ActionCard component to use IconType from react-icons instead of LucideIcon

Test plan

  • Verify typecheck passes (bun run typecheck --filter=@superset/desktop)
  • Verify all icons render correctly in the desktop app
  • Verify no visual regressions in affected components

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Refactor
    • Migrated the app’s icon library from one provider to another, updating icons across the UI. No functional changes; visuals and behavior preserved.
  • Chores
    • Removed the old icon library dependency from the desktop app package.
  • Minor
    • Added a new "none" status option for check summaries to improve status display handling.

✏️ Tip: You can customize this high-level summary in your review settings.

Migrate all lucide-react icon imports to use react-icons/lu equivalents
to consolidate on a single icon library (react-icons). This reduces
bundle size by removing the lucide-react dependency.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented Dec 10, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
website Ready Ready Preview Comment Dec 10, 2025 9:27pm

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Dec 10, 2025

Walkthrough

The pull request removes the lucide-react dependency and replaces lucide-react icon imports/usages with react-icons/lu equivalents across the desktop app, plus a type change from LucideIcon to IconType in one component.

Changes

Cohort / File(s) Change Summary
Dependency Removal
apps/desktop/package.json
Removed lucide-react from dependencies.
StartView
apps/desktop/src/renderer/screens/main/components/StartView/ActionCard.tsx, apps/desktop/src/renderer/screens/main/components/StartView/index.tsx
Swapped lucide-react types/imports/usages to react-icons: changed LucideIconIconType and replaced icons (e.g., ChevronUpLuChevronUp, FolderOpenLuFolderOpen, FolderGitLuFolderGit, XLuX).
Workspace Hover Card & Checks
apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/WorkspaceHoverCard.tsx, .../ChecksList/ChecksList.tsx, .../CheckItemRow/CheckItemRow.tsx, .../ChecksSummary/ChecksSummary.tsx
Replaced lucide-react icon imports/usages with react-icons/lu equivalents (e.g., ExternalLinkLuExternalLink, LoaderCircleLuLoaderCircle, TriangleAlertLuTriangleAlert, ChevronDownLuChevronDown, CheckLuCheck, XLuX). Also added "none" to ChecksSummaryProps status union.
Tab Content Context Menu
apps/desktop/src/renderer/screens/main/components/WorkspaceView/ContentView/TabsContent/TabContentContextMenu.tsx
Replaced lucide-react icons with react-icons/lu equivalents (e.g., Rows2LuRows2, Columns2LuColumns2, EraserLuEraser, MoveRightLuMoveRight, PlusLuPlus, XLuX).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Verify icon name mappings and imports across the listed files.
  • Confirm IconType change in ActionCard.tsx is type-compatible.
  • Check ChecksSummaryProps addition of "none" is intended and handled.

Possibly related PRs

Poem

🐰 A hop, a swap, the icons change with cheer,
Lucide waves, react-icons appear —
Chevrons, folders, tiny Xs take flight,
Eight files tidied in the soft moonlight. ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
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.
Description check ❓ Inconclusive The description is partially complete but missing several required template sections including Related Issues, Type of Change checkbox, and Testing details beyond an unchecked test plan. Complete the description template by checking the 'Refactor' checkbox under Type of Change and providing more detail on testing steps and verification results.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The pull request title accurately summarizes the main change: replacing lucide-react with react-icons/lu in the desktop app, which aligns with all file changes shown in the changeset.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch replace-lucide-with-react-icons

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7f2005b and a6c7158.

📒 Files selected for processing (6)
  • apps/desktop/src/renderer/screens/main/components/StartView/index.tsx (4 hunks)
  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/WorkspaceHoverCard.tsx (3 hunks)
  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksList/ChecksList.tsx (2 hunks)
  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksList/components/CheckItemRow/CheckItemRow.tsx (1 hunks)
  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksSummary/ChecksSummary.tsx (2 hunks)
  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/ContentView/TabsContent/TabContentContextMenu.tsx (3 hunks)
🚧 Files skipped from review as they are similar to previous changes (5)
  • apps/desktop/src/renderer/screens/main/components/StartView/index.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksList/components/CheckItemRow/CheckItemRow.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/WorkspaceHoverCard.tsx
  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/ContentView/TabsContent/TabContentContextMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksList/ChecksList.tsx
🧰 Additional context used
📓 Path-based instructions (5)
apps/desktop/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (apps/desktop/AGENTS.md)

For Electron interprocess communication, ALWAYS use tRPC as defined in src/lib/trpc

Files:

  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksSummary/ChecksSummary.tsx
apps/desktop/**/*.{ts,tsx}

📄 CodeRabbit inference engine (apps/desktop/AGENTS.md)

apps/desktop/**/*.{ts,tsx}: Please use alias as defined in tsconfig.json when possible
Prefer zustand for state management if it makes sense. Do not use effect unless absolutely necessary

Files:

  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksSummary/ChecksSummary.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Maintain type safety and avoid using any unless absolutely necessary in TypeScript code

Files:

  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksSummary/ChecksSummary.tsx
**/components/**/[A-Z]*.tsx

📄 CodeRabbit inference engine (AGENTS.md)

Use one folder per component with structure ComponentName/ComponentName.tsx + index.ts barrel export

Files:

  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksSummary/ChecksSummary.tsx
apps/desktop/src/renderer/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Never import Node.js modules in renderer process or shared code - only in src/main/

Files:

  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksSummary/ChecksSummary.tsx
🧠 Learnings (1)
📚 Learning: 2025-12-08T23:32:32.232Z
Learnt from: CR
Repo: superset-sh/superset PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-08T23:32:32.232Z
Learning: Applies to src/components/{ui,ai-elements,react-flow}/**/*.tsx : Use kebab-case single files for shadcn/ui components in src/components/ui/, src/components/ai-elements, and src/components/react-flow/

Applied to files:

  • apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksSummary/ChecksSummary.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build
🔇 Additional comments (1)
apps/desktop/src/renderer/screens/main/components/TopBar/WorkspaceTabs/WorkspaceHoverCard/components/ChecksSummary/ChecksSummary.tsx (1)

2-29: Icon migration and status handling in ChecksSummary look correct

The lucide → react-icons/lu swap is consistent and preserves semantics: LuCheck for success, LuX for failure, and LuLoaderCircle with animate-spin for pending. The "none" status is safely short‑circuited before indexing into config, so both runtime behavior and typing remain sound, and renderer‑side imports avoid Node modules.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@Kitenite Kitenite merged commit dff5957 into main Dec 10, 2025
6 of 8 checks passed
@Kitenite Kitenite deleted the replace-lucide-with-react-icons branch December 10, 2025 21:29
@github-actions
Copy link
Copy Markdown
Contributor

🧹 Preview Cleanup Complete

The following preview resources have been cleaned up:

  • ⚠️ Neon database branch

Thank you for your contribution! 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant