Skip to content

Decouple @mui/icons-material workspace from @mui/material #48821

Description

@popuguytheparrot

Description

Currently, @mui/icons-material package has a tight dependency on the @mui/material workspace, requiring it as both a peer dependency and dev dependency. This makes it difficult to update and release icons independently from the main Material UI library.

Current State

The @mui/icons-material package only uses two exports from @mui/material:

  1. SvgIcon component (from @mui/material/SvgIcon)
  2. createSvgIcon function (from @mui/material/SvgIcon)

These are used in:

  • src/icon.d.ts - TypeScript type definitions
  • src/utils/createSvgIcon.js - Utility for creating icon components

Proposal

Extract the SvgIcon component and createSvgIcon function into a separate, minimal workspace package that @mui/icons-material can depend on. This would allow:

  • Independent versioning and release cycles for icons and core Material UI
  • Faster updates to the icons library without waiting for full Material UI releases
  • Reduced dependency coupling between packages
  • Cleaner build and development workflows

Benefits

  • Icons can be updated on a quarterly basis without blocking other Material UI changes
  • Simpler dependency tree for users who only need icons
  • More flexible release management

Alternative Approaches

  1. Move just the SvgIcon component to a separate @mui/svg-icon package
  2. Bundle SvgIcon directly within @mui/icons-material (though this may cause duplication)

Search keywords:

Metadata

Metadata

Assignees

Labels

component: IconThe React component.duplicateThis issue or pull request already exists.scope: iconsChanges related to the icons.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions