This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 3d6644864d4 build(deps): migrate to lighter and modern `react-icons`
(#38125)
3d6644864d4 is described below
commit 3d6644864d41645dd048b19fcc7f8f918d641f55
Author: Đỗ Trọng Hải <[email protected]>
AuthorDate: Sat Feb 21 07:19:01 2026 +0700
build(deps): migrate to lighter and modern `react-icons` (#38125)
Signed-off-by: hainenber <[email protected]>
---
.github/dependabot.yml | 6 ++
superset-frontend/package-lock.json | 83 ++++------------------
.../plugin-chart/templates/package-lock.erb | 18 -----
.../superset-ui-chart-controls/package.json | 1 -
.../plugin-chart-ag-grid-table/package.json | 1 -
.../plugins/plugin-chart-pivot-table/package.json | 2 +-
.../src/react-pivottable/TableRenderers.tsx | 6 +-
.../plugins/plugin-chart-table/package.json | 2 +-
.../plugins/plugin-chart-table/src/TableChart.tsx | 6 +-
9 files changed, 26 insertions(+), 99 deletions(-)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 90619df7863..a1bdbdd92e9 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -139,6 +139,9 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-pivot-table/"
+ ignore:
+ # TODO: remove below entries until React >= 19.0.0
+ - dependency-name: "react-icons"
schedule:
interval: "daily"
labels:
@@ -189,6 +192,9 @@ updates:
- package-ecosystem: "npm"
directory: "/superset-frontend/plugins/plugin-chart-table/"
+ ignore:
+ # TODO: remove below entries until React >= 19.0.0
+ - dependency-name: "react-icons"
schedule:
interval: "daily"
labels:
diff --git a/superset-frontend/package-lock.json
b/superset-frontend/package-lock.json
index 3386a8090fe..511f15e2e29 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -9846,15 +9846,6 @@
"integrity":
"sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==",
"license": "MIT"
},
- "node_modules/@react-icons/all-files": {
- "version": "4.1.0",
- "resolved":
"https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz",
- "integrity":
"sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==",
- "license": "MIT",
- "peerDependencies": {
- "react": "*"
- }
- },
"node_modules/@react-spring/animated": {
"version": "9.7.5",
"resolved":
"https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.5.tgz",
@@ -42435,6 +42426,15 @@
"react": ">=16.4.1"
}
},
+ "node_modules/react-icons": {
+ "version": "5.4.0",
+ "resolved":
"https://registry.npmjs.org/react-icons/-/react-icons-5.4.0.tgz",
+ "integrity":
"sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
"node_modules/react-intersection-observer": {
"version": "10.0.3",
"resolved":
"https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-10.0.3.tgz",
@@ -51830,7 +51830,6 @@
"license": "Apache-2.0",
"dependencies": {
"@apache-superset/core": "*",
- "@react-icons/all-files": "^4.1.0",
"@types/react": "*",
"lodash": "^4.17.23"
},
@@ -53009,63 +53008,6 @@
"url": "https://opencollective.com/unified"
}
},
- "packages/superset-ui-demo": {
- "name": "@superset-ui/demo",
- "version": "0.20.0",
- "extraneous": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@emotion/cache": "^11.14.0",
- "@emotion/react": "^11.14.0",
- "@emotion/styled": "^11.14.1",
- "@mihkeleidast/storybook-addon-source": "^1.0.1",
- "@react-icons/all-files": "^4.1.0",
- "@storybook/addon-actions": "^8.6.15",
- "@storybook/addon-controls": "^8.6.15",
- "@storybook/addon-links": "^8.6.15",
- "@storybook/react": "^8.6.15",
- "@storybook/types": "^8.6.15",
- "@types/react-loadable": "^5.5.11",
- "core-js": "3.48.0",
- "gh-pages": "^6.3.0",
- "jquery": "^4.0.0",
- "memoize-one": "^6.0.0",
- "react": "^17.0.2",
- "react-dom": "^17.0.2",
- "react-loadable": "^5.5.0",
- "react-resizable": "^3.1.3"
- },
- "devDependencies": {
- "@babel/core": "^7.29.0",
- "@babel/preset-env": "^7.29.0",
- "@babel/preset-react": "^7.28.5",
- "@babel/preset-typescript": "^7.28.5",
- "@storybook/react-webpack5": "^8.6.15",
- "babel-loader": "^10.0.0",
- "fork-ts-checker-webpack-plugin": "^9.1.0",
- "ts-loader": "^9.5.4",
- "typescript": "^5.9.3"
- },
- "peerDependencies": {
- "@apache-superset/core": "*",
- "@superset-ui/core": "*",
- "@superset-ui/legacy-plugin-chart-calendar": "*",
- "@superset-ui/legacy-plugin-chart-chord": "*",
- "@superset-ui/legacy-plugin-chart-country-map": "*",
- "@superset-ui/legacy-plugin-chart-horizon": "*",
- "@superset-ui/legacy-plugin-chart-map-box": "*",
- "@superset-ui/legacy-plugin-chart-paired-t-test": "*",
- "@superset-ui/legacy-plugin-chart-parallel-coordinates": "*",
- "@superset-ui/legacy-plugin-chart-partition": "*",
- "@superset-ui/legacy-plugin-chart-rose": "*",
- "@superset-ui/legacy-plugin-chart-world-map": "*",
- "@superset-ui/legacy-preset-chart-deckgl": "*",
- "@superset-ui/legacy-preset-chart-nvd3": "*",
- "@superset-ui/plugin-chart-echarts": "*",
- "@superset-ui/plugin-chart-table": "*",
- "@superset-ui/plugin-chart-word-cloud": "*"
- }
- },
"packages/superset-ui-switchboard": {
"name": "@superset-ui/switchboard",
"version": "0.20.3",
@@ -53451,7 +53393,6 @@
"version": "0.20.3",
"license": "Apache-2.0",
"dependencies": {
- "@react-icons/all-files": "^4.1.0",
"@types/d3-array": "^3.2.2",
"@types/react-table": "^7.7.20",
"classnames": "^2.5.1",
@@ -53606,13 +53547,13 @@
"peerDependencies": {
"@ant-design/icons": "^5.2.6",
"@apache-superset/core": "*",
- "@react-icons/all-files": "^4.1.0",
"@superset-ui/chart-controls": "*",
"@superset-ui/core": "*",
"lodash": "^4.17.11",
"prop-types": "*",
"react": "^17.0.2",
- "react-dom": "^17.0.2"
+ "react-dom": "^17.0.2",
+ "react-icons": "5.4.0"
}
},
"plugins/plugin-chart-table": {
@@ -53620,13 +53561,13 @@
"version": "0.20.3",
"license": "Apache-2.0",
"dependencies": {
- "@react-icons/all-files": "^4.1.0",
"@types/d3-array": "^3.2.2",
"@types/react-table": "^7.7.20",
"classnames": "^2.5.1",
"d3-array": "^3.2.4",
"lodash": "^4.17.23",
"memoize-one": "^5.2.1",
+ "react-icons": "5.4.0",
"react-table": "^7.8.0",
"regenerator-runtime": "^0.14.1",
"xss": "^1.0.15"
diff --git
a/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/package-lock.erb
b/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/package-lock.erb
index 56df41714ad..a4530edb141 100644
---
a/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/package-lock.erb
+++
b/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/package-lock.erb
@@ -4144,15 +4144,6 @@
"node": ">= 8"
}
},
- "node_modules/@react-icons/all-files": {
- "version": "4.1.0",
- "resolved":
"https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz",
- "integrity":
"sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==",
- "peer": true,
- "peerDependencies": {
- "react": "*"
- }
- },
"node_modules/@sinclair/typebox": {
"version": "0.27.8",
"resolved":
"https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
@@ -4186,7 +4177,6 @@
"integrity":
"sha512-zi2DJ2cTpgR1HugPX3yBHJAaBo7XYhodgZqj0BsKNMoexrLvHyPYsN+cw5xXFE1Q1ZyeKtQBB5m41+CKKfwQYw==",
"peer": true,
"dependencies": {
- "@react-icons/all-files": "^4.1.0",
"@superset-ui/core": "0.18.25",
"lodash": "^4.17.15",
"prop-types": "^15.7.2"
@@ -21330,13 +21320,6 @@
"fastq": "^1.6.0"
}
},
- "@react-icons/all-files": {
- "version": "4.1.0",
- "resolved":
"https://registry.npmjs.org/@react-icons/all-files/-/all-files-4.1.0.tgz",
- "integrity":
"sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==",
- "peer": true,
- "requires": {}
- },
"@sinclair/typebox": {
"version": "0.27.8",
"resolved":
"https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
@@ -21367,7 +21350,6 @@
"integrity":
"sha512-zi2DJ2cTpgR1HugPX3yBHJAaBo7XYhodgZqj0BsKNMoexrLvHyPYsN+cw5xXFE1Q1ZyeKtQBB5m41+CKKfwQYw==",
"peer": true,
"requires": {
- "@react-icons/all-files": "^4.1.0",
"@superset-ui/core": "0.18.25",
"lodash": "^4.17.15",
"prop-types": "^15.7.2"
diff --git a/superset-frontend/packages/superset-ui-chart-controls/package.json
b/superset-frontend/packages/superset-ui-chart-controls/package.json
index 061eba7bd4a..a9eb07107a1 100644
--- a/superset-frontend/packages/superset-ui-chart-controls/package.json
+++ b/superset-frontend/packages/superset-ui-chart-controls/package.json
@@ -25,7 +25,6 @@
],
"dependencies": {
"@apache-superset/core": "*",
- "@react-icons/all-files": "^4.1.0",
"@types/react": "*",
"lodash": "^4.17.23"
},
diff --git a/superset-frontend/plugins/plugin-chart-ag-grid-table/package.json
b/superset-frontend/plugins/plugin-chart-ag-grid-table/package.json
index 6d23f8bd241..0be899eeaba 100644
--- a/superset-frontend/plugins/plugin-chart-ag-grid-table/package.json
+++ b/superset-frontend/plugins/plugin-chart-ag-grid-table/package.json
@@ -24,7 +24,6 @@
"lib"
],
"dependencies": {
- "@react-icons/all-files": "^4.1.0",
"@types/d3-array": "^3.2.2",
"@types/react-table": "^7.7.20",
"classnames": "^2.5.1",
diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/package.json
b/superset-frontend/plugins/plugin-chart-pivot-table/package.json
index b20f5970919..15658cf9613 100644
--- a/superset-frontend/plugins/plugin-chart-pivot-table/package.json
+++ b/superset-frontend/plugins/plugin-chart-pivot-table/package.json
@@ -27,7 +27,7 @@
"access": "public"
},
"peerDependencies": {
- "@react-icons/all-files": "^4.1.0",
+ "react-icons": "5.4.0",
"@apache-superset/core": "*",
"@ant-design/icons": "^5.2.6",
"@superset-ui/chart-controls": "*",
diff --git
a/superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.tsx
b/superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.tsx
index 15d25827963..3d5f29631e0 100644
---
a/superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.tsx
+++
b/superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.tsx
@@ -21,9 +21,9 @@ import { Component, ReactNode, MouseEvent } from 'react';
import { safeHtmlSpan } from '@superset-ui/core';
import { t } from '@apache-superset/core/ui';
import PropTypes from 'prop-types';
-import { FaSort } from '@react-icons/all-files/fa/FaSort';
-import { FaSortDown as FaSortDesc } from
'@react-icons/all-files/fa/FaSortDown';
-import { FaSortUp as FaSortAsc } from '@react-icons/all-files/fa/FaSortUp';
+import { FaSort } from 'react-icons/fa';
+import { FaSortDown as FaSortDesc } from 'react-icons/fa';
+import { FaSortUp as FaSortAsc } from 'react-icons/fa';
import { PivotData, flatKey } from './utilities';
import { Styles } from './Styles';
diff --git a/superset-frontend/plugins/plugin-chart-table/package.json
b/superset-frontend/plugins/plugin-chart-table/package.json
index 27b073ec388..3d9798b6783 100644
--- a/superset-frontend/plugins/plugin-chart-table/package.json
+++ b/superset-frontend/plugins/plugin-chart-table/package.json
@@ -24,7 +24,7 @@
"lib"
],
"dependencies": {
- "@react-icons/all-files": "^4.1.0",
+ "react-icons": "5.4.0",
"@types/d3-array": "^3.2.2",
"@types/react-table": "^7.7.20",
"classnames": "^2.5.1",
diff --git a/superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx
b/superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx
index e95387049d9..d05193edbc3 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx
+++ b/superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx
@@ -35,9 +35,9 @@ import {
Row,
} from 'react-table';
import { extent as d3Extent, max as d3Max } from 'd3-array';
-import { FaSort } from '@react-icons/all-files/fa/FaSort';
-import { FaSortDown as FaSortDesc } from
'@react-icons/all-files/fa/FaSortDown';
-import { FaSortUp as FaSortAsc } from '@react-icons/all-files/fa/FaSortUp';
+import { FaSort } from 'react-icons/fa';
+import { FaSortDown as FaSortDesc } from 'react-icons/fa';
+import { FaSortUp as FaSortAsc } from 'react-icons/fa';
import cx from 'classnames';
import {
DataRecord,